2012-10-25 103 views
1

我想要做的事情非常簡單,因爲概念很簡單,但我對php和joomla框架並不擅長。 目前菜單項可以是這樣產生的:將自定義元素添加到Joomla中的主菜單項

<li class="item-101 current active"> 
    <a class="hide-text" href="#some-link">Home</a> 
</li> 

什麼,我想實現的是裏面插入<i>元素只菜單項,像這個:

<li class="item-101 current active"> 
    <a class="hide-text" href="#some-link"><i class="icon-home"></i>Home</a> 
</li> 

我該如何做到這一點?我正在使用Joomla! 2.5 atm

我想可能會做類似於「如果這個菜單項是家庭鏈接,然後在<a>標籤內添加此代碼」但我真的不知道該怎麼做,我的PHP不夠強大:P

注:
我這樣做,以實現一個簡單的家庭圖標,而不是litteral 菜單項。
由於類語法可以建議,我使用的是Twitter的引導 CSS框架,但我已經實現了Icomoon字體集(如3.0的Joomla)而不是TBS雕文,圖標精靈圖片。
不幸的是,使用基於字體的圖標,文字規則也適用於圖標,這就是我試圖在<a>標籤內插入自定義元素的原因,這樣我就可以覆蓋隱藏家居圖標的hide-text類,圖標。

感謝您的任何建議!

回答

5

查看菜單模塊的模板文件。

/modules/mod_menu/tmpl/default.php

該模板建立的菜單模塊的HTML。

我剛剛檢查了它在Joomla 2.5中的工作方式,以及在/modules/mod_menu/tmpl/default.php模板中構建的列表。如果你想添加到只有家庭鏈接,你必須添加一點點的代碼。事情是這樣的:

if($item->home == '1'){ $item->title = '<i class="icon-home"></i>' . $item->title; }; 

插入這個剛下foreach循環,並有一展身手,就應該是這個樣子:

foreach ($list as $i => &$item) : 
    // THIS ADDS THE <i> to only the HOME LINK 
    if($item->home == '1'){ $item->title = '<i class="icon-home"></i>' . $item->title; }; 

    $class = 'item-'.$item->id; 
    if ($item->id == $active_id) { 
     $class .= ' current'; 
    } 

好運;)

+5

你可能是正確的,但編輯核心的Joomla FLES是一個壞主意。我會建議在添加此代碼之前製作模板覆蓋;) – Lodder

+0

親愛的@Lodder,我是對的,至少我確信它在Joomla 2.5中。 請隨時通過關於如何正確添加模板覆蓋到joomla模板的詳細教程來擴充我的建議。 ;) –

+0

這確實起作用了,並且@Lodder提到的覆蓋也是正確的,混合這是非常好的! '標題'技巧非常漂亮,謝謝! – Gruber

0

我一直在關注這個(感謝Gruber和Mark Vink),但使用glyphicons代替IcoMoon。我發現上面的例子中有一個語法錯誤。爲我工作的版本帽子

foreach ($list as $i => &$item) { 

if($item->home == '1')$item->title = '<span class="glyphicon glyphicon-home" aria-hidden="true"></span>' .$item->title; 
$class = 'item-' . $item->id 

等等

+0

但是完成了所有這些,我仍然無法隱藏我不需要的鏈接文本。請問是否有解決方法? – debonator

相關問題