我有一个自定义组件,实际上有几个。每个文件的开头和结尾都有原始和硬编码的 html/view/default.php
我有一个系统插件需要获取此 html,在某些情况下将其更改为其他内容,可以在后端进行管理。作为一个内容插件,它适用于所有 com_content 文章,但它被组件忽略,我的理解是系统插件可以做到这一点,但我无法将数据放入插件并返回它
组件文本示例($text1、$text2 定义在文档顶部)
JPluginHelper::importPlugin( 'system' );
JPluginHelper::importPlugin('plgSystemMyplugin');
$dispatcher =& JDispatcher::getInstance();
$data = array($text1, $text2); // any number of arguments you want
$data = $dispatcher->trigger('onBeforeRender', $data);
<article>
<div class="spacer" style="height:25px;"></div>
<div class="page_title_text">
<h1>title</h1>
<?php var_dump($data); ?>
</div>
<section>
我的插件:
jimport( 'joomla.plugin.plugin' );
class plgSystemMyplugin extends JPlugin {
function onBeforeRender() {
if (JFactory::getDocument()->getType() != 'html') {
return;
}
else {
$document=JFactory::getDocument();
$document->addCustomTag('<!-- System Plugin has been included (for testing) -->');
$document=JResponse::getBody();
$bob=JResponse::getBody();
$db = &JFactory::getDbo();
$db->setQuery('SELECT 1, 2 FROM #__table');
$results = $db->loadRowList();
$numrows=count($results);
if($numrows >0) {
foreach($results as $regexes) {
$document = str_replace($regexes[0],$regexes[1],$document);
}
return $document;
}
else {
$document = 'error with plugin';
}
JResponse::setBody($document);
return $document;
}
}
}
目前 $data 返回一个数组,其键为 1,值(字符串)为“”(空白/空)。
但不是我期望的数据库中的数据。
简单来说,我{sometext}
在我的文件和数据库中,它应该返回<p>my other text</p>
你能帮我吗?
谢谢