0

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

我有几个问题: 1. 类别的排序功能是动态的,(下拉列表/提交按钮)所以页面不会改变(只有它在模块中显示的内容会改变)所以我不能为不同的页面使用不同的模板, 2. 我不能使用页面后缀来定义一个新的模板。

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

任何想法和帮助将不胜感激!谢谢!

举报此帖

4

3 回答 3

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/

于 2013-02-18T21:05:00.893 回答
1

请参考上面@Theodeore 的回答,相当完整;我要做的唯一补充是只在模板级别使用类,因此您可以在 css 中定义颜色并为每个类别设置类。

这将是最快的(您不需要查找表):因此只需将以下 $catClass 添加到正文:

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 文件要好,因为它为浏览器加载会快得多。

于 2013-02-20T07:59:54.690 回答
0

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

或者

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

于 2013-02-18T21:10:00.397 回答