伙计们,我正在尝试在Joomla中实现一个基本的功能,但没有运气让我的头脑周围。
我的客户已经为Joomla设置了几个部分;每个部分都有自己的类别,最终还有内容。
我需要每个部分都有一个稍微不同的颜色组件(例如A部分及其所有后续子页面为红色,B部分为蓝色等);根据每个部分,某些边界和背景需要是唯一的。
我有一个主题供所有部分使用。在主题文件的某个地方,我需要检测我所在的部分,并根据该设置相应的css变量:
<html>
<body class="cars-section">
</body>
</html>
我所需要的只是将我的身体类设置到正确的部分,并且我的所有着色都已设置为神奇地工作。
任何想法如何在Joomla世界中做到这一点?还有另一种方法可以做这样的事情。
答案 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:
根据模板中选定的菜单链接输出班级。当然,如果您打算这样做,您需要稍微修改一下模板。
$ menu =&amp; JSite :: getMenu();
$ active = $ menu-&gt; getActive();
&lt; body&lt;?php if($ active-&gt; alias)echo'class =“'。$ active-&gt; alias。'”'?&gt;&gt;