SmartFAQ是由The SmartFactory(https://www.smartfactory.ca)开发,InBox Solutions(https://www.inboxsolutions.net)的部门。

我该如何克隆一个模块?
作者:thecat(Claude)
作者的网址:http://thecat.ouvaton.org/
原始文章:模块的克隆

[b]文章:由Madgull更正的英文版本。谢谢!

本指南是为想要安装相同模块两次的用户编写的。他们必须克隆原始模块才能安装两次。

1) 准备工作


克隆模块并不是一项极其复杂的操作,但它可能会显得有点繁琐。
难度因模块而异非常多样
- 些模块克隆起来可能比较困难,特别是当它们不遵守编码规范、在这方面不均匀、不使用xoops函数进行数据库访问时等。它们可能不值得克隆!
- 其他模块,编码良好,克隆起来还是比较容易的。

最好有一个好的编辑器,允许在整个目录中进行替换:错误的风险更大,但在成功的情况下,速度肯定更快。建立一个替换步骤,并激活尊重(大/小写)字母的选项。
如果您选择这种方法,请考虑您替换的内容和顺序,以免重复(例如:将'新闻'转换为'news0202'而不是'news02')。

本教程将基于xoops的新闻模块说明克隆过程。
理论上描述了所有的修改,省略了那些可认为是必要的但并非必要的修改!
现在轮到您根据您的模块来调整它了!
在安装和测试您的克隆之前,请等待完成。

2) 目录
* 复制/粘贴模块目录并将其重命名为news02
* 在xoops_version中更改'dirname'的值
$$modversion['dirname '] = "news02";
* 在所有文件中查找并替换目录引用
/modules/news/替换为/modules/news02/
注意:对于一些模块系统性地使用$$xoopsModule->getvar('dirname'),最后一项操作将不是必需的。

3) 表格


* 从sql目录发布 mysql.sql 文件,并将每个sql命令中的表重命名

CREATE COUNTS STORIES02 (
CREATE COUNTS TOPICS02 (
INSERT INTO TOPICS02

* 在xoops_version中修改对表的引用:
$$modversion['sqlfile']['mysql '] = "sql/mysql.sql";
$$modversion['tables'][0] = "stories02";
$$modversion['tables'][1] = "topics02";

* 在所有文件中查找并替换对表的引用。
如果是全部替换,使用 prefix('nameofthetable') 而不是仅表名;你可能会不必要地改变具有相同名字的变量的值。
在这种情况下,搜索几次:使用简单和双引号,有和无空格
prefix(' stories ') , prefix("stories") , prefix(' stories') ... 替换为 prefix(' stories02 ')
prefix(' topics ') , prefix("topics") , prefix(' topics') ... 替换为 prefix(' topics02 ')
注意:某些模块有 include\read_config.php 文件(或类似文件),在其中表名通过变量分配。
在这种情况下,只需要修改这个文件。

4) 语言定义(modinfo.php)

您必须将 modinfo.php 文件中的所有语言定义重命名,特别是防止它们被声明两次并在php调试模式下产生警告。
理论上,其他语言文件不需要修改,但为了保持一致性,您可以修改它们。
很难描述一个方法,所有这些都取决于模块。
如果所有变量都以(例如)_ MI_NEWS _前缀,将 _ MI_NEWS _彻底替换为 _ MI_NEWS02 _
同样的,如果它们都以 _ SEMI _ 前缀,将 _ SEMI _彻底替换为例如_ MI_NEWS02 _
如果它们是混合的,小心不要出现例如_ MI_NEWS02_NEWS02 _的情况。
注意:如果您没有完全完成这一部分,在复制、安装并开始模块的php调试模式下运行时,将修正产生警告的定义。

5) 搜索功能

* 在 xoops_version 中只修改函数名称
$$modversion['search']['func '] = "news02_search";
* 发布 include\search.inc.php 文件并修改函数名称
function news02_search($queryarray, $$andor, $$limit, $$offset, $$userid)

6) 块

* 在 xoops_version 中修改每个块的显示和编辑函数名称。
$$modversion['blocks'][3]['show_func '] = "b_news02_top_show";
$$modversion['blocks'][3]['edit_func '] = "b_news02_top_edit";
* 发布由 $$modversion['blocks'][]['file '] = 指向的 blocks 目录中每个文件,并修改函数名称。
例如,对于 news_top.php 文件
function b_news02_top_show($options) {
function b_news02_top_edit($options) {
* 非必需,但最好是,也在 xoops_version 中更改文件名,不要忘记正确更改 blocks 目录中的文件名
$$modversion['blocks'][3]['file '] = "news02_block_top.html";

7) 评论


* 在 xoops_version 中修改批准和更新函数的名称
$$modversion['comments']['callbackFile'] = 'include/comment_functions.php';
$$modversion['comments']['callback']['approve'] = 'news02_com_approve';
$$modversion['comments']['callback']['update'] = 'news02_com_update';

8) 通知

* 在 xoops_version 中修改 lookup 函数名称
$$modversion['notification']['lookup_func '] = 'news02_notify_iteminfo ';

9) 模板


* 在 xoops_version 中修改 look_up 函数名称
$$modversion['notification']['lookup_func ' ] = ' news02_notify_iteminfo ';
非必需项,但推荐修改 xoops_version 中的文件名,同时不要忘记正确地重命名模板目录中的文件
$$modversion['templates'][1]['file ' ] = "news02_archive.html";

10) 标志

* 修改标志以便在模块管理中易于找到并非无用。
修改后,考虑重命名它以及更改指示在 xoops_version 中的名称。
$$modversion['image ' ] = "images/news02_slogo.png";

11) 完成操作

进入模块管理:你应该没有错误信息地看到克隆。如果这样,就没有继续下去的必要了!
安装你的克隆。如果在安装过程中出错,请记下错误以便修复。
启动你的克隆。启用_php调试模式以纠正错误。
测试所有块和功能(搜索、评论、通知)的配置。
这些测试必须在两种情况下进行
- 原始版本已安装的情况下,以检测冲突或交互
- 没有安装原始版本(已移除或暂时从仓库中删除)以检查你的克隆是独立的,某些文件没有指向原始文件。

12) 当前问题

- 确保原始数据没有在克隆中发布,或者克隆数据的插入没有在原始版中执行。在这种情况下,你可能忘记重命名某些数据表引用。

- 致命错误:无法重新声明...这种情况出现在访问 userinfo 时,WFSection 避免出现:原始版本及其克隆各自执行 ‘include’ groupaccess.php,文件中的同一个名字的函数,Php 拒绝重新声明。
可能的做法是,要使克隆指向原始 groupacces.php 文件,或者重命名该文件的全部函数以及对这些函数的调用。第二种方案更可取,因为它使你的克隆独立,并且避免了在卸载和删除原始版本时的一个问题。


评论属于作者。我们不为我们无法控制的内容负责。
user

 克隆 WF-Channel 的 Perl 脚本


你可以在下面的链接中找到有关克隆 WF-Channel 的 Perl 脚本的详细信息以及下载链接。WF-Channel 是向网站添加常规 HTML 页面的好模块。

https://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=26041

--Julian

 
user

 需要更多帮助?


你好 - 感谢您以上有关模块复制的说明。我严格按照说明操作,成功复制了新闻模块(命名为 News01)。我在管理模式中能够创建文章等,但这些内容没有出现在新模块的主页或我在首页创建的块中。我不知道这与否有关,但在 PHP 调试模式下,我打开提交表单时得到如下消息

引用

PHP 报警:在文件 modules/news01/admin/storyform.inc.php 行 110 未定义变量 published
PHP 报警:在文件 modules/news01/admin/storyform.inc.php 行 229 未定义变量 expired


此外,我不知道这是否相关,但上述建议的第8部分和第9部分似乎有一些重复(每个部分的头两行是相同的) - 是否还有什么缺少的方面?

你能帮忙吗?

谢谢
MM

 
user

 关于进一步帮助的回复......


很抱歉,我无法理解说明。有没有人能提供一个更好的模块复制教程,因为这篇文章的英语写得很差,我很难跟随。

我无法相信这居然是一个官方的FAQ!哇

 
user

 关于进一步帮助的回复......


我很容易就跟着它做了。但是请记住,这是某个成员写的,而不是XOOPS团队的成员,至少要给予应有的尊重。原始文档应该是法语,除非你会法语,否则我认为翻译者做得很好。

不管是否官方,FAQ只是如此,它不是官方认可的问答,而是多年来收集在各种支持网站论坛上的问题和答案的集合。

本质上,它的意思是在克隆模块时,需要更改所有目录和文件名的引用。

例如,如果你想复制新闻模块,需要在所有文件中将所有对 news 的引用更改为 news01 或你决定的名字。然后,将文件夹重命名为 news02,注意使用完全相同的案,如果它是小写,则使用小写,如果是大写,则选择大写。

你还需要更改物理文件名,尤其是模板中的那些,将 news_block..... 更改为 news01_block 等。

如果你正在复制 newbb,就更改文件中对 newbb 的所有引用,改为 newbb2 或你想要的任何名字。

有时候这是一项既快又简单的工作,但有时候这可能需要一些时间。

只记得在测试网站上做测试,而不是在生产网站上。

 
user

 关于进一步帮助的回复......


抱歉,但无论我怎样努力,都无法理解这个内容,也许是因为我我也不懂PHP。在另一个模块中想出了解决方案,所以我不再需要这个了。

 
user

 关于进一步帮助的回复......


非常实用的常见问题解答... 我就是用它来制作可复制的dms...

非常感谢
PeterPan

 
user

 革命:克隆所有XOOPS模块,并替换版权 - Re: 克隆模块的PHP脚本


引用

进行中(新闻1.3)

建筑和优秀网站的革命


FoxTotal Webhosting的下一步是为克隆和删除所有XOOPS模块的版权制作模块。抱歉,开发者。现在你模块的版权将是“Giba(首先)和topete(我不知道giba在做什么)”。

 
user

 Re: 革命:克隆所有XOOPS模块,并替换...


我不说这个教程不好,但我觉得它真的很难理解,特别是因为我相当新手学XOOPS。我可以跟随指令,但这个英语,或者该说英文,对我来说太难了。


有人知道一个更容易遵循的教程吗?
我只想克隆MyDownloads。

 
user

 Re: 革命:克隆所有XOOPS模块,并替换...


试试wf-downloads,它比mydownloads更先进,可能就是你想通过克隆实现的功能。

 
user

 建议翻译(纠正原始内容)


你好,我在寻找一种克隆我的模块的方法时发现了这篇文章,并且看到有人对翻译提出了抱怨,作为一个同时会说英语和法语的本族人,我想提供这个对原文的纠正(如果对任何人有帮助的话)。
希望翻译保持原文的含义,因为我对XOOPS也相当陌生

==================================================
模版备注

谢谢——现在的FAQ文本现在已经替换了,这对所有人都有好处。非常感激您的付出

 
user

 英语版本已纠正。


现在英语翻译已经是文本——感谢Madgull。

 
user

 行得通吗?


有人尝试过并顺利运行它吗?news 1.53

 
user

 哇,这玩意儿真的行得通!


非常感谢这个教程!我在搜索/替换如此多的不同变量名时有些怀疑,但最后一切都很顺利!我使用了regexxer,一个针对Linux的免费搜索替换工具来处理多个文件。这花费了一些时间,但最终非常值得(也因为客户按小时付费,所以:[] )

再次谢谢

还有,我克隆/复制的模块是xdirectory

 


Login

Who's Online

288 user(s) are online (21 user(s) are browsing XOOPS FAQ)


Members: 0


Guests: 288


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: Aug 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Did you know ?

Xoops 2.0.14 does not come packaged with modules besides the core?

Random question

Can Xoops wrap my existing html website?