本帖最后由 foolant 于 2009-11-2 17:57 编辑
以前下过一些主题,差不多每次都要覆盖 UCHome 根目录里的那几个文件, index.php,network.php,space.php ...每次都要,更换一次主题差不多都要替换一次,很多连 source/ 下面的都换,弄得每次都怕怕,怕重装啊。后来自己改主题,很想能不能不要这样。OK,办法总算找到了...
(以下的请感兴趣的朋友手动进行,我没有提供替换好的文件,因为你也不敢保证我没有往源文件里加东西,要是出什么莫名奇妙的问题恐怕你弄死都找不到原因)
主要函数:- @include_once($filename);
- //包含另一个文件,当文件不存在时只返回 false ,不显示出错信息, 借鉴 UCHome 原版的用法
复制代码 修改的文件位置:UChome 根目录
修改的文件:UChome 根目录里 common.php 以及所有在文件开头包含 include_once('./common.php'); 这一行的 php 文件 (不需要修改子目录里的)
1. 修改 common.php (common.php 是打开每一页时都首先执行的预配置文件):
位置中的位置:文件末尾的 ?> 之前加入代码,
- // 自定义函数,调用主题文件夹里 hack/ 子目录的文件来替换系统默认模块,
- //$filename 使用相对路径(如 'source/space_doing.php' 或者 'index.php' 等等 )
- function wee_include($filename) {
- return @include_once(S_ROOT . './template/' . $_SCONFIG['template'] . '/hack/' .$filename);
- }
- //加载自制函数(如果你有常用函数,可以用这种方式加载,文件夹名称和文件名任意 ,
- //即使加了这一行但没有在 Uchome 根目录里建立wee/和wee/functions.php 也不会出异常)
- @include_once(S_ROOT.'./wee/functions.php');
- //加载主题通用函数,这是 Wordpress 的做法, 如果主题里包含functions.php 则自动加载 , functions.php 要放在 hack/ 文件夹内
- @include_once(S_ROOT.'./template/'.$_SCONFIG['template'].'/hack/functions.php');
复制代码 2. 修改 UCHome 根目录里的其他 PHP 文件
如果文件里面开头部分有include_once('./common.php'); 的,在这一行后面加上
- //用主题模块替换默认模块
- if(wee_include(basename(__FILE__))) exit();
复制代码 然后,在这个文件的后面部分查找是否有 include_once(S_ROOT.‘./【这里是文件路径】 '); 这样的行替换成
- //用主题模块替换默认模块
- if( !wee_include('【这里是文件路径】')) include_once(S_ROOT.'./【这里是文件路径】')
复制代码 注意 “S_ROOT.'./” 里面的“./" 在if( !wee_include('...'); 这里是不需要的。
3. UChome 默认安装的情况下可能影响模板的文件如下(仅供参考):
admincp.php
app.php
cp.php
do.php
index.php
magic.php
network.php
space.php
userapp.php
以后如果遇到要你替换系统文件的,先在那个主题的目录里建一个hack 文件夹,把那些 PHP 文件放到里面即可,如果无法执行再作处理也不迟。这样的话频繁更换主题来进行测试的时候就方便多了,不用老是去动系统文件。
注意:本方法仅供参考,如遇到问题请回帖反馈以便提醒他人注意,谢谢! |