2009-04-30 39 views
0

夥計們,我試圖在Joomla中實現一個基本功能,但沒有運氣讓我的頭靠近它。確定哪一部分正在查看

我的客戶已經安裝Joomla的幾個部分;每個部分都有自己的類別,並最終包含在下面的內容。我需要每個部分有一個稍微不同的顏色部分(例如,部分A及其所有後續的子頁面紅色,部分B-藍色等);我需要每個部分有一個不同的顏色組件根據每個部分,某些邊框和背景必須是唯一的。

我有一個主題,所有部分都使用它。某處在主題文件,我需要檢測我在哪個部分,並基於該設置CSS變量相應:

<html> 
    <body class="cars-section"> 

    </body> 
</html> 

所有我需要的是我的身體的類設置爲正確的部分,我所有的着色已被設置爲神奇的工作。

任何想法如何可以在Joomla世界做到這一點?有沒有另一種做這種事情的方法。

回答

0

有一對夫婦的方式來實現身體的CSS-分級:

  1. 利用Joomla的菜單頁面的類後綴系統。
  2. 根據模板中選定的菜單鏈接輸出類。當然,如果你打算這樣做,你需要稍微修改你的模板。

    $ menu = & JSite :: getMenu();
    $ active = $ menu-> getActive();
    < body <?php if($ active-> alias)echo'class =「'。$ active-> alias。'」'? > >

+0

這將使我獲得當前頁面的別名。如果我的部分只有一個頁面,這將工作正常。 但是,部分可以具有子頁面的層次結構。如果有人點擊最深的子頁面,該怎麼辦?別名將返回該子頁面的別名,而不是通知我根部分的名稱。 – Hady 2009-04-30 06:09:48

1

您需要從請求中選擇部分ID。

使用該工具來獲取相關的請求變量:

<?php 
$option = JRequest::getWord('option', null); 
$view = JRequest::getWord('view', null); 
$idalias = JRequest::getVar('id', null); 
if (strpos($idalias, ":") != false) { 
    $idandalias = explode(":", $idalias); 
    $id = $idandalias[0]; 
} else { 
    $id = JRequest::getInt ('id' , 0); 
} 

然後使用這樣的事情,看看你是什麼節,如果你是一個部分頁:

if ($option=="com_content" && $view=="section") { 
    $sectid = $id; 
} 

在第您可以只使用請求的頁面,但在其他頁面中,您還需要執行數據庫查詢:

else { 
    $database =& JFactory::getDBO(); 
    if ($option=="com_content" && $view=="category") { 
    $query = "SELECT section FROM jos_categories WHERE id=$id"; 
    } 
    if ($option=="com_content" && $view=="article" } { 
    $query = "SELECT sectionid FROM jos_content WHERE id=$id"; 
    } 
    $database->setQuery($query); 
    $sectid = $database->loadResult(); 
} 

當你有章節ID時,你可以用它來設置和插入正確的類。

if ($sectid == '3') { 
    $my_cars_section_class = 'three'; 
} 
?> 
<body class="<?php echo $my_cars_section_class; ?>"> 

這樣的事情應該這樣做。