定型管 電子鈑金
返回列表 回復 發帖

帖子標題:[分享] ecshop全站自定義tittle標題的方法

對於SEO來說,能讓標題自定義的將會大大增加SEO效果,提高獨立商城的流量,大家都知道ecshop默認是沒有全站自定義tittle功能的,今天 我們最模板(www.zuimoban.com)就收集從網上弄來ecshop全站自定義代碼,很全哦!
1、Ecshop商品分類頁如何實現自定義Tittle
最近發現很多人都在尋求“如何自定義ECSHOP商品分類頁(列表頁)TITLE”的修改方法。下面提供一種二次開發教程。
第1步、
修改 ecs_category 數據表的結構,新加一個字段


進入 後臺 》數據庫管理》SQL查詢,執行下面SQL語句


ALTER TABLE `ecs_category` ADD `cat_title` VARCHAR( 255 ) NOT NULL AFTER `cat_desc` ;
第2步、


打開後臺模板文件 admin/templates/category_info.htm (最好使用EDITPLUS打開)
找到下面代碼
<tr>
        <td class="label">{$lang.keywords}:</td>
        <td><input type="text" name="keywords" value='{$cat_info.keywords}' size="50">
        </td>
      </tr>


在它上面增加
<tr>
        <td class="label">自定義TITLE:</td>
        <td>
         <input type="text" name="cat_title" value='{$cat_info.cat_title}' size="50">
        </td>
      </tr>

第3步、
繼續打開文件 admin/category.php


查找下面代碼
$cat['cat_desc']     = !empty($_POST['cat_desc'])     ? $_POST['cat_desc']           : '';


總共能找到兩處,在每處的後邊添加代碼
$cat['cat_title']     = !empty($_POST['cat_title'])     ? $_POST['cat_title']           : '';
第4步、


下面來修改前臺程序文件 /category.php


找到
return $GLOBALS['db']->getRow('SELECT cat_name, keywords, cat_desc, style, grade, filter_attr, parent_id FROM ' . $GLOBALS['ecs']->table('category') .


將之修改為
return $GLOBALS['db']->getRow('SELECT cat_name, cat_title, keywords, cat_desc, style, grade, filter_attr, parent_id FROM ' . $GLOBALS['ecs']->table('category') .
第5步、
繼續找到


$smarty->assign('page_title',       $position['title']);


將之修改為
$smarty->assign(‘page_title’, $cat['cat_title'] ? $cat['cat_title'] : $position['title']);
有自定義內容則顯示自定義內容。沒有則顯示默認的。
使用方法:進入 後臺 》商品管理 》商品分類,編輯某個分類即可。
2、Ecshop文章分類列表頁如何自定義Title
關於“商品列表頁、商品詳情頁如何自定義TITLE”的文章教程都有了,唯獨沒有講解“文章分類列表頁如何自定義TITLE”的。
下面以 ecshop2.7.2 版本官方默認模板為基礎進行一下講解。
1)、首先我們來修改數據庫結構,給數據表 ecs_article_cat  增加一個字段 “page_title”
進入ECSHOP後臺 》數據庫管理 》SQL查詢,輸入下面SQL語句,並提交。這裏要註意數據表前綴,我這裏使用的是默認前綴。
ALTER TABLE `ecs_article_cat` ADD `page_title` VARCHAR( 255 ) NOT NULL
2)、修改後臺模板和程序
打開  /admin/templates/articlecat_info.htm 找到
<tr>
    <td class="label">{$lang.sort_order}:</td>


在它前面增加如下的代碼段


<tr>
    <td class="label">自定義TITLE:</td> <td>
      <input type="text" name="page_title" value="{$cat.page_title|escape}" size="50" />
    </td>
  </tr>




接著打開 /admin/articlecat.php

$sql = "INSERT INTO ".$ecs->table('article_cat')."(cat_name, cat_type, cat_desc,keywords, parent_id, sort_order, show_in_nav)
           VALUES ('$_POST[cat_name]', '$cat_type',  '$_POST[cat_desc]','$_POST[keywords]', '$_POST[parent_id]', '$_POST[sort_order]', '$_POST[show_in_nav]')";


修改為
$sql = "INSERT INTO ".$ecs->table('article_cat')."(cat_name, cat_type, cat_desc,keywords, parent_id, sort_order, show_in_nav,page_title)
           VALUES ('$_POST[cat_name]', '$cat_type',  '$_POST[cat_desc]','$_POST[keywords]', '$_POST[parent_id]', '$_POST[sort_order]', '$_POST[show_in_nav]','$POST[page_title]')";


繼續,將

$sql = "SELECT cat_id, cat_name, cat_type, cat_desc, show_in_nav, keywords, parent_id,sort_order FROM ".
           $ecs->table('article_cat'). " WHERE cat_id='$_REQUEST[id]'";


修改為
$sql = "SELECT cat_id, cat_name, cat_type, cat_desc, show_in_nav, keywords, parent_id,sort_order,page_title FROM ".
           $ecs->table('article_cat'). " WHERE cat_id='$_REQUEST[id]'";


繼續向下將
if ($exc->edit("cat_name = '$_POST[cat_name]', cat_desc ='$_POST[cat_desc]', keywords='$_POST[keywords]',parent_id = '$_POST[parent_id]', cat_type='$cat_type', sort_order='$_POST[sort_order]', show_in_nav = '$_POST[show_in_nav]'",  $_POST['id']))


修改為
if ($exc->edit("cat_name = '$_POST[cat_name]', cat_desc ='$_POST[cat_desc]', keywords='$_POST[keywords]',parent_id = '$_POST[parent_id]', cat_type='$cat_type', sort_order='$_POST[sort_order]', show_in_nav = '$_POST[show_in_nav]',page_title='$_POST[page_title]'",  $_POST['id']))


3)、修改文章列表頁前臺程序


打開 article_cat.php 文件
找到
$meta = $db->getRow("SELECT keywords, cat_desc FROM " . $ecs->table('article_cat') . " WHERE cat_id = '$cat_id'");
修改為
$meta = $db->getRow("SELECT keywords, cat_desc,page_title FROM " . $ecs->table('article_cat') . " WHERE cat_id = '$cat_id'");
找到
$smarty->assign('keywords',    htmlspecialchars($meta['keywords']));
在它下面增加一行代碼
$smarty->assign('page_title',    htmlspecialchars($meta['page_title']));
3、關於Ecshop品牌頁如何自定義Title的方法
閑話少敘,下面就以2.7.2版官方默認模板為例講解一下“在Ecshop品牌頁如何自定義Title的方法”。
1)、
第一步,修改數據庫結構,在 ecs_brand 表裏增加一個新字段 page_title
依次進入 後臺 》數據庫管理 》SQL查詢,輸入下面的SQL語句,並執行。
ALTER TABLE `ecs_brand` ADD `page_title` VARCHAR( 255 ) NOT NULL
註意:我的數據庫是用的默認前綴,請針對你的數據庫前綴,自行修改。
2)、
第二步,修改模板文件 /admin/templates/brand_info.htm

<tr>
    <td class="label">{$lang.sort_order}</td>
    <td><input type="text" name="sort_order" maxlength="40" size="15" value="{$brand.sort_order}" /></td>
  </tr>
下面增加
<tr>
    <td class="label">自定義TITLE:</td>
    <td><input type="text" name="page_title"  size="60" value="{$brand.page_title}" /></td>
  </tr>
3)、
修改 /admin/brand.php 文件
找到(大概在88行左右)
$sql = "INSERT INTO ".$ecs->table('brand')."(brand_name, site_url, brand_desc, brand_logo, is_show, sort_order) ".
           "VALUES ('$_POST[brand_name]', '$site_url', '$_POST[brand_desc]', '$img_name', '$is_show', '$_POST[sort_order]')";
    $db->query($sql);
將它修改為
$sql = "INSERT INTO ".$ecs->table('brand')."(brand_name, site_url, brand_desc, brand_logo, is_show, sort_order,page_title) ".
           "VALUES ('$_POST[brand_name]', '$site_url', '$_POST[brand_desc]', '$img_name', '$is_show', '$_POST[sort_order]'),'$_post[page_title]'";
    $db->query($sql);
繼續找到(大概在113行左右)
$sql = "SELECT brand_id, brand_name, site_url, brand_logo, brand_desc, brand_logo, is_show, sort_order ".
            "FROM " .$ecs->table('brand'). " WHERE brand_id='$_REQUEST[id]'";
    $brand = $db->GetRow($sql);
將之修改為
$sql = "SELECT brand_id, brand_name, site_url, brand_logo, brand_desc, brand_logo, is_show, sort_order,page_title ".
            "FROM " .$ecs->table('brand'). " WHERE brand_id='$_REQUEST[id]'";
    $brand = $db->GetRow($sql);

繼續向下找到
/* 處理圖片 */
    $img_name = basename($image->upload_image($_FILES['brand_logo'],'brandlogo'));
    $param = "brand_name = '$_POST[brand_name]',  site_url='$site_url', brand_desc='$_POST[brand_desc]', is_show='$is_show', sort_order='$_POST[sort_order]' ";
將它修改成下面代碼
/* 處理圖片 */
    $img_name = basename($image->upload_image($_FILES['brand_logo'],'brandlogo'));
    $param = "brand_name = '$_POST[brand_name]',  site_url='$site_url', brand_desc='$_POST[brand_desc]', is_show='$is_show', sort_order='$_POST[sort_order]',page_title='$_POST[page_title]' ";
4)、
修改前臺程序文件 /brand.php

$smarty->assign('page_title',     $position['title']);   // 頁面標題
修改為
$smarty->assign('page_title',     htmlspecialchars($brand_info['page_title']));   // 頁面標題
5)、大功告成,可以看看效果了。
4、ECSHOP商品詳細頁自定義TITLE方法
修改教程牽涉到的修改文件
/admin/templates/goods_info.htm
/admin/goods.php
/goods.php


修改步驟:
1:後臺運行sql語句,admin後臺->左側導航->數據庫管理->SQL查詢
運行下面的語句(只能運行一次,小心):
alter table ecs_goods add seo_title text not null


2:修改 admin/templates/goods_info.htm
在此文件的第44行後面,加上下面幾行
          <tr>
            <td class="label">自定義title</td>
       <td>


              <input type="text" name="seo_title" value="{$goods.seo_title}" size="30" />


            </td>


          </tr>


3:修改admin/goods.php
搜索“rank_integral”在SQL語句那裏修改,
需要修改四處,在833行找到
  "is_on_sale, is_alone_sale, is_shipping, goods_desc, add_time, last_update, goods_type, rank_integral, seo_title,suppliers_id)" .
修改成
"is_on_sale, is_alone_sale, is_shipping, goods_desc, add_time, last_update, goods_type, rank_integral, seo_title,suppliers_id)" .
找到839行找到
    " '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type', '$rank_integral','$suppliers_id')";
修改成
  " '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type', '$rank_integral', '$_POST[seo_title]','$suppliers_id')";
847行找到
"is_on_sale, is_alone_sale, is_shipping, goods_desc, add_time, last_update, goods_type, extension_code, rank_integral)" .
修改成
"is_on_sale, is_alone_sale, is_shipping, goods_desc, add_time, last_update, goods_type, extension_code, rank_integral,seo_title)" .
853行
" '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type', '$code', '$rank_integral')";
修改成
" '$_POST[goods_desc]', '" . gmtime() . "', '". gmtime() ."', '$goods_type', '$code', '$rank_integral','$_POST[seo_title]')";
搜索
"rank_integral = '$rank_integral', " .
在下方加代碼
"seo_title='$_POST[seo_title]',".
4:修改根目錄goods.php的第242行
搜索// 頁面標題
把代碼
$smarty->assign('page_title',          $position['title']);                    // 頁面標題
替換成
$smarty->assign('page_title',         trim($goods['seo_title'])?$goods['seo_title']position['title']);  // 頁面標題
清除緩存大攻造成!
提醒您: 您在"ECSHOP 交流討論區"交流請遵守台灣法律規範,"最模板" 發表的文章《ecshop全站自定義tittle標題的方法》版權歸屬作者所有,如是轉貼版權歸屬原作者所有.本論壇不對其真實性做任何考證.
返回列表