joomla插件扩展在每个页面上加载css文件

时间:2012-11-24 18:50:49

标签: css joomla joomla2.5

我正在使用Joomla 2.5的自定义插件扩展。此插件针对我网站上的单个页面。但出于某种原因,我注意到它在每一页上都加载了css文件。

插件的代码加载此css文件:

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

我不认为这很常见,但我不确定插件。我可以使它只应用我想要的页面而不是每一页。关于如何调试这一点的任何想法将不胜感激。

该插件在文章页面上打印一个简单的表格,并使用插件函数onContentPrepare

4 个答案:

答案 0 :(得分: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)在网址上加载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');
}

答案 1 :(得分: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”更改为页面所属的任何菜单项。

请注意我没有测试过这个,所以请告诉我它是否有效。如果没有,我会看到我可以挖掘的东西。

答案 2 :(得分:0)

我不认为在Itemid内获取plugin会有效。我有一个建议,你在模板index.php中移动css代码并检查itemid条件它将在那里工作。

答案 3 :(得分:0)

该插件响应什么事件?它是什么组?对于许多事件,您可以检查页面的$ context。如果您知道它只会在某个页面上加载,请使用这些标识符。

e.g。这是分页插件中的一行:

if($ params-&gt; get('show_item_navigation')&amp;&amp;($ context =='com_content.article')&amp;&amp;($ view =='article')){

或来自loadmodule

    $canProceed = $context == 'com_content.article';
    if (!$canProceed) {
        return;
    }