大家對(duì)本博客帖子《DedeCMS多條件篩選以篩選詞為標(biāo)題》即最新版DedeCMS V5.7自定義篩選功能基本都能掌握了,接下來(lái)分享本人研究整理的一個(gè)后臺(tái)管理移動(dòng)端、PC用JS代碼匹配跳轉(zhuǎn),如果還想做成偽靜態(tài),文章有點(diǎn)長(zhǎng)就慢慢看咯。
一個(gè)后臺(tái)管理生成移動(dòng)端和PC端的靜態(tài)頁(yè)面
如果用一個(gè)后臺(tái)管理PC和移動(dòng)端,不用dede默認(rèn)的移動(dòng)端模板,參考文章《DedeCMS一個(gè)后臺(tái)管理PC和移動(dòng)端純靜態(tài)非官方版》。
動(dòng)態(tài)列表判斷當(dāng)前設(shè)備自動(dòng)跳轉(zhuǎn)
篩選列表為動(dòng)態(tài)列表,未作偽靜態(tài)前,一般路徑為:域名/plus/list.php?tid=1。移動(dòng)端的靜態(tài)頁(yè)面實(shí)際上是依靠更新時(shí)切換模板實(shí)現(xiàn)的,但對(duì)篩選的動(dòng)態(tài)列表卻不能實(shí)現(xiàn)移動(dòng)端和PC端模板的自動(dòng)選擇。經(jīng)筆者測(cè)試有效方法如下:
1.復(fù)制/plus目錄下的list.php更名為wap_list.php;
2.復(fù)制/include目錄下arc.sglistview.class.php和arc.listview.class.php并分別更名為wap_arc.sglistview.class.php和wap_arc.listview.class.php;
3.打開(kāi)wap_list.php找到
include(DEDEINC."/arc.sglistview.class.php"); $lv = new SgListView($tid,$cArr); } else { include(DEDEINC."/arc.listview.class.php");
修改為
include(DEDEINC."/wap_arc.sglistview.class.php"); $lv = new SgListView($tid,$cArr); } else { include(DEDEINC."/wap_arc.listview.class.php");
4.打開(kāi)/include/wap_arc.sglistview.class.php,v5.7版本在2015年6月更新后增加了移動(dòng)端的自適應(yīng),如果是老版本的找到相應(yīng)的位置修改就好,大概在227行,/include/wap_arc.listview.class.php,大概在266行,橙色部分為增加內(nèi)容:"/pc/"和"/wap/"為/templates目錄下的模板路徑,根據(jù)實(shí)際情況填寫(xiě)
//初始化列表模板,并統(tǒng)計(jì)頁(yè)面總數(shù)
$tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$this->TypeLink->TypeInfos['templist'];
$tempfile = str_replace("{tid}",$this->TypeID,$tempfile);
$tempfile = str_replace("{cid}",$this->ChannelUnit->ChannelInfos['nid'],$tempfile);
//增加wap
$tempfile = str_replace("/pc/","/wap/",$tempfile)
if(!file_exists($tempfile))
{
$tempfile = str_replace("/wap/","/pc/",$tempfile);
}
//增加wap
5.用《DedeCMS一個(gè)后臺(tái)管理PC和移動(dòng)端純靜態(tài)非官方版》的方法需要PC和移動(dòng)端模板下的各個(gè)頻道所使用的模板名稱完全一樣。
6.跳轉(zhuǎn)代碼很多種,文章《DedeCMS電腦端列表和內(nèi)容跳轉(zhuǎn)到對(duì)應(yīng)移動(dòng)端》是靜態(tài)列表,下面是動(dòng)態(tài)列表的方法。
在系統(tǒng)-系統(tǒng)基本參數(shù)-添加新變量:變量名為stylewap,變量值為wap,參數(shù)說(shuō)明為移動(dòng)端模板,把以下代碼放到相應(yīng)的列表模板即可:
<meta http-equiv="mobile-agent" content="format=xhtml;url={dede:global.stylewap/}/plus/wap_list.php?tid={dede:field.id/}"> <script type="text/javascript">if(window.location.toString().indexOf('pref=padindex') != -1){}else{if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){if(window.location.href.indexOf("?mobile")<0){try{if(/Android|Windows Phone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="{dede:global.stylewap/}/plus/wap_list.php?tid={dede:field.id/}";}else if(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}</script>
DedeCMS篩選偽靜態(tài)規(guī)則請(qǐng)看下一頁(yè)。
DedeCMS篩選列表偽靜態(tài)規(guī)則
DedeCMS篩選列表偽靜態(tài)規(guī)則詳細(xì)可參考文章《DedeCMS織夢(mèng)程序?qū)崿F(xiàn)全站php偽靜態(tài)》;建立.htaccess文件創(chuàng)建方法參考《調(diào)試.htaccess網(wǎng)站出現(xiàn)500錯(cuò)誤》,常見(jiàn)的偽靜態(tài)規(guī)則寫(xiě)法。
RewriteEngine on RewriteRule ^list-([0-9]+)\.html$ /plus/list.php?tid=$1 RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 RewriteRule ^view-([0-9]+)-1\.html$ /plus/view.php?arcID=$1 RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2 RewriteRule ^index.html$ index.php
由于原來(lái)DedeCMS多條件篩選編寫(xiě)者并沒(méi)有給出對(duì)應(yīng)的偽靜態(tài)規(guī)則,如果按照上訴的偽靜態(tài)規(guī)則
/plus/list.php?tid=1 url重寫(xiě)為 /list-1.html
則該列表頁(yè)下的篩選url如下,這明顯是不正確的
/list-1.html&zxfg=%a%b%c
筆者嘗試用str_replace函數(shù)調(diào)整為
/list-1&zxfg=%a%b%c.html
能正常篩選,但有輕微bug,不影響使用。
現(xiàn)在筆者給出dede篩選列表專有.htaccess偽靜態(tài)規(guī)則
RewriteEngine on RewriteRule ^list-(.*)$ /plus/list.php?tid=$1
url重寫(xiě)就不含有“.html”,最終樣式
/plus/list.php?tid=1重寫(xiě)為 /list-1
打開(kāi)/include/helpers/channelunit.help.php,找到
//動(dòng)態(tài) $reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;
修改為
//動(dòng)態(tài) $reurl = "/list-".$typeid;
其他兩個(gè)文件修改參考文章《DedeCMS多條件篩選以篩選詞為標(biāo)題》,篩選url偽靜態(tài)/include/extend.func.php文件需要調(diào)整,找到
$filterarr = wwwcms_filter(stripos($_SERVER['REQUEST_URI'], "list.php?tid=") ? str_replace($nofilter, '', $_SERVER['REQUEST_URI']) : $GLOBALS['cfg_cmsurl']."/plus/list.php?tid=".$tid);
修改為
$filterarr = wwwcms_filter(stripos($_SERVER['REQUEST_URI'], "list-") ? str_replace($nofilter, '', $_SERVER['REQUEST_URI']) : $GLOBALS['cfg_cmsurl']."/list-".$tid);