web-dev-qa-db-ja.com

Chrome問題:Joomlaモジュールからdiv class =” custom”を削除する方法

また、「divにラップされているJoomlaモジュールを停止する方法」を解決しようとしている場合にも、この質問が関連することがあります。

問題は何ですか?

モジュールをJoomlaに含めると、以下のようにdivタグでラップされます。

<div class="custom">
 Module content
</div>

モジュールをカプセル化/ラップしたくありません。ページレイアウトで問題が発生するため。状況によっては、CSSスタイルで修正できる場合もありますが、すべての状況に当てはまるわけではありません。

私のセットアップと私が失敗したこと

スタイリングしようとしたモジュールが記事に含まれていました。

  1. 記事のスタイルをなしに設定する-{loadmodule module, title, style}実際のコードは{loadmodule mod_custom, mymodule, none}でした
  2. Extensions-> Module Managerに移動してスタイルをnoneに設定し、divにラップされたくないモジュールをクリックします。次に、Advanced-> Module Style = None. configure module chrome style via settings

上記はうまくいくはずだと確信していました。上記のスタイリングを担当するコードはtemplates/system/html/modules.phpにあり、

/*
 * none (output raw module content)
 */
function modChrome_none($module, &$params, &$attribs)
{
    echo $module->content;
}
  1. 次の失敗、私はExtensions-> Plugin Manager-> Content Load Modulesに行きました–値をno wrappingに変更しました(生出力). Plugin- Content Load set to raw

それもうまくいきませんでした! WoopDeeDoo!モジュールがclass=”custom”でdivにラップされているのを確認できました

この問題を解決するにはどうすればよいですか?

4
TryHarder

解決策は、\modules\mod_custom\tmpl\default.phpのモジュールオーバーライドを作成することでした。

そのファイルの問題のコードは

<div class="custom<?php echo $moduleclass_sfx ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage');?>)"<?php endif;?> >
    <?php echo $module->content;?>
</div>

上記のコードを取得して編集し、templates/current-site-template/mod_custom/default.phpのオーバーライドに追加しました。新しいコードは

<?php echo $module->content;?>

これで問題が解決しました。


追加情報

私の理解から、オーバーライドは私のサイトで公開されているすべてのモジュールからdivを削除します。特定のモジュールにスタイルを適用したい場合もあるので、最初はこれは望ましくないと思いましたが、その後、HTMLコードを再調査しました。これは、HTMLの外観モジュールのオーバーライド前が適用され、なしのクロムスタイルが使用された方法です。

<div class="custom"  >
    Module content
</div>    

これは、HTMLの外観モジュールのオーバーライド前が適用され、html5のクロムスタイルが使用された方法です。

<div class="moduletable">
    <div class="custom"  >
        Module content
    </div>
</div>

つまり、必要に応じて、特定のモジュールにカスタムdivとクラスを適用することもできますモジュールのオーバーライドを使用している間chrome style as html5を選択した場合、

<div class="moduletable">   
    Module content  
</div>

オーバーライドをnoneのクロムスタイルで使用した場合、

Module Content
6
TryHarder

このモジュールでも同じ問題が発生していました。私たちが使用している新しいJoomlaバージョンでは何かが発生する可能性がありますが、ooooooの答えを得ることができませんでした。従う必要があるわずかに新しいディレクトリ構造があります(Joomla 3.6.2を使用しています)。オーバーライドは、テンプレート内の「html」ディレクトリに配置する必要があります。

https://docs.joomla.org/How_to_override_the_output_from_the_Joomla!_core

PATH_TO_JOOMLA/components/com_content/views/article/tmpl/default.php
to
TEMPLATE_NAME/html/com_content/article/default.php

これはモジュールを使用した別の例です

PATH_TO_JOOMLA/modules/mod_login/tmpl/default.php
to
TEMPLATE_NAME/html/mod_login/default.php

含まれているだけのmod_customの空のdefault.phpテンプレートを作成する必要がありました

<?php echo $module->content;?>

入れて

/templates/my-templates/html/mod_custom/default.php

それから初めて、Joomlaが私のモジュールを包んでいる余分な綿毛をすべて取り除くことができました。モジュールhtmlのみを表示するオプションがあり、それ以外はありません。

2
Eko3alpha

「モジュールテーブル」ラッパーを取り除くには、モジュールスタイルを作成するだけです。

Templates/your_template/htmlフォルダーに、「modules.php」という名前のファイルを作成します。

<?php    
    function modChrome_BoHivex($module, &$params, &$attribs) { 
        $module_class_sfx = htmlspecialchars($params->get('moduleclass_sfx'));
        ?>
        <div class="custom<?php echo $moduleclass_sfx; ?>" <?php if ($params->get('backgroundimage')) : ?> style="background-image:url(<?php echo $params->get('backgroundimage'); ?>)"<?php endif; ?> >
           <?php echo $module->content; ?>
        </div>
        <?php
    }

新しい関数を追加するだけでスタイルを追加でき、出力を完全にカスタマイズして「モジュールテーブル」ラッパーを取り除くことができます。

モジュールのバックエンド->高度な->モジュールスタイルでスタイルを見つけることができます。

特別なヒント:/ htmlフォルダーにpagination.phpを追加することで、同様の方法でcom_contentのページネーションをオーバーライドできます。

「カスタム」ラッパーを取り除くには、templates/your_template/html/mod_custom/your_override.php:にオーバーライドを追加します

<?php
   defined('_JEXEC') or die;

   echo $module->content;

スタイル関数でHTMLなしでエコー出力を実行し、オーバーライドでHTMLを出力することも可能です。

1
Dennis Heiden