用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/

 

以上的兩大內容就是我在做項目的時候遇到過的新的問題,現在已經都解決了,所以分享一下過程,需要的同志們可以查看一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM