テンプレートに追加できることを知っています
<jdoc:include type="modules" name="newposition" />
そして、positionsタグ内に新しい位置を追加します。
<positions>
<position>newposition</position>
</positions>
しかし、ポジションスロットのモジュールバックエンドに入力することで、どこからでもポジションを作成できることも知っています。
そして、あなたはモジュールのloadpositionを行うことができます。
{loadposition some_position}
しかし、このテキストをモジュールにエコーすると、それは単なるテキスト(文字列)です。文字列でもあるXMLをエコーするが、XMLファイルにないため、期待どおりに動作しない場合。
モジュール内にモジュール位置を追加することは可能ですか?
組み込みのJoomlaを使用したいです。拡張機能を使用するよりも方法。
コンテンツ準備プラグインで試しましたが、Sharkyの方法を試したいのですが、機能させることができません。これが私が試したものです。
<?php
use Joomla\CMS\Factory;
?>
<div class="ui-nav ui-nav-mobile">
<div class="g-content">
<a class="ui-btn ui-menu-close">Close <i class="fa fa-close" aria-label="Close dialog"></i></a>
<?php
foreach ($subform_items as $item) {
$position_name = "{loadposition " . $item->position_name_x . "}";
$modulePositions = JHtml::_('content.prepare', $position_name, '', 'mod_koy_sticky_contact.content');
//$modulePositions = Factory::getApplication()->getDocument()->loadRenderer('modules')->render($position_name);
echo "<div class='" . $item->position_name_x . "'>" . $modulePositions . "</div>";
}
?>
</div>
</div>
コメントアウトされた部分は空白を示していますが、他のバージョンは機能します。
コンテンツプラグインを使用しても機能しますが、PHPコードでは必要ありません。代わりに、ドキュメントレンダラーを直接使用できます。
use Joomla\CMS\Factory;
echo Factory::getApplication()->getDocument()->loadRenderer('modules')->render($position);
それはおそらく特定の状況に依存します。いくつかの「セカンダリ」モジュールを含むカスタムモジュールがあります。 Modules Anywhere拡張を使用してこれを実現し、挿入するモジュールのコードに{example module}を追加します。ModulesAnywhereを使用するためにモジュール設定にモジュール位置を含める必要はありません。
私はこれをここに残しています。誰かがこれを行う方法を知る必要があります。しかし、上記の答えISより良い。
コンテンツプラグインをオンにする必要があります
OnContentPrepareプラグインイベントをトリガーする
https://docs.joomla.org/Triggering_content_plugins_in_your_extension
Joomlaを作成してしまいました!複数のポジションを追加できるように、サブフォーム。これが私のコードです。
foreach ($subform_items as $item) {
$position_name = "{loadposition " . $item->position_name_x . "}";
$modulePositions = JHtml::_('content.prepare', $position_name, '', 'mod_my_module.content');
echo $modulePositions;
}
これがしていることは:
foreach
を使用して、各ポジションを獲得します。{loadposition yourPositionName}
コードを使用します: https://docs.joomla.org/How_do_you_put_a_module_inside_an_article%3F$position_name_x
のparams
の一部である$item
を呼び出しました。content prepare
がない場合、リテラル文字列{yourPositionName}をエコーし、その位置にあるモジュールはエコーしませんが、content prepare
を使用するとモジュールを送ってください。これはシステムプラグインonContentPrepare
を使用していると思います。それが誰かを助けることを願っています