過一系列關于移動適配的培訓與文章分享,大部分站長同學已經了解移動適配原理和方法,并開始積極的使用適配工具!但調研發現,部分站長在使用移動化適配工具仍有些困擾,特別是中小型站長,缺乏實際的案例指導。
考慮到中小型網站中Dedecms使用概率較高,今天我們特地邀請了百度站長社區版主—洪石陳來為大家做Dedecms移動適配分享。
第一步:安裝Dedecms移動站點的兩種方式
(1)下載新版本直接安裝使用,Dedecms版本:V5.7SP1正式版(2015-06-18)該版本包含舊版本所沒有的移動站點功能。
(2)老版本升級(僅針對增加移動站點功能),下載最新版本(注意網站編碼需與原站一致),復制壓縮包中以下文件到原站對應目錄下:
注意:如果原站有非默認模板,如某欄目模板為/templets/defaultst_default_news.htm,可將/templets/defaultst_default_m.htm復制一份改名為list_default_news_m.htm。
即:pc端網站模板需有對應的移動端網站模板,后者文件名為前者文件名后“_m”。
安裝或升級dedecms完成,此時應該就可以進行移動跳轉適配了,但,dedecms20150618版本提供的移動站點功能在使用過程中發現一些問題,需要進行修改后才可正常使用,所以有了下面的dedecms修改步驟…
第二步:修改Dedecms
(1)原站如做了將DATA移到根目錄外的安全設置,需修改/m/index.php代碼:
if(!file_exists(dirname(__FILE__).'/../data/common.inc.php'))
{
header('Location:install/index.php');
exit();
}
將其中/../data/common.inc.php改為/../../data/common.inc.php,或直接將以上5行代碼刪除。
(2) 移動站點首頁在會第一次訪問時自動生成首頁靜態文件,前提是/m/目錄需設置為可寫權限,否則將無法正常更新。之后更新首頁靜態文件需登陸后臺手動更新:在“更新主頁HTML”中將“選擇主頁模板”改為“default/index_m.htm”,將“主頁位置”改為“../m/index.html”,再生成主頁靜態文件。
注:該版本號稱“自動生成HTML版”,但默認移動站模板里卻有<ahref="index.php">的動態首頁鏈接,需替換為<ahref="index.html">靜態鏈接形式。
※如覺得使用靜態頁面麻煩,想將首頁設置為動態瀏覽,可修改/m/index.php:
$row['showmod']=isset($row['showmod'])? $row['showmod'] : 0;
if ($row['showmod']==1)
{
$pv->SaveToHtml(dirname(__FILE__).'/index.html');
include(dirname(__FILE__).'/index.html');
exit();
}
else {
$pv->Display();
exit();
}
以上代碼替換為一行:$pv->Display();
第三步:首頁“圖文資訊”部分的url為pc端鏈接,修改為移動端鏈接:
搜索模板/templets/default/index_m.htm中所有<a href="[field:arcurl/]"> ,替換為<ahref="view.php?aid=[field:id/]">
第四步:通用頭部含有搜索框,搜索跳轉至pc端搜索頁面,建議刪除:
在/templets/default/header_m.htm中刪除以下代碼:
<form class="am-topbar-form am-topbar-leftam-form-inline am-topbar-right" role="search"action="{dede:global.cfg_cmsurl/}/plus/search.php">
<input type="hidden" name="mobile"value="1" />
<input type="hidden" name="kwtype"value="0" />
<div class="am-form-group">
<input name="q" type="text"class="am-form-field am-input-sm" placeholder="輸入關鍵詞">
</div>
<button type="submit" class="am-btnam-btn-default am-btn-sm">搜索</button>
</form>
第五步: 移動站點默認使用二級目錄,但目前移動適配需要使用二級域名(前段時間是可以使用二級目錄的,但目前已調整,不能再提交二級目錄),所以我們要設置移動站可通過二級域名訪問,解析二級域名至網站所在服務器ip,并在服務器/空間上將二級域名綁定到/m/目錄。
成功設置二級域名后,通過二級域名瀏覽網站會發現圖片均無法顯示,原因是圖片路徑有誤——圖片路徑為“/uploads/x/y.jpg”
相對根目錄路徑形式,在pc站頁面中顯示正常,因為pc站域名下存在該目錄,而二級域名綁定的是二級目錄,其中并不存在該目錄,
所以訪問圖片會返回 404錯誤。對此,有多種解決方案,下面提供兩個思路(示例pc站:www.nt090.com;移動站:m.nt090.com):
(1)URL 重寫(推薦)
將對http://m.nt090.com/uploads/的訪問重寫 至http://www.nt090.com/uploads/,apache環境下,在/m/目錄中的.htaccess(如無則需新建)中增加以下代碼即可:
RewriteEngine on
RewriteCond %{http_host} ^m.nt090.com [NC]
RewriteRule ^uploads/(.*)$ http://www.nt090.com/uploads/ [L]
iis環境下類似規則。
(2)修改模板路徑
在所有移動端模板中的<head></head>中增加:
<base />
再將代碼中的
“<a href="list.php”改為完整路徑“<a href="http://m.nt090.com/list.php”
“<a href="viewphp”改為完整路徑“<a href="http://m.nt090.com/view.php”
另:需將根目錄下的/images/defaultpic.gif(縮略圖默認圖片)復制到/m/目錄下,否則列表頁中如存在無縮略圖的文章,對應縮略圖位置會無法正常顯示圖片。
其他:
1、如有欄目不想在首頁下方列表區域或通用頭部顯示,可在后臺對應的欄目管理/常規選項中設置隱藏。
2、為了更好的實現pc端和移動端匹配效果,可在pc端模板增加類似如下代碼:
首頁
<meta http-equiv="mobile-agent"content="format=xhtml;url={dede:global.cfg_mobileurl/}/">
<scripttype="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|WindowsPhone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="{dede:global.cfg_mobileurl/}/";}elseif(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}
</script>
欄目頁
<metahttp-equiv="mobile-agent"content="format=xhtml;url={dede:global.cfg_mobileurl/}/list.php?tid={dede:field.id/}">
<scripttype="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|WindowsPhone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="{dede:global.cfg_mobileurl/}/list.php?tid={dede:field.id/}";}elseif(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}
</script>
文章頁
<meta http-equiv="mobile-agent"content="format=xhtml;url={dede:global.cfg_mobileurl/}/view.php?aid={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|WindowsPhone|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)){window.location.href="{dede:global.cfg_mobileurl/}/view.php?aid={dede:field.id/}";}elseif(/iPad/i.test(navigator.userAgent)){}else{}}catch(e){}}}}
</script>
代碼中的{dede:global.cfg_mobileurl/}部分要替換為包含“http://”的二級域名(即:http://m.nt090.com),如不想修改模板里的相關代碼,也可修改/include/common.inc.php中的$cfg_mobileurl變量賦值為二級域名。
以上代碼為dedecms新版模板所使用,第一行<meta>標簽代碼為百度發現跳轉適配關系的方式(可同時使用)之一——“Meta標記”,下面幾行javascript代碼的功能是識別是否移動端設備訪問,如是則將當前pc端頁面自動跳轉到匹配的移動端頁面。
另外,還可使用<link>標簽以便于百度更好地發現PC站和移動站的移動適配關系,在模板的<head></head>標簽內加入如下代碼:
PC站首頁模板:
<link rel="alternate" media="only screen and(max-width: 640px)" >
PC站欄目頁模板:
<link rel="alternate" media="only screen and(max-width: 640px)" >
PC站文章頁模板:
<link rel="alternate" media="only screen and(max-width: 640px)" href=" http://m.nt090.com/view.php?aid={dede:field.id/}">
移動站首頁模板:
<link rel="canonical"/>
欄目頁模板:
<link rel="canonical"href="http://www.nt090.com{dede:type typeid='0' row=1}[field:typelink/]{/dede:type}"/>
文章頁模板:
<link rel="canonical"/>
至此,移動站架設基本成型。
提交移動跳轉適配
URL對應關系示例:
適配方式:
欄目頁的對應關系沒有規律,且數量較少,使用URL適配 ;文章頁為有規律的網址,且數量多,使用規則適配。
提交文章頁規則適配(如圖):
提交首頁和欄目頁URL適配(如圖):
對于欄目較多的Dedecms網站,人工列出所有的欄目頁URL對顯然很費事,這里推薦一個方法可以輕松解決該問題:
※在模板中嵌入以下代碼,對應前臺頁面中即可顯示所有欄目的URL對,復制粘貼即可:
{dede:channelartlist row=100 typeid='top'}
http://www.nt090.com{dede:field name='typeurl'/}http://m.nt090.com/list.php?tid={dede:field name='id'/}<br>
{dede:channel type='son' noself='true'}
http://www.nt090.com[field:typelink/]http://m.nt090.com/list.php?tid=[field:id/]<br>
{/dede:channel}
{/dede:channelartlist}
※提交完規則適配,等待百度審核。
如果所提交的適配關系有誤,處理狀態將很快會出現“校驗失敗”的提示。
很長一段時間以來,很多站長應該都發現移動適配“校驗中”時間很長,對于此問題,目前官方已做了改進,校驗效率有了明顯提升,以前所提交的適配關系發現正在陸續通過。
以下為很早前提交、近期已通過適配的一個網站示例:
本文方案基于Dedecms尚未成熟的移動站功能,雖較為簡單易用,但美中不足的是目前移動站URL僅能使用動態地址,如需使用靜態地址需要通過設置偽靜態來實現,或者等待Dedecms發布下一個較為成熟的版本,再或者直接對Dedecms進行二次開發實現移動站的靜態頁面生成功能,對于此類操作本文就不再延伸……
夢網站源碼,對于織夢建站者來說,想要對織夢內核源碼就行修改,首先要了解下織夢的基本構造和基本的HTML、CSS知識,在這里先來了解下織夢的基本知識。關于dedecms模板,我們要了解一下它的幾個基本定義。Dedecms主題模板一般包含的:主頁模板、內頁模板(封面、列表、文章頁)、功能模板(地圖、rss、搜索)等等,此外用戶也可以自定義一個模板創建為任意文件,這些單元組成一個完整的dede主題模板,也可以理解這些是dede模板構成的基本元素。
織夢網站源碼的網站根目錄/templets/樣式名稱(dedecms自帶默認模版主題default,其中system為系統底層模板,plus為插件使用的模板)。關于織夢網站源碼模板介紹:index.htm:主頁模板,index_識別ID.htm:表示板塊(欄目封面)模板;list_識別ID.htm:表示欄目列表模板;article_識別ID.htm:表示內容查看頁(文檔模板,包括專題查看頁);search.htm:搜索結果列表模板。
織夢網站源碼的底層模板:關于dedecms的底層模板的一些應用和定義。底層模板存儲在根目錄…public_html/templets/system。在沒有指定標記的默認底層模板的時候,系統將自動調用這個文件夾的相應文件作為底層模板??棄艟W站源碼插件目錄模板位置:網站根目錄/templets/plus評論、友情鏈接、RSS地圖等模板。如果網站想修改會員登錄界面的樣式,站長可以去修改dedecms的目錄模塊。位置:網站根目錄/member/templets。
織夢網站源碼采用XML名字空間風格核心模板:模板全部使用文件形式保存,對用戶設計模板、網站升級轉移均提供很大的便利,健壯的模板標簽為站長DIY 自己的網站提供了強有力的支持。高效率標簽緩存機制:允許對類同的標簽進行緩存,在生成 HTML的時候,有利于提高系統反應速度,降低系統消耗的資源。
織夢網站源碼模型與模塊概念并存:在模型不能滿足用戶所有需求的情況下,織夢網站源碼推出一些互動的模塊對系統進行補充,盡量滿足用戶的需求。眾多的應用支持:為用戶提供了各類網站建設的一體化解決方案,在本版本中,增加了分類、書庫、黃頁、圈子、問答等模塊,補充一些用戶的特殊要求。織夢網站源碼為織夢CMS的發展提供堅實的基礎,織夢網站源碼將會具有更大的靈活性和穩定的性能。
織夢網站源碼有帶用戶系統,站長素材下載類網站源碼,織夢模板源碼下載,非常大氣的站長素材織夢網站源碼。該模板代碼干凈整潔;效果相當的炫酷,相當簡潔大氣高端,模板簡單,全部已數據調用,只需后臺修改欄目名稱即可。織夢網站源碼適用于素材下載網站、站長資源;網站手工DIV+CSS,代碼精簡,首頁排版整潔大方、布局合理、利于SEO、圖文并茂、靜態HTML;首頁和全局重新做了全面優化,方便站長可以無縫使用。
原網站建設詳解織夢dedecms tag設置id.html設置教程
1、在網站根目錄下的tags.php中18行找到:
if(isset($tags[2])) $PageNo=intval($tags[2]);
在其下方加入代碼:
$tagid=intval($tag);
if(!empty($tagid))
{
$row=$dsql->GetOne("SELECT tag FROM `#@__tagindex` WHERE id={$tagid}");
if(!is_array($row))
{
ShowMsg("系統無此標簽,可能已經移除!","-1");exit();
}
else
{
$tag=$row['tag'];
define('DEDERETAG', 'Y');
}
}
else
{
$tag='';
}
如圖
2、/include/taglib/tag.lib.php 87行找到:
$row['link']=$cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";
將其替換成:
$row['link']=$cfg_cmsurl."/tags/".$row['id'].".html";
3、/include/arc.taglist.class.php 458行找到:
$purl .="?/".urlencode($this->Tag);
將其替換成:
if(!defined('DEDERETAG'))
{
$purl .="?/".urlencode($this->Tag);
}
繼續找到:
return $plist;
在其上方加入代碼:
if(defined('DEDERETAG'))
{
$plist=preg_replace('/_(\d+).html/i','.html',$plist);
$plist=preg_replace('/.html\/(\d+)\//i','_\1.html',$plist);
$plist=str_replace('_1','',$plist);
}
4、tag 標簽偽靜態規則,請根據自己所使用的服務器環境選擇對應的規則.
.htaccess (Apache)
RewriteEngine On
RewriteBase /
RewriteRule ^tags\.html$ tags\.php
RewriteRule ^tags/([0-9]+)\.html$ tags\.php\?\/ [L]
RewriteRule ^tags/([0-9]+)\.html$ tags\.php\?\/\/
RewriteRule ^tags/([0-9]+)_([0-9]+)\.html$ tags\.php\?\/\/
RewriteRule ^tags/([0-9]+)_([0-9]+)\.html$ tags\.php\?\/\/\/
Nginx
rewrite ^/tags\.html$ /tags.php;
rewrite ^/tags/([0-9]+)\.html$ /tags.php?\/;
rewrite ^/tags/([0-9]+)\.html$ /tags.php?\/\/;
rewrite ^/tags/([0-9]+)_([0-9]+)\.html$ /tags.php?\/\/;
rewrite ^/tags/([0-9]+)_([0-9]+)\.html$ /tags.php?\/\/\/;
web.config (iis7 iis8)
5、后臺TAG標簽管理里的TAG鏈接修改為偽靜態(非必需,根據需要修改)
在/dede/templets/tags_main.htm文件89行找到:
{dede:field.tag /}
將其替換為:
{dede:field.tag /}
注:以上默認為PC站tag標簽偽靜態,將tag標簽的URL鏈接修改id.html的方法,如果你的網站有移動端且使用的是動態頁面,那么你還需將移動端tag標簽的鏈接偽靜態,獨立移動端方法一樣修改對應文件即可。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。