私はカスタムコンポーネントを持っていますが、実際にはいくつかあります。それぞれの先頭と末尾に生のハードコードされた 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>
手伝ってくれますか?
ありがとう