2013-02-25 144 views
1

你好,請閱讀整個問題,這不僅僅是通過啓用僅用於搜索頁面的模塊來解決:如何僅在Joomla 2.5的搜索結果中顯示模塊?

我有幾個模塊,專門顯示在Joomla的搜索頁面。

我爲搜索創建了一個隱藏菜單條目,以便告訴模塊只顯示在此頁面上。這可以正常工作,但是當我單擊其中一個結果並重定向到實際結果時,那麼應該只顯示在搜索頁面上的模塊仍會顯示在結果頁面中。

任何線索如何解決這個問題?真的很煩人,因爲我使用第三方搜索增強模塊,並在結果中顯示。

+0

** **第一季度 - 哪個版本的你使用的是Joomla,搜索增強模塊是什麼? ** Q2 ** - 你說的是(1)有一個鏈接爲'domain.com/abc/page.php'的鏈接的搜索結果,點擊它可以打開鏈接的網頁,其中的模塊不是在那裏但是隻能在搜索頁面上顯示,並且(2)如果直接通過粘貼到地址欄或菜單鏈接直接打開相同的url domain.com/abc/page.php,則不會顯示這些模塊? ** Q3 ** - 搜索結果中的鏈接是「domain.com/abc/page.php」還是附加了其他任何字符串? – 2013-02-25 14:47:54

回答

1

使用標準的Joomla,無法將模塊定位到搜索結果頁面,也沒有任何鏈接結果的頁面 - 但我知道你知道這一點!隱藏的菜單項是一個幫助,但不會更改該頁面某些鏈接的菜單項。這完全與Joomla中「Itemids」的分配和使用有關。

爲了能夠更具體地定位模塊,您需要使用第三方擴展。我開發了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. 

希望幫助,

斯蒂芬

0

雖然MetaMod是偉大的(我已經用它自己&斯蒂芬支持非常棒!)還有另一種方法可以不使用第三方擴展。

您可以創建在你的模板高於(或低於)你想使用和if語句,像這樣包起來的模塊位置的新模塊的位置:

<?php if(!isset(JRequest::getString('searchword'))) : ?> 
    <jdoc:include type="modules" name="right-search" style="xhtml" /> 
<?php endif; ?> 
+0

對不起,誤解了這個問題。我相應地修改了答案。 – 2013-02-27 15:22:32