2014-05-25 47 views
1

我想給Joomla 3.3.0的首頁分配一個特定的模塊。使用菜單分配部分提供的設置,幾乎不可能做到這一點。Joomla 3.3:只將模塊分配給FrontPage

當我選擇'Only on the pages selected'(並且只選擇我的首頁)時,它顯示在我的首頁上並從菜單中的所有頁面中消失。但是,在沒有分配給任何菜單的每個頁面上,我的模塊也顯示出來。這很奇怪,因爲我只想在選定的頁面(我的首頁)上顯示它。

我搜遍了整個網絡,但我只能找到一些關於這個問題的舊版本的Joomla的文章。解決方案是將每一篇文章分配到一個未發佈的菜單。這是很多工作,因爲我要每天發表多篇文章。有什麼辦法可以簡化嗎?例如,通過在我的模板的index.php中編碼?像:

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

(但因爲它是寫爲Joomla 1.5或使代碼不起作用)

對這個有什麼想法?

回答

0

兩個@Lodder和@TsybaSasha的答案是確定的,但他們不回答@最大的問題:

你需要添加額外的檢查,看看你是否真的在首頁。根據需要確保使用盡可能多的參數。例如,使用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 
} 

以類似的方式,你可以添加其他的檢查:如果您的精選觀點只適用於一個特定的類別,你可能會檢查這個,等

+0

請務必一提的是使用'$ input-> getCmd('option')=='com_content'' will only ** only work if you have a view from * com_content * assigned to your homepage。如果分配了其他組件,它將不起作用。你的回答是正確的,但是加入比已經做的更多的檢查只是矯枉過正。更不用說**如果用戶決定更改分配給首頁的組件,他們需要記住更新此代碼 – Lodder

0

JRequest已被棄用,所以如果你要檢測的頭版,你可以使用以下命令:

$app = JFactory::getApplication(); 
$menu = $app->getMenu(); 
if ($menu->getActive() == $menu->getDefault()) { 
    //You are in! 
} 
else { 
    // You are out! 
} 
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隊長)

我確實發現,來取代「以'我是能夠添加使用HTML」,如下

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