web-dev-qa-db-ja.com

配置されているモジュールは1つだけ

PHPをテンプレートindex.phpに追加して、特定の位置に1つのモジュールのみが確実にロードされるようにすることができるかどうか疑問に思っていました。

Advanced Module Managerなど、他にも利用可能なオプションがあることは知っていますが、この特定のサイトでは、ページに直接phpを追加できると便利です。基本的に、2つのモジュールが1つの位置にロードされている場合、最初のモジュールをロードするだけです。

ありがとう。

2
DesignSubway

Lodderのコメントに同意する必要があります...これは本当の意味ではなく、おそらく混乱を招くでしょう。

しかし、あなたの質問に答えるために、そしてあなたがこのような何かを達成する方法を見つけるのを助けるために、あなたは以下のアプローチを試すことができます:

_<?php
  jimport( 'joomla.application.module.helper' );
  $modules = JModuleHelper::getModules( 'yourposition' );
  $attribs = array('style' => 'xhtml');    
  echo JModuleHelper::renderModule($modules[0], $attribs);
?>
_

getModules($position)関数は、あなたの位置にあるすべてのモジュールを、モジュールID順に並べた配列をロードします。

次に、renderModule($module,$attributes)関数を使用して、モジュールを出力します。しかし、配列があるので、配列の要素のインデックスを指定して、どのモジュールをレンダリングするかを通知する必要があります。

ただし、モジュール設定を動的に作成、編集、変更する方法がまだあるため、他のユーザーがWebサイトを管理している場合に、どのモジュールを最後に表示するかを確認することはできません。

したがって、達成しようとしていることとその理由をもう少し詳しく説明すると、適切なソリューションを提案できます。

2
FFrewin

ほとんどのテンプレートはこのようにモジュールをレンダリングします

<?php if ($this['modules']->count('search')) : ?>
<div id="search"><?php echo $this['modules']->render('search'); ?></div>
<?php endif; ?>

$ this ['modules']-> count( 'search')は基本的にモジュールの数なので、特定のページにレンダリングされる検索位置に2つのモジュールがある場合、値は2になります

$ this ['modules']-> render( 'search');の場合、単純に組み込むことができます。 > 1の場合、テンプレートのインデックスファイルの「この位置で許可された1つのモジュール」タイプのコードをエコーし​​ますが、これは実際には標準ではなく、Joomlaの動作方法ではありません。独自のWebサイトの場合は、必ず1つのモジュールのみを設定してください。

小売テンプレートとして、特定の機能が問題を引き起こしていることを確認できます。複数のモジュールをレンダリングできるように、特定のモジュールの位置をスライドショーとしてコーディングすることを検討する必要がありますが、すべてをレンダリングするのではなく、同じスペースでスライドするだけです。すぐに。

お役に立てれば

1
MOLEDesign