您好,请阅读整个问题,这不仅仅是通过仅为搜索页面启用模块来解决的:
我有几个模块专门显示在 Joomla 的搜索页面上。
我还为搜索创建了一个隐藏的菜单条目,以便告诉模块仅在此页面上显示。这没问题,但是当我单击其中一个结果并重定向到实际结果时,应该只显示在搜索页面上的模块仍然显示在结果页面中。
任何线索如何解决这个问题?真的很烦人,因为我使用 3rd 方搜索增强模块,并且它们显示在结果中。
使用标准的 Joomla,无法将模块仅定位到搜索结果页面,也没有任何链接到结果的页面——但我知道你知道这一点!隐藏的菜单项是一种帮助,但不会更改该页面上某些链接的菜单项。这与Joomla中“Itemids”的分配和使用有关。
为了能够更具体地定位模块,您需要使用 3rd-party 扩展。我开发了 MetaMod (www.metamodpro.com) 来应对这个用例。MetaMod 是一个包装器模块,它可以决定包含(或不包含)哪个其他模块。因此,您将 MetaMod 分配给页面,然后将一段代码放入 MetaMod 中,以决定要包含哪个其他模块。
在这种情况下,我会在 MetaMod 中使用以下内容:
if ($core_genius->check("pagetype = search, searchresults")) return XXX;
// replace XXX with the module id of the module to include
// ONLY on the search page, or the searchresults page, but
// no other type of page.
希望有帮助,
斯蒂芬
尽管 MetaMod 很棒(我自己用过,而且 Stephen 的支持很棒!)还有另一种方法可以在不使用 3rd 方扩展的情况下做到这一点。
您可以在您想要使用的模块位置上方(或下方)的模板中创建新的模块位置,并将它们包装在 if 语句中,如下所示:
<?php if(!isset(JRequest::getString('searchword'))) : ?>
<jdoc:include type="modules" name="right-search" style="xhtml" />
<?php endif; ?>