Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[求助] 切换风格后页面风格混乱

[复制链接]
wlreg 发表于 2014-2-16 21:23:49 | 显示全部楼层 |阅读模式
问题描述
适用版本: Discuz! X3
浏览器: chrome 
使用模板: 其他模板(请在回帖中说明模板的名称或者是模板的下载地址)
BUG地址: http://www.baidu.com
[size=13.333333969116211px]
版本:X3.1
问题:小弟刚学习discuz不久,想用discuz做门户网站。之前网上下过一些模板,觉得不是很满意,今天拷贝了一份默认模板,打算在这个的基础上修改。
         修改好首页,显示正常之后,打算修改文章列表的模板。不过发现修改文章列表模板之后,进入页面模板还是没有变化。然后我尝试直接修改默认模板,发现这时候页面根据我的修改发生了变化。我已经在后台->界面->模板管理中添加了我自己的模板,然后在后台->风格管理中也将页面风格选择了我自己设计的模板。但是在文章列表页面中的模板还是原来的默认模板,但是也有一点奇怪的是页面开头的模板(header部分)的风格是我自己设计的风格,只是header之后的主要内容部分的模板还是默认的模板。
         之后我跟踪了一下代码执行的顺序,首先执行的是根目录下的portal.php文件,最后的一句:
  • require_once libfile('portal/'.$_GET['mod'], 'module');

复制代码


         如果是首页的话,$_GET['mod']='index',如果是文章列表页面的话,$_GET['mod']='list'。
         之后执行的是source/module/portal目录下对应的php文件。
         如果进入的是首页的话,执行的portal_index.php,最后一句为:
  • include_once template('diy:portal/index');

复制代码


         跟踪template函数,此时$tpldir为string(27) "data/diy/./template/style1/" string(17) "./template/style1" string(17) "./template/style1",其中./template/style1是我设计的模板的文件夹。
         如果进入的是文章列表页面,执行portal_list.php,最后一句为:
  • include template('diy:'.$file, NULL, $tpldirectory, NULL, $primaltplname);

复制代码


         查看$file为portal/list:6,$tpldirectory为./template/default,$primaltplname为portal/list。
         向上查看代码发现$tpldirectory和$primaltplname的值是由$_G['cache']['portalcategory'][$catid]["primaltplname"]中提取而来,而改值为string(30) "./template/default:portal/list",指向的仍是默认模板。似乎我该了风格之后,该值并没有指向我设计的模板的位置,导致页面显示不对。
        另外,从文章列表中进入文章显示的页面风格也不对,追踪./source/module/portal/portal_view.php,最后一句为:
  • include_once template("diy:portal/view:{$catid}", NULL, $tpldirectory, NULL, $articleprimaltplname);

复制代码


        其中,$tpldirectory为./template/veikei_dz_life_20130810_plus,而veikei_dz_life_20130810_plus这个文件夹是我之前通过discuz下载安装的模板之一,已经被我删除掉了,但是这个值仍然指向这个已经不存在的文件夹。
       现在一头雾水,感觉可能有什么设置文件可以统一将这些变量都修改回来?但是小弟刚接触discuz,还有很多不清楚,希望大家能指导一下小弟啊。








幽壑潜蛟 发表于 2014-2-16 21:30:31 | 显示全部楼层
我今晚也遇到这个问题了。
回复

使用道具 举报

 楼主| wlreg 发表于 2014-2-17 12:50:36 | 显示全部楼层
一路跟踪,发现$_G['cache']['portalcategory']的值是通过读取数据库里common_syscache数据表的portalcategory项获得.但是phpMyAdmin里显示该项的data字段是二进制,无法编辑.
不知道有没有办法修改呢.
回复

使用道具 举报

 楼主| wlreg 发表于 2014-2-17 17:40:13 | 显示全部楼层
幽壑潜蛟 发表于 2014-2-16 21:30
我今晚也遇到这个问题了。

我将原来设置的频道全都删掉,又重新新建了频道,然后再点“编辑”,在“列表页模板名:”里就多了几个选项可以选(原来只有默认的几个,不过我的风格是拷贝默认风格上修改的,这里的多出来的几个选项名字还是重复原来默认的那几个)。选了之后再查看,发现模板是改过来了。
估计也可以写个代码,修改数据库里common_syscache的portalcategory项,这个项的data字段只所以显示二进制,其实是调用了php的serialize函数,只要对这个字段的内容调用unserialsize就可以看到内容。
如果不想写代码的话,估计将原来频道里的文章转移到别的频道,删掉再新建再移回来可能也可以。
貌似通过后台每新建一个频道,就会修改portalcategory项。
回复

使用道具 举报

 楼主| wlreg 发表于 2014-2-17 17:40:44 | 显示全部楼层
不知道这个是不是一个bug呢?
回复

使用道具 举报

幽壑潜蛟 发表于 2014-2-18 11:27:53 | 显示全部楼层
我只修改了一个小部分。 直接改的他原来的。 也可以自己建一个list_*的文件选模板的时候选这个。 不用他原来的那个。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-5-19 22:27 , Processed in 0.036656 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表