ECshop修改文档(二)

更新时间:2023-05-17 22:48:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Ecshop 修改教程本教程来次 ecshop 不同级别客户看到不同的会员等级价格怎么样让不同等级的会员,只能查看自己会员帐号等级的会员价格呢。 后来在官网论坛泡了一下,发现果然是后台可以设置的。具体操作方式:后台 -> 会员管理 -> 会员等级 显示价格关闭就可以了--------------------------------------------------------------------------模板文件:goods.dwt 找到如下代码:<!-- {foreach from=$rank_prices item=rank_price key=key} 会员等级对应的价格 --> <strong>{$rank_price.rank_name} : </strong><font class="shop"

id="ECS_RANKPRICE_{$key}">{$rank_price.price}</font><br /> <!--{/foreach}-->改成<!-- {foreach from=$rank_prices item=rank_price key=key} 会员等级对应的价格 --> <!-- {if $key eq $er_rank} --> <strong>{$rank_price.rank_name} : </strong><font class="shop"id="ECS_RANKPRICE_{$key}">{$rank_price.price}</font><br /> <!-- {/if} --> <!--{/foreach}--> ----------------------------------------------------------------------------------------------------------------------ECSHOP 输出 HTML 压缩 ECSHOP 代码减肥该功能有两个好处:给 HTML 页面的减肥,加快页面的加载速度。 增加了阅读 HTML 源码的难度,使想要仿模板的菜鸟们知难而退。 原理就是删除无用的空格、换行符、回车符,对于 JAVASCRIPT 不会压缩。 就我测试来说还没发现问题,为了避免广告嫌疑,演示地址就不放出来了。好了,自己动手,丰衣足食。 打开/includes/cls_template.php,找到 display 函数。在 echo $out;之前添加一行:

$out = preg_replace("~>\s+<~", "><",preg_replace("~>\s+~", ">", $out)); //HTML 压 缩added by millken复制代码OK,清空缓存,立马见效(自己看 HTML 源代码) 。 ----------------------------------------------------------------------------------------------------------------------分类描述使用 FCKeditor 作为编辑器希望实现的功能:在每个分类页面出现对应分类说明。操作办法:分类描述使用 FCKeditor 作为编辑器,在分类页面调用。一。分类描述使用 FCKeditor 作为编辑器步 骤 1 : 先 把 编 辑 器 的 调 用 代 码 写 入 进 去 , 在 admin/category.php 里 面 的 “if ($_REQUEST['act'] == 'add')” ” 和“if ($_REQUEST['act'] == edit )” 下面的大括号里面 加 入 “ include_once(ROOT_PATH . includes/fckeditor/fckeditor.php ); // 包 含 html editor 类文件” 这样就完成文件的调用了。 步 骤 2 : 在 “/* 模 板 赋 值 */” 上 面 添 加 “create_html_editor( cat_desc ,$cat_info['cat_desc']);”这个代码 步骤3:把模板 admin/templates/category_info.htm 里面的“<textarea name= cat_desc

rows=”6″ cols=”48″>{$cat_info.cat_desc}</textarea>” 替换为“{$FCKeditor}” 这样模板就 修改好了!问题:按照上面步骤修改后,确实出现了 FCKeditor,正常添加到数据库。但是在重新修改 的时候,FCKeditor 是空白的,请教如何处理。第二问题:在前台调用{$description}显示的是源代码,而不是 HTML。再次请教如何处理!记得把数据库的字段改为 TXT 第二个问题, 把 category.php 中 的 $smarty->assign('description',htmlspecialchars($cat['cat_desc'])); 改为 $smarty->assign('description', $cat['cat_desc']);------------------------------------------------------------------------------------------------------------------------------如何去掉 ECSHOP 帮助中心文章页的评论功能个人认为 ECSHOP 帮助中心分类下的文章没有必要给它加个评论功能, 下面我们来去掉它第一步: 首先我们打开 /article.php 文件

找到 $smarty->assign('comment_type', 1); 在它下面增加一行代码 $smarty->assign('topcatid',array_pop($catlist));第二步: 然后我们来修改 /themes/default/library/comments.lbi找到{insert_scripts files='transport.js,utils.js'} <div id="ECS_COMMENT"> {* ECSHOP 提醒您:动态载入 comments_list.lbi,显示评论列表和 评论表单 *}{insert name='comments' type=$type id=$id}</div>将它修改为{if $topcatid neq 1} {insert_scripts files='transport.js,utils.js'} <div id="ECS_COMMENT"> {* ECSHOP 提醒您:动态载入 comments_list.lbi,显示评论列表和 评论表单 *}{insert name='comments' type=$type id=$id}</div> {/if}这样就可以了,去重新刷新一下帮助中心的文章页,看是不是没有评论框了。ecshop 自定义分类模板的方法ecshop 是一个功能方面比较完善的商城的程序,但是毕竟不同于一般的 cms 类系统。无法 自定义每个分类的模板, 这样就造成了分类模板一成不变的样式, 对于美观以及个性方面可 能要差点。不过 ec 的开源给了 php 开发者一个很大的 diy 空间,ecshop 的二次开发性也是 蛮强大的。

下面是我实现的 ecshop 自定义分类模板的方法,子类可以继承最顶级的模板。好处是不用 修改数据库,可以在后台分类自定义模板。功能比较简单,代码也很少,只是一个小技巧, 用 ecshop 的朋友可以来尝试一下。ecshop 自定义分类模板的方法实现步骤打开根目录的 category.php 文件(不要问我根目录在哪里),找到大概 401 行 “$smarty ->display('category.dwt', $cache_id);”,将此行注释掉或者删除。在其下面添加下面 代码$cat_arr = get_parent_cats($cat_id); foreach ($cat_arr AS $val) { $cats['style']=$val['style']; } if(empty($cat['style'])) { if(!empty($cats['style'])) { $smarty->display($cats['style'], $cache_id); } else { $smarty->display('category.dwt', $cache_id); } } else { $smarty->display($cat['style'], $cache_id); }

代码工作完成,然后进入后台,商品分类,找到你要添加自定义模板的那个分类。在分类的 样式表文件后面的输入框中,输入你想要应用的模板文件的名称,比如“category_shoes. dwt”(前提是你的主题文件中要存在此模板文件,必须是完整的模板文件名称) ok,工作完成,更新缓存去前台参观一下吧。ecshop 自定义分类模板的方法注意要点 此方法应用的是 ecshop 自带的“可以自定义分类的样式表文件”的修改版本。如果 你原来用了后台分类的自定义分类的样式表文件,那么只能告诉你——鱼与熊掌不可兼得。 (其实这种方法要比原来程序自带的那种要强大) 使用了此方法就不要在模板中载入下面这段代码了<!-- {if $cat_style} --> <link href="{$cat_style}" rel="stylesheet" type="text/css" /> <!-- {/if} --> 顶级分类定义了的话,子类可以继承顶级分类的模板。如果顶级分类没有定义,顶 级分类和子类都会载入默认的模板样式“$smarty->display('category.dwt', $cache_id);” 子类同样可以自定义模板,如果想要子类模板不一样的话,同样需要单独定义。ecshop 自定义分类模板的方法代码解说前面 5 行代码实现调用当前类别的顶级分类的 style,赋值到“ $cats['style'] ” 第 6 行判断当前自定义模板是否为空,接下来,如果不存在就判断顶级分类模板是否存在, 存在就继承顶级模板,不存在就调用默认的 category.dwt 最后两行是在当前自定义模板存在的情况下,就载入当前自定义的模板。如何把 ECSHOP 中的相对地址改为带域名的绝对地址

这里说的绝对地址(或者叫完整地址)是指 查看网页源文件,在源文件中都能看到的带域 名的完整 URL 形式,例如 “<a href="/213423.html ">xxxxx</a>” 修改成绝对地址的好处: 相信很多朋友都喜欢将 带 www 的域名()与不带 www 的域名(68ecshop. com)同时指向到一起。 这样修改以后就可以让搜索引擎第一时间确认 以 www 开头的域名 为首选域, 也不需要再 做 301 重定向了。修改起来也很简单的 打开 /includes/lib_common.php 文件 将 return $uri; 修改为 return '/'.$uri; 就可以了ECSHOP 多语言/translate_tools贴下面的代码即可: <div id="google_translate_element"></div><script> function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: 'zh-CN', includedLanguages: 'ru,ko,en,zh-CN', layout: google.translate.TranslateElement.InlineLayout.SIMPLE }, 'google_translate_element');

} </script><script src="///translate_a/element.js?cb=googleTr anslateElementInit"></script>--------------------------------------------------------------------最近有人问到我 谷歌翻译是否提供 API 我原以为谷歌比较小气没有提供 今天搜索了一下 发现有相关的 API 接下来我就来教大家如何使用这个 API 接口 你的商品名称 描述 and so on 自动加上英文当然这个翻译结果的准确性我就不能够保证了!不废话了 开工 我已翻译商品标题为列 其他方法类似 自行研究 不累述第一步 在 page_header.lbi 适当位置加入以下 js 代码1.2.<script type="text/javascript" src="/jsapi"></script>3.<script type="text/javascript">4.google.load("language", "1");5.</script>复制代码

google.load("language", "1") 将会载入 1 版的 Google 语言 API。 目前,Google AJAX 语言 API 为 1 版,但将来可能会推出新版本。 第二步 以默认模板为例 中文-英文找到<p class="f_l">{$goods.goods_style_name}</p>修改为 <script type="text/javascript">//============= nguage.translate("{$goods.goods_style_name}", "zh-cn", "en", function(result) { if (!result.error) { var container = document.getElementById("n_name");container.innerHTML = result.translation; } }); //============= google.setOnLoadCallback(initialize);

</script> <p class="f_l">{$goods.goods_style_name}<span id="n_name"></span></p>这里解释一下 $goods.goods_style_name 为被翻译的内容 zh-cn 原文本语言类型 en 被翻译为的语言 第一个 n_name 是要显示位置的 ID 第二个 n_name 当然就是显示的位置ecshop 实现自动选择语言转跳【转】很多网站在首页上做一些链接,让用户来选择将要访问的各自的语言页面,让中国人选择“中文” ,韩国人 选择“朝鲜语” ,等等。那么能不能做程序来自动帮助选择呢? 答案是肯定的,大家都在用 google,你用中文系统打开 google 的首页,打开的自然是中文首页,而不会是 其他语言。因为 google 会自动判断用户系统使用的首选语言是什么。 怎样才能做到像 google 那样呢,其实很简单, 在浏览器发给 web 服务器的 HTTP Headers Information 中包含了这样一个信息 Accept-Language 这个信息就是,浏览器中 工具->Internet 选项->常规 下的 语言, 它就是用来设置浏览器可接受的语言首 选项的, 它可以是多种可接受语言的优先排序列。 下面以 PHP 为例, 用户可接受的语言信息,放在$_SERVER['HTTP_ACCEPT_LANGUAGE']里, 变量信息是类似这样的 "zh-cn", 如果是多语言列,是类似 "zh-cn,en;q=0.8,ko;q=0.5,zh-tw;q=0.3" 下面的问题可以迎刃而解了。 在 index.php 底部加入 1.2.preg_match('/^([a-z\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);3.$lang = $matches[1];

4.switch ($lang) {5.case 'zh-cn' :6.header('Location: /');7.break;8.case 'zh-tw' :9.header('Location: /');10.break;11.case 'ko' :12.header('Location: /');13.break;14.default:15.header('Location: /');16.break;

17.}18.?>复制代码ecshop 模板中如何调程序很多时候大家可能都需要调用自己需要的数据 但是这个数据 ecshop 可能默认没有为你提供 所以就需要修改程序来实现不过修改程序 大家都知道不利于升级 今天我就教大家如何将这些写到 模板中ec 使用的 smarty 模板引擎 这是一个支持原生态的模板引擎 (PS 原生态 就是可以直接在模板中写 PHP 代码)来个实例 比如想要在所有的页面显示完整的分类树 就可以在分类树 模板中添加1. <?2.$GLOBALS['smarty']->assign('categories',get_categories_tree()); // 所有分类3.?>复制代码

在商品页面添加 以下代码即可获取 最新文章1. <?2.$GLOBALS['smarty']->assign('new_articles',index_get_new_articles());// 热门文章3.?>复制代码这里可以支持所有的 PHP 包括单独的数据库查询 如:1.2.<?3.$sql="";4.$res=$GLOBALS['db']->getOne($sql); // 获取第一条记录某个字段5.$GLOBALS['smarty']->assign('res',$res);6.?>复制代码这里就不多写了 只要你了解 PHP 和 smarty 就可以轻松的实现在模板中实现程序功能了PS:对象的引用一定要是 $GLOBALS['对象名称']ecshop 如何实现不同商品调用不同模板

我们这里就按照分类来调用模板 假如 有 4 个分类 CAT_ID 为 1 2 3 4 对应的模板 goods.dwt goods1.dwt goods2.dwt goods3.dwt 那麽在 goods.php 中找到1.2.$smarty->display('goods.dwt',$cache_id);复制代码修改为1.switch ($goods['cat_id']){2.case 1:3.$smarty->display('goods.dwt',$cache_id);4.break;5.case 2:6.$smarty->display('goods1.dwt',$cache_id);7.break;

8.case 3:9.$smarty->display('goods2.dwt',$cache_id);10.break;11.case 4:12.$smarty->display('goods3.dwt',$cache_id);13.break;14.}复制代码ecshop 的 SEO 优化很多人喜欢使用 ECSHOP,因为他 SEO 方面优化的非常好,速度也很快,不过用久了发现, 他在 SEO 方面有小地方处理的不是太完美,于是 ECSHOP 开发中心的贾老师亲自上阵,做了 一些优化。 1、68ECShop 标题优化 如何修改 ECShop 标题,现在要将网站标题修改一下,达到下面的效果网站首页标题显示的 是为 ECSHOP 管理中心的[商店标题]。而频道页面,显示的是[频道名+商店名称],当然商品 页面显示的是[商品名+商店名称] 第一步,去掉标题上的 Powered by Ecshop 字样。在 includes/lib_main.php 找到 lib_mai n.php 文件,去掉下面这段代码。 . ‘ - ‘ . ‘Powered by ECShop’

第二步,打开模板文件夹的 goods.dwt 文件,找到{$page_title},将它修改为{$goods.go ods_style_name}_{$shop_name} 第三步,找到 includes/lib_main.php 第 143 行。将$page_title=$GLOBALS['_CFG']['shop_title']; 改为: $page_title=$GLOBALS['_CFG']['shop_name'];然后找到 241 行左右,找到下面这样的代码if (!empty($str)) { $page_title = $str . '_' . $page_title; $ur_here .= ' <code>&gt; ' . $str; }我们需要在这段代码的前面,加入if ($filename == 'index') $page_title=$GLOBALS['_CFG']['shop_title'];这段代码即可。 好了,这个 ECShop 标题我们就修改完了,这样比较符合 seo。 2、去掉 ecshop head 之间的 Generator" content="ECSHOP v2.7.1"ecshop 把 Generator 放在 title 前面看着很不爽,决定去掉,保留页脚的底部版权就可以 了<meta name="Generator" content="ECSHOP v2.7.1" /> 下面讲一下怎么删除这行代码,让系统不再自动产生。

打开 includes/cls_template.php 文件, 大概在 1087 行左右,找到$source = preg_replace('/<head>/i', "<head><meta name=\"Generator\" content=\"" . APPNAME .' ' . VERSION . "\" />", $source);将之删除或者注释掉即可。 第四步: ecshop 的标题结构是这样的 文章标题_类别二_类别一|网站名,如果你的类别再深一层那 就会更长,这样就会造成大量的重复原标记冲淡主题,那么就动手减短一些标题吧,我们只 留下最后的一个分类名就好了打开/includes/lib_main.php 文件,然后找到一下代码 /* 循环分类 */ if (!empty($cat_arr))把下面的代码修改一下 if (!empty($cat_arr)) { $page_title1=$page_title; krsort($cat_arr); foreach ($cat_arr AS $val) { $page_title = htmlspecialchars($val[’cat_name’]) . $page_t itle1; $args = array($key => $val[’cat_id’]);

$ur_here.= ’ <code>></code> <a href="’ . build_uri($type, $args, $val[’cat_name’]) . ’">’ . htmlspecialchars($val[’ cat_name’ . ’ ]) </a>’ ;} } } 这样就可以大大缩短,标题的长度,更利于 seoECSHOP 程序文件 category.php 及 goods.php 等页面多处存在类似以下这样的代码: /* 如果分类不存在则返回首页 */ ecs_header("Location: ./\n"); exit; 以上代码的意思是,如果找不到当前 ID 下的分类或者商品,则跳转到网站首页。这样子 跳转,返回的 HTTP 代码将会是 302,表明此页面信息暂时性转移。(这类跳转代码很容易引 起搜索引擎封杀,有能力的朋友,可以做 301 跳到单独的页面。) 修改方法: 最简单的方法是让它返回 404 错误页面,即把 ecs_header("Location: ./\n"); exit; 改为: header("HTTP/1.0 404 Not Found"); exit; 五、includes\lib_main.php 134 行,以下代码/* 初始化“页面题目”和“当前地位” */$page_title = $GLOBALS['_CFG']['shop_title'];$ur_here = '<a href=".">' . $GLOBALS['_LANG']['home'] . '</a>';

/* 依据文件名分别解决中间的局部 */if ($filename != 'index'){/* 解决有分类的 */if (in_array($filename, array('category', 'goods', 'article_cat', 'artic le', 'brAnd'))){/* 商品分类或商品 */if ('category' == $filename || 'goods' == $filename || 'brAnd' == $fi lename){if ($cat > 0){$cat_arr = get_parent_cats($cat);$key= 'cid';

$type = 'category';}else{$cat_arr = array();}}/* 文章分类或文章 */elseif ('article_cat' == $filename || 'article' == $filename){if ($cat > 0){$cat_arr = get_article_parent_cats($cat);$key= 'acid';

本文来源:https://www.bwwdw.com/article/2zs4.html

Top