用phpcms切換中英文網頁的方法(不用解析二級域名)、phpcms完成pc和手機端切換(同一域名)
AA。phpcms進行雙語切換方法(不用解析二級域名)
phpcms進行兩種語言的切換,有一把部分的人都是進行的二級域名的解析,這樣的話可能會有一部分的麻煩,我這裏有一種方法可以不用解析二級域名就可以,不過因為是模板所以可能麻煩一點,不過真的是不接觸不知道,接觸到沒有用到的東西就可以進行進一步的學習。作者:悅悅 博客地址:http://www.cnblogs.com/nuanai/
這裏我使用的方法是進行一級欄目的讀取,通過不同的一級欄目進行不同的內容調取。只要修改一級欄目的id就可以了,這就需要用到不同的id,因此就進行了頭部文件的修改,其它的列表頁或是內容頁的東西不用進行修改。但是怎麽判斷當前頁面我應該調取那個語言的一級欄目的id呢?這就是我需要考慮的問題,不過這個問題已經解決了,看下我是怎麽解決的吧。下面就是進行phpcms的步驟,因為phpcms的安裝步驟一直到添加內容、更換模板風格等在之前的博客中都有寫到,這裏就不多說了,直接從怎麽替換語言來說。作者:悅悅 博客地址:http://www.cnblogs.com/nuanai/
一、兩種語言模板的替換(中文---英文)默認首頁假如是中文
1.模板結構功能如果一樣,直接在你的content文件夾中復制一模一樣的默認文件出來(包括所有的文件)
2.修改文件的名字,要和默認中文的文件名字區分開,好進行中英文的模板切換
3.找到你的中文模板的頭文件,我這裏是header.html文件,打開頭文件,進行如下修改
(1)找到你要進行切換語言的位置,修改你的語言切換的指向路徑是一個php的處理文件
<!--找到你要進行雙語切換的地方,這裏是進行英文版的切換--> <a href="qhe.php">English</a>
註意:這裏指向的php文件是要放到“phpcmswm\install_package”文件夾下的,不然在走這個php文件的時候會出錯
(2)進行編寫這個php處理文件
<?php //開啟緩存 session_start(); //給一個默認的值,這裏是英文語言的默認值,默認值你們可以自己定義 $_SESSION[‘qhz‘] = 1; //跳轉到自己的phpcms的首頁,使用的是window.location.href = ‘自己的phpcms的主頁路徑‘ echo "<script type=‘text/javascript‘>window.location.href = ‘/phpcmswm/install_package/‘</script>" ?>
(3)編寫結束php處理文件之後,對默認的首頁跳轉的處理文件進行修改
首先,找到這個路徑下的index.php文件並打開,文件的路徑是: phpcmswm\install_package\phpcms\modules\content\index.php
其次,A.在index.php文件中開啟緩存
//開啟緩存 session_start();
B.找到文件中的這句話,大約在31行
include template(‘content‘,‘index‘,$default_style);
替換成如下這樣,這是進行判讀
//判斷傳過來的session的值是不是空的,是的話就跳默認中文主頁,不是就跳英文主頁 if(empty($_SESSION["qhz"])) { include template(‘content‘,‘index‘,$default_style); } else { //這是英文版的主頁,我的英文版主頁的名字是index1 include template(‘content‘,‘index1‘,$default_style); }
到這裏關於中文版的頭部文件修改就結束了。
4.中文頭部文件結束了,然後是英文的頭部文件了(同上面的第3步驟)
註意:不同的地方是你的英文的php處理文件,不要指向同一個處理文件,所以要進行新的處理文件的編寫,除了文件名和傳值不一樣外,其他的其實都是一樣的。
(1)中文的頭部文件
<!--切換中文的指向文件--> <a href="qhz.php">中文</a>
(2)php處理的頁面
<?php session_start(); $_SESSION[‘qhz‘] = 0; //傳的中文狀態下的值 echo "<script type=‘text/javascript‘>window.location.href = ‘/phpcmswm/install_package/‘</script>" ?>
(3)phpcmswm\install_package\phpcms\modules\content\index.php這個index.php文件是不需要修改的,因為裏面的判斷已經寫了空的時候就是默認的中文界面,值是空的其實和0是一樣的,所以不用進行別的修改。
這樣中文和英文的模板需要修改的地方就寫完了。
二、phpcms後臺的修改部分
1.默認的模板不用進行修改,需要修改的是英文狀態下的模板,這裏你就需要進行一級欄目的添加
(1)選擇“內容”標簽,單擊“添加欄目”,進行信息的添加
(2)進行到“模板設置”的欄目的時候,選擇“可用風格”---“是站點管理中的風格名字”這個是不用變得;“欄目首頁模板”---“是你的英文的首頁模板”;“列表頁、內容頁”----“都是對應的英文的模板文件”
(3)進行“提交”就可以了
2.進行英文欄目下的菜單欄目的添加,正常的添加菜單欄目就可以了
3.其他的內容頁、列表頁都是正常的添加內容就可以了
到這裏,後臺的修改就結束了
三、整體看效果就可以了
以上就是進行雙語的切換步驟,修改的只有中英文的頭部文件和傳值的處理頁面,需要後臺添加的就是你的英文欄目,其它的東西就是全靠傳的id值進行內容切換就可以了,因為功能都是樣的,所以直接復制了默認模板的所有文件就可以了。
作者:悅悅 博客地址:http://www.cnblogs.com/nuanai/
BB。 phpcms完成pc和手機端切換(同一域名)作者:悅悅 博客地址:http://www.cnblogs.com/nuanai/
一、手機端文件的創建和修改
1.在這個文件路徑下新建一個手機端網頁文件
phpcmswm\install_package\phpcms\templates\wm 這路徑就是後臺的“站點管理”中的模板風格文件,在這個模板風格文件下創建一個文件夾,我這裏叫做content_m,這個文件夾就是用來做手機網站的
2.將你的手機網頁的文件復制到這個content_m文件夾下,進行拆分成phpcms使用的分類文件就可以了(正常的網頁文件拆分:頭部、尾部、中心等),然後修改文件中的各個文件路徑就可以了,這裏不多說,路徑修改什麽的都在前面的博客中詳細講解過了。
二、修改首頁跳轉的處理文件
1.找到這個index.php文件,就是首頁跳轉的處理文件 路徑:phpcmswm\install_package\phpcms\modules\content\index.php
2.將判斷設備的代碼復制到index的類方法裏(類名大約是第8行),判斷設備的代碼如下:
//判斷是不是手機端 function isMobile() { // 如果有HTTP_X_WAP_PROFILE則一定是移動設備 if (isset ($_SERVER[‘HTTP_X_WAP_PROFILE‘])) { return true; } // 如果via信息含有wap則一定是移動設備,部分服務商會屏蔽該信息 if (isset ($_SERVER[‘HTTP_VIA‘])) { // 找不到為flase,否則為true return stristr($_SERVER[‘HTTP_VIA‘], "wap") ? true : false; } // 腦殘法,判斷手機發送的客戶端標誌,兼容性有待提高 if (isset ($_SERVER[‘HTTP_USER_AGENT‘])) { $clientkeywords = array (‘nokia‘, ‘sony‘, ‘ericsson‘, ‘mot‘, ‘samsung‘, ‘htc‘, ‘sgh‘, ‘lg‘, ‘sharp‘, ‘sie-‘, ‘philips‘, ‘panasonic‘, ‘alcatel‘, ‘lenovo‘, ‘iphone‘, ‘ipod‘, ‘blackberry‘, ‘meizu‘, ‘android‘, ‘netfront‘, ‘symbian‘, ‘ucweb‘, ‘windowsce‘, ‘palm‘, ‘operamini‘, ‘operamobi‘, ‘openwave‘, ‘nexusone‘, ‘cldc‘, ‘midp‘, ‘wap‘, ‘mobile‘ ); // 從HTTP_USER_AGENT中查找手機瀏覽器的關鍵字 if (preg_match("/(" . implode(‘|‘, $clientkeywords) . ")/i", strtolower($_SERVER[‘HTTP_USER_AGENT‘]))) { return true; } } // 協議法,因為有可能不準確,放到最後判斷 if (isset ($_SERVER[‘HTTP_ACCEPT‘])) { // 如果只支持wml並且不支持html那一定是移動設備 // 如果支持wml和html但是wml在html之前則是移動設備 if ((strpos($_SERVER[‘HTTP_ACCEPT‘], ‘vnd.wap.wml‘) !== false) && (strpos($_SERVER[‘HTTP_ACCEPT‘], ‘text/html‘) === false || (strpos($_SERVER[‘HTTP_ACCEPT‘], ‘vnd.wap.wml‘) < strpos($_SERVER[‘HTTP_ACCEPT‘], ‘text/html‘)))) { return true; } } return false;
3.找到本處理文件中的這句代碼(處理文件的所有這句代碼都要替換)
include template(‘content‘,$template);
替換成如下代碼:
if($this->isMobile()) { //第一個參數是你要跳轉的手機網頁文件夾名 include template(‘content_m‘,$template); } else { include template(‘content‘,$template); }
4.找到處理文件中的這句代碼
include template(‘content‘,‘index‘,$default_style);
替換成如下代碼:
if($this->isMobile()) { //這是手機端的網頁 include template(‘content_m‘,‘index‘,$default_style); } else { include template(‘content‘,‘index‘,$default_style); }
到這裏就是PC和手機的切換步驟基本結束了,你可以通過火狐瀏覽器的手機模擬器來查看是不是可以修改了。作者:悅悅 博客地址:http://www.cnblogs.com/nuanai/
以上的兩大內容就是我在做項目的時候遇到過的新的問題,現在已經都解決了,所以分享一下過程,需要的同誌們可以查看一下。
作者:悅悅 博客地址:http://www.cnblogs.com/nuanai/
用phpcms切換中英文網頁的方法(不用解析二級域名)、phpcms完成pc和手機端切換(同一域名)