web-dev-qa-db-ja.com

空のモジュールがレンダリングされないようにするにはどうすればよいですか?

出力がレンダリングされない場合、割り当てられた位置にモジュールが表示されないようにするにはどうすればよいですか?空のモジュールを公開する理由まあ、それは常に空というわけではありませんが、特定の条件が満たされない場合、表示する出力はありませんが、それが公開された空の位置はまだそこにあります。

私はそれをグーグルで調べました、しかしv1.5からの例だけを見つけました、そしてそれらはすべてハックまたはテンプレートの修正です。これはv3 +で対処/修正されていますか?その場合、どうすればそれを達成できますか?.

4
GDP

モジュールが出力を返さない場合(falseを返す)、何も生成されません。モジュールスタイルも生成されません/ chrome(ref:JDocumentRendererModules works)。

5
Anibal

与えられたモジュール位置からのモジュールのコンテンツが空かどうかを確認します。 $ this-> countModules()と組み合わせると、モジュールが存在し、コンテンツが空でない場合、モジュールの位置が表示されます。

function modulesHaveContent( $position ) {  
    $modules = JModuleHelper::getModules( $position );

    foreach($modules as $module) {
        if (!empty($module->content)) {
            $moduleHasContent = true;
        }
    }

    return $moduleHasContent;
}
2
RedNails

結局のところ、Joomlaは出力のプレゼンテーションをテンプレートに任せています。彼らは一般的に$module->countその決定を行うために、そして出力を調べるためのテンプレートの協力なしに、空のブロックが表示されることは完全に理にかなっています。

私は解決策を見つけましたが-私の場合、条件付きモジュール出力を持つページはすべてcom_content記事であるため、モジュール出力を取得するコンテンツプラグインを作成しました。モジュールが表示するものを返した場合、記事の出力を変更しました。 CSSを使用して、モジュールの出力を必要な方法で配置し、私がやろうとしていたことを達成することができました。

1
GDP