織夢5.7版本“內容模型管理”自帶有分類信息模板,今天修改了其“信息類型”的聯動類別,在“核心”->"頻道模型"->"聯動類別 管理",修改了信息類別,但是發現修改完了后,“更新所有枚舉緩存”、“系統緩存“、”更新欄目HTML“,這些全部更新后,發現列表頁調用的地方還是沒 有更新,還是保持原來修改前的信息類型。
解決方案:
我們修改的聯動類別的”緩存組名“是叫"infotype",打開 data/enums目錄,找到infotype.php文件和“infotype.js”,這兩個就是前臺調用的聯動類型,全是有系統自動生成。點擊打 開,發現infotype.php 已經更新為最新的,但是infotype.js 還是保持為原來的老的信息,這可能也是織夢的一個小BUG,就是再更新的時候只更新了php腳本,而沒有去更新js腳本,我們可以復制 infotype.php中的內容到infotype.js中,并按照js規則重寫,然后更新下”系統緩存“和”更新列表HTML“,發現前臺已經更新為 最新的聯動信息。
對于infotype.php、infotype.js這兩個文件,在多次測試織夢聯動類別之后發現一些規律(時而會發生,不是每次發生):
1、新建的聯動,在第一次更新時會同時更新
2、在對已有的聯動進行修改后,更新時,只更新infotype.php
3、在對已有聯動進行添加多級聯動時,比如對一級聯動添加為二級或者三級時,系統會對infotype.php、infotype.js同時更新。
解決*.js聯動不更新的問題,的方法如下:
文件\include\enums.func.php
查找 if(empty($issign)) WriteEnumsJs($egroup);
替換為
//if(empty($issign)) WriteEnumsJs($egroup);
//修復更新緩存不更聯動js 這里的empty $issign 為空的時候才更新js ,但是根據代碼,$issign 不可能為空,無法理解。
WriteEnumsJs($egroup);