http://xoops.org.cn/modules/newbb/vie ... p?topic_id=17781&forum=25
xoops2.3克隆区块功能很实用,但如果想针对article不同区块设置模板无法办到--因为他与原区块共用同一template,虽然可以用css+js的方式巧妙的解决这个事情,但是很繁琐,不易于复用,所以本人试着将article的区块复制,再配合xoops2.3的克隆功能,更为易用。
基本上就两个文件,一个是/modules/article/blocks/blocks.article.php还一个是/modules/article/blocks/blocks.news.php其余的tag什么的还有分类,如果想复制用相同方法也可得到。
先拿复制“文章区块”来说,举一反三
具体方法如下:
第一步
xoops_version.php中找到如下代码段
$modversion["blocks"][] = array(
"file" => "blocks.article.php",
"name" => art_constant("MI_ARTICLE"),
"description" => art_constant("MI_ARTICLE_DESC"),
"show_func" => $GLOBALS["ART_VAR_PREFIX"]."_article_show",
"options" => "time|10|2|0|c|0",
"edit_func" => $GLOBALS["ART_VAR_PREFIX"]."_article_edit",
"template" => $GLOBALS["artdirname"]."_block_article.html");
复制此段代码在其下并加以修改
$modversion["blocks"][] = array(
"file" => "blocks.article_1.php",
//复制区块主要文件
"name" => art_constant("MI_ARTICLE_1"),
//复制语言包中常量,使之可显示不同标题,如“文章”变成“资讯”
"description" => art_constant("MI_ARTICLE_DESC_1"),
//同上
"show_func" => $GLOBALS["ART_VAR_PREFIX"]."_article_show_1",
//方法复制
"options" => "time|10|2|0|c|0",
"edit_func" => $GLOBALS["ART_VAR_PREFIX"]."_article_edit_1",
//方法复制
"template" => $GLOBALS["artdirname"]."_block_article_1.html");
//模板复制
第二步
找到blocks/block.article.php 将其复制为我们上面定义的名字:block.article_1.php。然后打开此文件修改
function [VAR_PREFIX]_article_show($options)
为
function [VAR_PREFIX]_article_show_1($options)
修改
function [VAR_PREFIX]_article_edit($options)
为
function [VAR_PREFIX]_article_edit_1($options)
保存。
第三步
/templates/blocks/articles_block_article.html
复制,名为articles_block_article_1.html
第四步
article的语言文件 language/相关语言中修改添加MI_ARTICLE_1 值可设置为“文章1”;MI_ARTICLE_DESC_1可同原始值留空对程序实用无大碍
完成。
以上工作做过简单测试,需要注意的是
所有的区块显示时间格式必须一致,否则会出错,原因未知。
经过这些修改,article可以更完美的完成诸多内容发布,配合xoops2.3复制区块功能,可应用于大型站点
注:本人非php程序员,所做之hack凭经验积累,可能不准确,请诸位xoopser详细测试之后反馈回xoopschina社区。
-----------------------------
感谢xoops团队,感谢xoops社区,感谢xoops社区的老朋友新朋友
愿xoops社区壮大,xoops功能更强
xoops2.3克隆区块功能很实用,但如果想针对article不同区块设置模板无法办到--因为他与原区块共用同一template,虽然可以用css+js的方式巧妙的解决这个事情,但是很繁琐,不易于复用,所以本人试着将article的区块复制,再配合xoops2.3的克隆功能,更为易用。
基本上就两个文件,一个是/modules/article/blocks/blocks.article.php还一个是/modules/article/blocks/blocks.news.php其余的tag什么的还有分类,如果想复制用相同方法也可得到。
先拿复制“文章区块”来说,举一反三
具体方法如下:
第一步
xoops_version.php中找到如下代码段
$modversion["blocks"][] = array(
"file" => "blocks.article.php",
"name" => art_constant("MI_ARTICLE"),
"description" => art_constant("MI_ARTICLE_DESC"),
"show_func" => $GLOBALS["ART_VAR_PREFIX"]."_article_show",
"options" => "time|10|2|0|c|0",
"edit_func" => $GLOBALS["ART_VAR_PREFIX"]."_article_edit",
"template" => $GLOBALS["artdirname"]."_block_article.html");
复制此段代码在其下并加以修改
$modversion["blocks"][] = array(
"file" => "blocks.article_1.php",
//复制区块主要文件
"name" => art_constant("MI_ARTICLE_1"),
//复制语言包中常量,使之可显示不同标题,如“文章”变成“资讯”
"description" => art_constant("MI_ARTICLE_DESC_1"),
//同上
"show_func" => $GLOBALS["ART_VAR_PREFIX"]."_article_show_1",
//方法复制
"options" => "time|10|2|0|c|0",
"edit_func" => $GLOBALS["ART_VAR_PREFIX"]."_article_edit_1",
//方法复制
"template" => $GLOBALS["artdirname"]."_block_article_1.html");
//模板复制
第二步
找到blocks/block.article.php 将其复制为我们上面定义的名字:block.article_1.php。然后打开此文件修改
function [VAR_PREFIX]_article_show($options)
为
function [VAR_PREFIX]_article_show_1($options)
修改
function [VAR_PREFIX]_article_edit($options)
为
function [VAR_PREFIX]_article_edit_1($options)
保存。
第三步
/templates/blocks/articles_block_article.html
复制,名为articles_block_article_1.html
第四步
article的语言文件 language/相关语言中修改添加MI_ARTICLE_1 值可设置为“文章1”;MI_ARTICLE_DESC_1可同原始值留空对程序实用无大碍
完成。
以上工作做过简单测试,需要注意的是
所有的区块显示时间格式必须一致,否则会出错,原因未知。
经过这些修改,article可以更完美的完成诸多内容发布,配合xoops2.3复制区块功能,可应用于大型站点
注:本人非php程序员,所做之hack凭经验积累,可能不准确,请诸位xoopser详细测试之后反馈回xoopschina社区。
-----------------------------
感谢xoops团队,感谢xoops社区,感谢xoops社区的老朋友新朋友
愿xoops社区壮大,xoops功能更强
