5

Joomla 2.5 でカスタム プラグイン拡張機能を使用しています。このプラグインは、私のサイトの 1 つのページを対象としています。しかし、何らかの理由で、すべてのページに css ファイルが読み込まれていることに気付きました。

プラグインのコードは、次の css ファイルをロードします。

$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');

これが一般的だとは思いませんが、プラグインについてはわかりません。すべてのページではなく、必要なページのみを適用するようにできますか? これをデバッグする方法についてのご意見をいただければ幸いです。

プラグインは記事ページに簡単な表を出力し、プラグイン機能を使用しますonContentPrepare

4

4 に答える 4

5

問題を管理するには、次のスニペットを使用してください。

1) アクティブなメニュー項目をチェックして CSS を読み込みます

$menu = &JSite::getMenu();
$menuItem = $menu->getActive();
$Itemid = $menuItem->id;
if($Itemid!=1)
{
 $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
}

2) コンポーネントに CSS をロードする

if (JRequest::getCmd( 'option' ) == 'com_k2'){
        $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
}

3)ホームページのみCSSを読み込む

<?php if(JRequest::getInt('Itemid') == $menu->getDefault()) {
   $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
}?>

4) アクティブなメニュー ID に CSS をロードする

<?php
$menuID = JSite::getMenu()->getActive()->id ;
  if ($menuID == '6')
  {
   $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
  }
?>

5) アクティブな言語に CSS をロードします。

$lang =& JFactory::getLanguage();
switch ($lang) {
case 'en-gb':
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
break;
}

6) ユーザーに CSS をロードする

$user =& JFactory::getUser();
if($user->get('id')==0){
//user is logged in
 $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
}

7) URL に CSS をロードする

$u =& JFactory::getURI();
if($u=="http://www.example.com/joomla/index.php?task=view&id=12&Itemid=29")
{
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
}
于 2012-12-12T21:04:37.400 に答える
0

プラグインが応答するイベントは何ですか? それはどのグループに属していますか?多くのイベントでは、ページの $context を確認できます。特定のページにのみ読み込まれることがわかっている場合は、それらの識別子を使用してください。

たとえば、これはページネーション プラグインの行です。

if ($params->get('show_item_navigation') && ($context == 'com_content.article') && ($view == '記事')) {

またはロードモジュールからこれ

    $canProceed = $context == 'com_content.article';
    if (!$canProceed) {
        return;
    }
于 2012-12-10T06:40:07.940 に答える
0

次のようなものを使用してみてください。

$application = JFactory::getApplication();
$menu = $application->getMenu();
$item = $menu->getItem(1);
if ($item == 1){
    $doc = JFactory::getDocument(); //Remove it you already have this line
    $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
}

番号「1」をページが属するメニュー項目に変更します。

私はこれをテストしていないので、うまくいくかどうか教えてください。そうでない場合は、何を掘り出せるか見てみます。

于 2012-11-24T19:25:41.613 に答える
0

Itemid中に入ってもうまくいかないと思いますplugin。CSS コードをテンプレート index.php に移動し、そこで動作する itemid 条件を確認することをお勧めします。

于 2012-12-10T05:22:18.653 に答える