我想在Opencart中为各个产品添加不同的颜色。
我不想更改样式表css文件以修改所有产品名称样式。由于管理员端的产品名称字段不接受任何HTML代码,它接受它但不会使用编码来显示想要的颜色,如红色。它只显示产品名称中的html编码。
有没有人知道这个?
答案 0 :(得分:1)
我明白了。 我更改了我的目录/视图/主题/默认/模板/产品/ category.tpl行号149
由此:
<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
到这个
<?php $newproductname = $product['name']; ?>
<div class="name"><a href="<?php echo $product['href']; ?>">
<?php
$newproductname2 = str_replace('CHEAP','<font style="color:red; text-decoration: strong">CHEAP</font>',$newproductname);
echo $newproductname2;
?>
我知道这是一团糟,但它适用于我,因为我只需要它向我的客户展示哪些产品是“便宜”
感谢所有人
答案 1 :(得分:0)
因此我们假设您将产品名称保存为<span style="color:red;">Apple Cinema 30</span>
当它被保存时,db会变成<span style="color:red;">Apple Cinema 30</span>
所以基本上html在保存到数据库之前被编码
所以当你简单地回显它打印为编码字符串的名称,然后html将其显示为<span style="color:red;">Apple Cinema 30</span>
,你不想这样做。
方法1
所以基本上在通过php打印名称之前,您需要使用html_entity_decode()
对其进行解码,以便浏览器可以解析html。
例如在product.tpl
中有一个声明<?php echo $heading_title; ?>
需要更改为
<?php echo html_entity_decode($heading_title, ENT_QUOTES, 'UTF-8'); ?>
正如您可能认为这是一个非常痛苦的步骤,基本上您需要找出打印名称的每个地方并替换它。
现在出现警告:像标签标题一样,html会被视为纯文字,因此标题标题会显示<span>....
所以我们认为这是一个糟糕的方法< /强>
方法2
与方法1相同,但不是替换文本,而是可以在catalog/model/catalog/product.php
函数的getProduct($product_id)
替换它。替换
'name' => $query->row['name'],
与
'name' => html_entity_decode($query->row['name'], ENT_QUOTES, 'UTF-8'),
但这种方法与方法1有相同的问题。
现在我们拒绝了错误的方法
正确的方法
在product_id
中创建一个新的数据库表,其中language_id
,product_name_html
到product_name_html
的映射会保存您的新html标题。
现在有两种类型的名称,你可以在你想要的地方显示这个新的(html)名称(显然在被视为html而不是纯文本的地方),而不会打扰地方所需的纯文本名称标签标题,纯文本电子邮件等。
这需要相当多的编码,例如首先将html名称从admin端保存到db,然后在模型文件中编辑getProduct()
类型的函数以获取您的特殊名称以及其他产品详细信息,然后替换以下代码:你感兴趣的地方
答案 2 :(得分:0)
实际上,您需要指定您将为这些产品控制的价值,它是一般的制造商,还是特定的产品,如名称。
然而,这里有一个你可以使用的PHP代码,我以前用过同样的情况,但是根据制造商进行过滤:
if(isset($product_info['manufacturer']) && $product_info['manufacturer']=='something'){ //some comparison
$this->document->addStyle('catalog/view/stylesheet/style.css'); //route to you style file
}
在该文件中放置要覆盖的CSS。这段代码是针对product.php控制器的,但你可以在任何地方都遵循这个逻辑,这是opencart自己处理特定.css以及特定页面的.js的默认方式。
希望我能帮到你。答案 3 :(得分:-1)
在stylesheet.css中修改元素
.product-list .name a{
color:#FF0000 !important;
}
在第935行或附近。