我正在制作自定义库以扩展 Joomla 框架核心的功能,并且我将所有类放在自定义库文件夹中,如下所示:
- libraries
- joomla
- my_custom_library
我希望在执行任何模块渲染之前我的所有类都存在,以便我可以将它们用于我的自定义模块代码。现在,我能想到的唯一加载我的类的地方是在我的模板文件中:
<?php
// index.php in template folder
require_once(JPATH_LIBRARIES . DS . 'my_custom_library' . DS . 'Page.php';
require_once(JPATH_LIBRARIES . DS . 'my_custom_library' . DS . 'User.php';
// and so on...
// and then the HTML document follows with <jdoc:include type="modules" /> syntax
jdoc:include
不幸的是,在为我的自定义库执行这些调用之前,Joomla 似乎解析了我的模板文档,读取了我的所有s,并存储了我所有模块的输出require_once
,因为当我创建一个新模块并检查我的类是否存在时,它总是返回假。
<?php
// mod_something_custom.php in something_custom module folder
echo (bool) class_exists('MyCustomPageClass'); // false
如何在渲染任何内容(特别是我的模块)之前加载所有自定义类?如果可能的话,我不想改变核心。
更新:我刚刚发现通过<jdoc:include type="modules />
确实包含的模块确实看到我的类存在。但是,情况并非如此<jdoc:include type="component" />
。在这种情况下,我有 com_content 文章使用{loadposition}
声明来加载模块并呈现它。当我这样做时,我的课程就不复存在了!