Joomla 3.3:仅将模块分配给frontpage

时间:2014-05-25 11:12:51

标签: php joomla

我想在Joomla 3.3.0中只为我的首页分配一个模块。使用“菜单分配”部分中提供的设置,几乎不可能完成这一操作。

当我选择“仅在所选页面上”(并且只选择我的首页)时,它会显示在我的首页上,并从菜单中的所有页面中消失。但是,在每个未分配给任何菜单的页面上,我的模块也会出现。这很奇怪,因为我只想在所选页面(我的首页)上显示它。

我在整个网络上搜索过,但我只能在旧版本的Joomla中找到一些关于此问题的文章。解决方案是将每篇文章分配给未发布的菜单。这是很多工作,因为我每天要发表几篇文章。有什么方法可以更简单吗?例如,通过我的模板的index.php编码?像:

if(JRequest::getVar('view') == "frontpage" ) {
    //You are in!
}
else {
    //You are out!
}

(但该代码不能像Joomla 1.5那样编写)

对此有何想法?

3 个答案:

答案 0 :(得分:0)

不推荐使用

JRequest,因此如果您想要检测首页,可以使用以下内容:

$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
     //You are in!
}
else {
     // You are out!
}

答案 1 :(得分:0)

@Lodder和@TsybaSasha的答案都没问题,但他们没有回答@ max的问题​​:

您需要添加其他检查,以确定您是否确实在首页上。根据需要使用尽可能多的参数。例如,使用Lodders方法,没有语言:

$app = JFactory::getApplication();
$menu = $app->getMenu();

如果您的首页是特色文章菜单项,请检查是否是这种情况:

<?php 
$input=Jfactory::getApplication()->input; 
if ($menu->getActive() == $menu->getDefault() 
&& $input->getCmd('view')=='featured' && $input->getCmd('option')=='com_content' ) {
//You are in, and will seldom fail, but could still fail if someone adds a link like
// index.php?option=com_content&view=featured&Itemid=101 where 101 is your start menu item
}

以类似的方式,您可以添加其他支票:如果您的特色视图仅对特定类别有效,您可以查看此等等。

答案 2 :(得分:0)

这对我有用:(joomla v3.5.1)

if (preg_match('/index\.php$/',$_SERVER['PHP_SELF'])) {
    echo "this is the homepage";
}

发现于:https://stackoverflow.com/a/15282604/1289179(谢谢Payalytic船长)

我确实发现更换&#34;用&#39;我能够使用&#34;添加html。如下

if (preg_match('/index\.php$/',$_SERVER['PHP_SELF'])) {
  echo '
    <div id="header">
        <jdoc:include type="modules" name="header" />
    </div>  
  ';
 }