确定正在查看哪个部分

时间:2009-04-30 05:49:39

标签: joomla

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

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

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

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

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

    </body>
</html>

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

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

2 个答案:

答案 0 :(得分: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; ?>">

这样的事情应该这样做。

答案 1 :(得分:0)

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

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

    $ menu =&amp; JSite :: getMenu();
    $ active = $ menu-&gt; getActive();
    &lt; body&lt;?php if($ active-&gt; alias)echo'class =“'。$ active-&gt; alias。'”'?&gt;&gt;