ECSHOP商城全站自定义TITLE标题设置 关闭并且禁用ECSHOP缓存

1、Ecshop商品分类页如何实现自定义Title
最近发现很多人都在寻求“如何自定义ECSHOP商品分类页(列表页)TITLE”的修改方法。下面提供一种二次开发教程。
第1步、修改 ecs_category 数据表的结构,新加一个字段
进入 后台 》数据库管理》SQL查询,执行下面SQL语句

ALTER TABLE `ecs_category` ADD `cat_title` VARCHAR( 255 ) NOTNULLAFTER `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'])? g o o d s [ ′ s e o t i t l e ′ ] : goods['seo_title']: goods[seotitle]:position[‘title’]); // 页面标题
清除缓存大攻造成!

关闭并且禁用ECSHOP缓存

ECSHOP的缓存机制从一定程度上可以减少ECSHOP反复读取数据库的几率,从而一定程度上降低服务器负担,提高访问速度。但是启用缓存机制,对一些新手站长也有不利的地方。我就遇到很多新手站长经常问,我明明修改了什么什么,为什么前台就没变化呢,这就是缓存在作怪,一般到后台清除缓存就可以了。

鉴于上述原因,有一些站长就在想能不能"禁用ECSHOP缓存,关闭ECSHOP缓存"呢?答案是肯定的。

下面就来讲一讲"如何禁用ECSHOP缓存,如何关闭ECSHOP缓存?"

ECSHOP的缓存分两种,一种是SMARTY的页面缓存;另一种是SQL查询结果的缓存。

这两种缓存都是保存在templates/caches/文件夹下。

只要我们分别关闭这两个缓存,就可以完全禁用ECSHOP的缓存。

当然你也可以根据自己的需要关闭其中某一个。

1、关闭SMARTY的缓存:
    打开includes/cls_template.php,找到下面一段

if (file_put_contents($hash_dir . '/' . $cachename . '.php', '<?php exit;?>' . $data . $out, LOCK_EX) === false)
 {
  trigger_error('can\'t write:' . $hash_dir . '/' . $cachename . '.php');
 }

将这一部分注释掉即可,改成

/*
  if (file_put_contents($hash_dir . '/' . $cachename . '.php', '<?php exit;?>' . $data . $out, LOCK_EX) === false)
  {
   trigger_error('can\'t write:' . $hash_dir . '/' . $cachename . '.php');
   }
   */

2、关闭SQL查询结果缓存

打开includes/cls_mysql.php
    找到

var $max_cache_time=3600;//最大的缓存时间,以秒为单位

改为

 var $max_cache_time=0;//最大的缓存时间,以秒为单位

经过上面修改后,就已经将ECSHOP的页面缓存和数据查询缓存都禁用了,这样当你做了任何修改后,前台都能马上体现出最新的变化,但是对服务器的压力会比禁用缓存之前稍微大那么一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值