我一直试图找到一个解决方案几个小时...任何评论/指导将非常感谢!...谢谢...... 我创建了一个扩展,用于按类别列出不同的产品。 我想要完成的是根据设置的类别改变整个网站的背景,例如:电子设备将是蓝色背景,时尚将是红色背景等...
我有一些问题: 1.类别的排序功能是动态的(下拉列表/提交按钮),因此页面不会更改(仅在模块中显示的内容发生变化),因此我不能对不同的页面使用不同的模板, 2.我无法使用页面后缀来定义新模板。
一个很好的解决方案是php语句,如: if($ categoryId == X) - > set_new_background, 但是网站背景的类是在我正在处理的php文件之外设置的。 同时为DIV设置背景不会改变网站背景。
非常感谢任何想法和帮助! 谢谢!
报道此帖子
答案 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);
});
答案 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
或
您可以在表格中保存类别的颜色。在页面加载时查询它,并在返回值时使用它为网站的背景着色。基本上将代码放在模板中。