phpcms9站点问题
两个站点的风格完全不同,用是两套模板。请问高手怎么解决个问题。 展开
通过你提出的问题,给出本人的分析与解决方案,希望对你有帮助:
问题原因剖析:
在不同站点之间进行文章互调的时候,文章的列表中的文章连接实际上就是文章的“url字段”。
如果是在“静态”环境下,是无法根据所在站点更改页面显示风格的,因为此时url指向的是一个静态html文件,也就无法用程序去判断调用不同的模板风格。除非你做二次开发,在之前把所有模板风格的都生成一遍,然后在不同的站点下调用你想要的那个风格的静态html文件。
如果是在“动态”或“伪静态”环境下,那么相对静态来说解决就轻松多了,可以在url中传递一个参数来指定当前文章内容页显示所用的风格模板,然后,我们知道,内容页显示是调用的show方法,那么在show方法中获取你传递的“模板风格”参数来确定$template变量(系统中用于指定显示模板的变量),从而实现了动态判断调用指定风格来显示内容页面。总之,核心是根据当前站点来指定show方法中不同的$template变量的值。
我在iphpcms里也提到了相关办法你可以参考。
更改方法(动态或伪静态下):
举例,例如A站的内容页模板是show_a.html;B站的内容页模板是show_b.html。那么我在A中调用B的内容列表循环可以这么写:
{loop $data $v}
<li><a href="{$v[url]}&template=show_a">{$v['title']}</a></li>
{/loop}
然后,找到modules/content/index.php里的show方法:
找到这两句:
$template = $template ? $template : $CAT['setting']['show_template'];
if(!$template) $template = 'show';
在其前面加一句:
$template = isset($_GET['template'])?trim($_GET['template']):$template;
ok,基本完成,当然,伪静态同理将模板风格参数放到你的伪静态连接中。
谢谢你这么详细的解答,纯静态页面现有系统看样很难做到。我是想在原来的站点进行整合。我原来站点都是静态了。如果想实现只能发改伪静态。请你问你能做二次开发吗。如果开发静态实现这个功能费事吗,还有就是经过二次开发的系统,在以后升级中会不会不冲突和问题。
可以做二次开发。如果是静态环境下做二次开发要扩展修改phpcms原有的生成静态底层类程序,对以后的升级会有影响,主要是对修改过的文件升级补丁的时候避免直接覆盖就可以。