From the archive
2.2版本可以随意设置theme的hack
①任意模组可以使用任意指定的theme,(这可能需要对指定的theme稍加修改,比如改点文件图片的连接路径什么的)
②任意可运行的文件可以拥有自己独立的theme(这个功能太奇妙了,每个文件都可以了,而不是整个系统相同,不是一个模组相同,而是“每个”可在连接栏访问的文件都可以拥有自己独立的界面)
③区块可以任意的放置到任何位置!^_^,请不要怀疑啊,只有你想不到,没有做不到!
请深入了解xoops的用户尝试,“hack有风险,修改需谨慎”
修改及其简单啊,十几行代码,两个文件,footer.php和block.php两个文件,其中block.php仅加一行代码就可以了!
文件:footer.php
找到如下语句:
$GLOBALS[‘xTheme’]->display($template);
把他修改成:
//添加 李正城
$thistpl=NULL;
$filename = basename(xoops_getenv(‘PHP_SELF’));//得到运行文件的名称
/**
* Written by scottlai on 2005-12-9
* PHP与HTML实现路径一一对应
**/
$start_pos = strpos($_SERVER[‘PHP_SELF’], $xoopsModule->getVar(‘dirname’)) + strlen($xoopsModule->getVar(‘dirname’)) + 1;
$length = strlen($_SERVER[‘PHP_SELF’]) – $start_pos;
$sub_dir = substr(dirname($_SERVER[‘PHP_SELF’]), $start_pos, $length);
$sub_dir .= ((strlen($sub_dir) > 0)?"/":"");
$filemainname=substr($filename, 0, strrpos($filename, ".")); //得到主文件名
//$filetplpath="templates/".$xoopsModule->getVar(‘dirname’)."/".$filemainname.".html";//得到主文件的模板
$filetplpath="templates/".$xoopsModule->getVar(‘dirname’)."/".$sub_dir.$filemainname.".html";/* 得到主文件的模板,包括模板文件的路径 */
$modtplpath="templates/".$xoopsModule->getVar(‘dirname’)."/theme.html";//得到模组的统一模板
if(is_readable( XOOPS_THEME_PATH."/".$xoopsConfig[‘theme_set’]."/".$filetplpath )){
$thistpl=$filetplpath;
}elseif(is_readable(XOOPS_THEME_PATH."/".$xoopsConfig[‘theme_set’]."/".$modtplpath )){
$thistpl=$modtplpath;
}
$GLOBALS[‘xTheme’]->display($template,$thistpl);
到kernel名录,打开block.php
在文件末尾
$xoopsTpl->append(‘xoops_’.$sides[$block_arr[$i]->getVar(‘side’)].’blocks’ , $block_info);
之后添加:
$xoopsTpl->assign(‘block’.$block_arr[$i]->getVar(‘instanceid’) , $block_info);//添加 李正城
好了,所有hack完成了!
如果您感觉还是不会,那么就不要为难了,把这些工作交给我吧,当然,是要收费的了,不是我不仗义,是因为我目前的确连吃饭都困难了,联系电话:13603260901,先用短信了,电话费也是掏不起的。(转载请保留)
templates
如果想对某个模块进行选用指定的模板,就在里面建立模块的文件目录,如news,mylinks等等,
如果这个模组想用统一的模板,就在这个目录中创建文件,theme.html,这个文件基本和基本目录中的文件方式相同,注意图片及仅用的其他文件的连接地址。
如果想给某一个文件指定theme,就创建和文件名相同的html文件,如模组首页都是index.php,就创建一个index.html的文件,如果,提交文件submit.php想用单独的theme文件就创建submit.html文件,这些html和原先的theme类似。
当然这个目录中,也是可以放置内容部分的html的,如mylinks_index.html,就是mylinks模组首页内容部分的tpl,如果在里面建立blocks目录,再放入区块的theme,也可以使用此区块的theme,^_^,这么神奇,其实这功能是原先xoops2.0开始就可以用的,感谢开发者们!
那么怎么创建指定的区块呢?
大家忘了我也给block.php植入了我的代码了吧,这个代码的作用就是把单独的区块信息传递给模板,只要在模板中引用block+id就可以了,如标题用<{$blocs9.title}>内容用<{$blocs9.content}>这就在指定的位置分别调用了ID号为9的区块的标题及内容!
首先您的这个区块原先设置应该在这个模组的页面中啊!
怎么样?够简单吧?
不要怪我写的简单或看不懂,那可能是您对xoops相关的部分了解不深,自己琢磨吧,我没有太多的时间来给大家回答问题,因为我正在为下个月的生活费发愁呢!
如果您感觉还是不会,那么就不要为难了,把这些工作交给我吧,当然,是要收费的了,不是我不仗义,是因为我目前的确连吃饭都困难了,联系电话:13603260901,先用短信了,电话费也是掏不起的。(转载请保留)
原贴 :
http://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=4469&forum=16