我正在使用Joomla 2.5的自定义插件扩展。此插件针对我网站上的单个页面。但出于某种原因,我注意到它在每一页上都加载了css文件。
插件的代码加载此css文件:
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css');
我不认为这很常见,但我不确定插件。我可以使它只应用我想要的页面而不是每一页。关于如何调试这一点的任何想法将不胜感激。
该插件在文章页面上打印一个简单的表格,并使用插件函数onContentPrepare
答案 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;
}