2.2版本可以随意设置theme的hack

对一xoops的界面灵活性很多朋友都不了解,经过我浪费(N长+6小时)时间终于对theme的应用有了突破性的解决,希望这个功能将来也能加入到核心中,修改的方式很简单,仅需要十几行代码,而解决了以下问题:
①任意模组可以使用任意指定的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;
 }

//serve page修改 李正城
$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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: