ECShop设置模板的原理以及一些模板设置函数说明(个人观点)

飘逸的风13年前 (2012-11-22)程序7795
ECShop设置模板的原理以及一些模板设置函数说明(个人观点)

admin/includes/lib_template.php 一些函数及变量说明

$template_files 可以设置内容的模板。

$page_libs 每个模板允许设置的库项目。

get_template_region() 获得模版文件中的编辑区域及其内容,即TemplateBeginEditable和此标签里面的内容件数组。第三个

参数$lib=true时,同时也获取该编辑区域内所有库项目。

get_editable_libs() 从相应模板xml文件中获得指定模板文件中的可编辑区信息,返回可编辑的库文件数组。此XML文件在模板

目录下,名为libs.xml。

设置模板的页面:admin/template.php

模板语言包:languages/语言/admin/template.php

设置模板的原理:
如果某个模板文件存在region(区域),选择region提交后,库项目会自动移至所选择的区域。

处理代码:

/* 修改模板文件 */
$template_file    = '../themes/' . $curr_template . '/' . $_POST['template_file'] . '.dwt';
$template_content = file_get_contents($template_file);
$template_content = str_replace("\xEF\xBB\xBF", '', $template_content);
$org_regions      = get_template_region($curr_template, $_POST['template_file'].'.dwt', false);

$region_content   = '';
$pattern          = '/(<!--\\s*TemplateBeginEditable\\sname="%s"\\s*-->)(.*?)(<!--\\s*TemplateEndEditable\\s*--

>)/s';
$replacement      = "\\1\n%s\\3";
$lib_template     = "<!-- #BeginLibraryItem \"%s\" -->\n%s\n <!-- #EndLibraryItem -->\n";

foreach ($org_regions AS $region)
{
    $region_content = ''; // 获取当前区域内容
    foreach ($post_regions AS $lib)
    {
        if ($lib['region'] == $region)
        {
            if (!file_exists('../themes/' . $curr_template . $lib['library']))
            {
                continue;
            }
            $lib_content     = file_get_contents('../themes/' . $curr_template . $lib['library']);
            $lib_content     = preg_replace('/<meta\\shttp-equiv=["|\']Content-Type["|\']\\scontent=["|\']

text\/html;\\scharset=.*["|\']>/i', '', $lib_content);
            $lib_content     = str_replace("\xEF\xBB\xBF", '', $lib_content);
            $region_content .= sprintf($lib_template, $lib['library'], $lib_content);
        }
    }

    /* 替换原来区域内容 */
    $template_content = preg_replace(sprintf($pattern, $region), sprintf($replacement , $region_content), 

$template_content);
}

相关文章

PHP删除目录及目录下所有文件

1、PHP删除目录及目录下所有文件 01 <?php 02 //循环删除目录和文件函数 03 function delDirAndFil...

PHP常用正则表达式汇总

1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2.    &quo...

ecshop搜索热门关键字的调用

码关键字的设定在:后台-商店设置-显示设置--首页搜索的关键词 {if $searchkeywords} {$lang.hot_search} :  {foreach from...

htaccess 防止盗链,防止目录浏览等10大技巧

1. 反盗链 那些盗用了你的内容,还不愿意自己存储图片的网站是无耻的。你可以通过以下配置来放置别人盗用你的图片:   1     RewriteBase...

PHP一些代码收藏:验证身份号、根据身份证号获取星座和生肖等

<?php // PHP根据身份证号,自动获取对应的星座函数 function get_xingzuo($cid) { // 根据身份证号,自动返回对应的星座 if (!isIdCard...

对PHP新手的一些建议和开发习惯

1、准确的理解各种概念。现在的新东西层出不穷,望文生义和一知半解对开发工作有害无益;//比如我就碰到有人理解松散耦合(这个东西不新)的概念居然是要求代码不要有空行,否则你的程序就是“太松散”了...

评论列表

李明博客
13年前 (2013-01-17)

很好,谢谢分享!

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。