モジュールを複数の位置に表示


8

モジュールを複数の位置に、できればネイティブに、またはサードパーティの拡張機能を介して表示することはできますか?

私は回避策があることを知っています...

  • モジュールのクローンを作成して位置を変更しますが、モジュールにカスタムHTMLなどが含まれている場合、これは面倒であり、頻繁に変更される可能性があります。
  • load構文を使用して、必要な場所にモジュールをドロップしますが、他のモジュールを保持するためだけにモジュールが作成されます

しかし、どちらも私がむしろ望んだ余分なメンテナンス作業を作成します。

回答:


1

nonumbersモジュールはどこでも使用できます。

http://www.nonumber.nl/extensions/modulesanywhere/userguide

コアにあるloadpositionバージョンとは異なり、記事だけでなくモジュールでも使用できます。したがって、2番目のカスタムhtmlモジュールを作成し、最初の位置を呼び出すことができます。これにより基本的には位置のコピーが得られますが、最初のモジュールで変更した設定は2番目の「クローン」にも適用されます。


@Jordanを見てくれて乾杯ですが、Modules Anywhereなしでこれを行うことができます-docs.joomla.org/How_do_you_put_a_module_inside_an_article%3F(カスタムHTMLモジュールは、loadコンテンツの準備を「はい」に設定した場合、構文を受け入れます)。 2番目の回避策。
codehands 2014年

うーん、良いメモ、私の経験では、それがうまくいかず、私が試した特定のバージョンのバグであった可能性があります。それ以来、実際には試していない。
ジョーダンラムスタッド2014年

どこでもモジュールの問題は、それがキャッシングを行わないことです(ここでの私たちの経験を参照してください:itoctopus.com/…)。これは、重いモジュールの場合、キャッシュから取得されるだけでなく、常に再作成されることを意味します(そのファイルのキャッシュファイルが存在する場合でも)。
itoctopus 2016

1

単純なプラグインを作成し、次のようなものを使用してモジュールを(ループを使用して)複数の位置に公開することをお勧めします。

$document   = &JFactory::getDocument();
$renderer   = $document->loadRenderer('modules');
$options    = array('style' => 'xhtml');
for ($x=0; $x<=5; $x++) {
     $position   = 'myPosition' . $x;
     echo $renderer->render($position, $options, null);
}
// Repeat for each module position, changing only $position

(未検証)

今日、もっと完全なものを組み立てられるかどうかを確認します。


1

簡単なレベルでこれを試すことができます:

これが単一のモジュールになり、表示する場所をすでに定義している場合は、テンプレート内に特別なモジュールの位置を作成し、必要な場所で、2つまたは必要な数だけ呼び出しを行うことができます。テンプレート。それはあなたがそれを呼ぶところはどこでもその位置のモジュールをロードします。

より多くのモジュールがあり、より多くの位置にこれを適用したい場合でも、モジュールの制御や複雑な外観が必要な場合を除いて、上記のアプローチは問題ない可能性があります。モジュール。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.