根据IF条件更改JOOMLA站点背景

时间:2013-02-18 20:25:52

标签: php joomla joomla2.5 joomla-extensions

我一直试图找到一个解决方案几个小时...任何评论/指导将非常感谢!...谢谢...... 我创建了一个扩展,用于按类别列出不同的产品。 我想要完成的是根据设置的类别改变整个网站的背景,例如:电子设备将是蓝色背景,时尚将是红色背景等...

我有一些问题: 1.类别的排序功能是动态的(下拉列表/提交按钮),因此页面不会更改(仅在模块中显示的内容发生变化),因此我不能对不同的页面使用不同的模板, 2.我无法使用页面后缀来定义新模板。

一个很好的解决方案是php语句,如: if($ categoryId == X) - > set_new_background, 但是网站背景的类是在我正在处理的php文件之外设置的。 同时为DIV设置背景不会改变网站背景。

非常感谢任何想法和帮助! 谢谢!

报道此帖子

3 个答案:

答案 0 :(得分:1)

您的问题有几种方法

1)您可以为每个类别使用模板覆盖,在组件中加载不同的模板

2)您可以加载不同的CSS样式

$document =& JFactory::getDocument();
If ($cat==1){
 $document->addStyleSheet("/mybluetheme.css");
}
else
{
 $document->addStyleSheet("/myredtheme.css");
}

3)您可以使用自定义插件将特定类添加到文档正文中 http://www.rockettheme.com/magazine/jan-2012/1342-creating-a-simple-macro-replacement-plug-in

4)最少但不是最后一次你可以回应身体中隐藏的div指定颜色

<?php 
if($category==1){
$color="#ffffee";
}
else{
$color="#eeeeee";
}
echo "<div class='hiddencolor' style='display:none'>".$color."</div>";
?>

然后使用一些jquery代码

$(document).ready(function() {


        var mycolor = $(".hiddencolor").text();
        alert(mycolor);
        // change the body background css
        $("body").css("background", mycolor);
});

http://jsfiddle.net/zWzvd/

答案 1 :(得分:1)

请参考@ Theodeore上面的答案,它已经相当完整;我唯一要做的就是只使用模板级别的类,这样你就可以在css中定义颜色并为每个类别设置类。

这将是最快的(你不需要查找表):所以只需将folloow的$ catClass添加到body:

if ($option=='com_content' && $view=='category') 
    $catClass = ' cat'.JRequest::getVar('id');

在此之后,$ catClass将包含类似'cat16'的内容,您可以将其添加到您的内容中

所以你可以在模板之前插入上面的代码“

<body class="your classes <?php echo $catClass; ?>">

将输出如下内容:

<body class="your classes cat16">

然后在 css中,您将拥有规则:

body.cat16 {background-image:url(../image1.jpg);}
body.cat18 {background-image:url(../image2.jpg);}

这比拥有单独的css文件更好,因为加载浏览器的速度会快得多。

答案 2 :(得分:0)

您可以尝试这种编辑模板代码的方法。只需要让它充满活力。 http://forum.joomla.org/viewtopic.php?p=2271520

您可以在表格中保存类别的颜色。在页面加载时查询它,并在返回值时使用它为网站的背景着色。基本上将代码放在模板中。

相关问题