0

伙计们,我正在尝试在 Joomla 中实现一个基本功能,但我没有运气。

我的客户已经为 Joomla 设置了几个部分;每个部分都有自己的类别和最终内容。

我需要每个部分都有一个稍微不同的颜色分量(例如,A 部分及其所有后续子页面红色,B 部分 - 蓝色等);根据每个部分,某些边框和背景需要是唯一的。

我有一个所有部分都使用的主题。在主题文件的某处,我需要检测我所在的部分,并根据该部分相应地设置一个 css 变量:

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

    </body>
</html>

我所需要的只是将我的身体类别设置到正确的部分,并且我的所有颜色都已设置为可以神奇地工作。

任何想法如何在 Joomla 世界中做到这一点?有没有另一种方法来做这样的事情。

4

2 回答 2

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; ?>">

应该这样做。

于 2009-05-21T15:13:42.357 回答
0

有几种方法可以实现 body css-classing:

  1. 利用 Joomla 的菜单页面类后缀系统。
  2. 根据模板中选定的菜单链接输出类。当然,如果您打算这样做,则需要稍微修改您的模板。

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

于 2009-04-30T06:06:39.320 回答