【问题标题】:Joomla 3.3: Assign module only to frontpageJoomla 3.3:仅将模块分配给首页
【发布时间】:2014-07-14 07:35:01
【问题描述】:

我想在 Joomla 3.3.0 中仅将某个模块分配给我的首页。使用菜单分配部分中提供的设置,几乎不可能做到这一点。

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

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

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

(但该代码无法正常工作,因为它是为 Joomla 1.5 左右编写的)

对此有什么想法吗?

【问题讨论】:

    标签: php joomla


    【解决方案1】:

    @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
    }
    

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

    【讨论】:

    • 请务必提及,如果您将 com_content 中的视图分配给您的主页,则使用$input-&gt;getCmd('option')=='com_content'有效。如果您分配了另一个组件,它将不起作用。您的答案是正确的,但是添加比已经完成的更多检查只是矫枉过正。更不用说如果用户决定更改分配给首页的组件,他们需要记住更新此代码
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      我确实发现用 ' 替换 " 我可以使用 " 添加 html,如下所示

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 2019-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多