【问题标题】:Change JOOMLA site background according to IF condition根据 IF 条件更改 JOOMLA 站点背景
【发布时间】:2013-02-18 20:25:51
【问题描述】:

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

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

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

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

举报此帖

【问题讨论】:

    标签: php joomla joomla2.5 joomla-extensions


    【解决方案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 文件要好,因为它在浏览器上加载会更快。

    【讨论】:

    • 谢谢,但我的 jquery expreinece 很少...我正在尝试加载新样式表...
    • 这是 not jQuery,它是 php:我更改了答案以插入新代码
    • 谢谢!抱歉耽搁了这么久,我试图在我的网站上实施您的解决方案。我遇到了一个问题,在我的网站 template.php 中,设置背景的 css 类在包含标题和正文的 div 中声明,所以如果我设置一个新的身体等级,什么都不会改变。我需要做的是为该 div 设置一个新类,但我无法使用 IF 条件执行此操作,因为 $cat veriable 尚未初始化......它仅在 template.php 和 $option 之后加载, $view 不包含任何相关数据......有什么想法吗?非常感谢您的帮助!
    • 等等,你写了一个 div 包括标题和正文:我希望你不是说
      ... 只能在 内)。但是,如果它是标题和“主要内容”,只需使用包含 div 的 css 选择器,例如:body.cat18 div.header>div 或您的标记需要的任何内容。
    • 实际上模板是由artisteer生成的,div在body标签里面,但是背景色是在那个div id里面设置的,而不是body标签里面,你可以看到我对php很陌生和 css :) 你的解决方案有效,但由于某种原因,如果我在 temlate.php 中设置 如果我在组件代码中设置了 它不会覆盖它,因为首先加载了template.php的正文,所以我将为这个案例创建一个新问题......非常感谢您的帮助,非常感谢!你让我这么难...谢谢!
    【解决方案2】:

    有几种方法可以解决您的问题

    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/

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签