我想在我的清关类别中列出的所有产品上叠加“清除”图标。
用户显然会在其出现的其他类别下浏览产品。
所以我想在每个页面上列出产品时,我需要检查它所属的其他类别,如果它在'许可'中则添加一些额外的标记。
我很好用后来造型。即使我可以添加
<div class="clearance-tag"></div>
在产品图像下方,我可以为其指定背景图像,并将其浮动/定位到我需要的位置。
我害怕Magento我经常知道我想要编写什么代码/逻辑,不知道在哪里写它。
有人可以帮忙吗? 我正在使用Magento 1.6
答案 0 :(得分:1)
首先获取产品的类别ID然后循环此数组;
<?php
/* get categories from product */
$categoryIds = $product->getCategoryIds();
/* looping the array of the category ids */
foreach($categoryIds as $categoryId) {
$category = Mage::getModel('catalog/category')->load($categoryId);
?>
此代码为您提供categoryId,如果产品具有指定的类别,则可以设置一些css类。
答案 1 :(得分:0)
查看类别页面的来源,body元素应该已经有一些有用的类名,如category-clearance
(从URL键推导出来),您可以直接在样式表中使用它。按照您的建议添加DIV元素,然后使用:
.category-clearance .clearance-tag {
background-image: url(etc...)
}
这是一个非常有用的技巧,几乎所有页面上的类名都是自动的。例如,主页由CMS模块提供,因此获取类名cms-home
- 这意味着您可以创建特定于主页的样式。
答案 2 :(得分:0)
做到了。这是怎么回事。
1)从base复制文件:
应用/设计/前端/碱/默认/模板/目录/产品/ list.phtml 应用程序/设计/前端/碱/默认/模板/目录/产品/ view.phtml 强>
到您的自定义设计包。
应用/设计/前端/ mydesignpackage /default/template/catalog/product/list.phtml 应用程序/设计/前端/ mydesignpackage /default/template/catalog/product/view.phtml 强>
在 list.phtml 中找到行(第86行)
<?php // Grid Mode ?>
<?php $_collectionSize = $_productCollection->count() ?>
<?php $_columnCount = $this->getColumnCount(); ?>
<?php $i=0; foreach ($_productCollection as $_product): ?>
然后立即插入以下代码:
<?php
//get all categories associated with this product
$categories = $_product->getCategoryIds();
$clearance_category = 134; //clearance category id
if(in_array($clearance_category, $categories)) {
$clearancetag='<div class="clearance-tag">Clearance</div>';
}
else {
$clearancetag='';
}
?>
进一步找到真正的长线:
<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
并在结束</a>
标记之前插入您的变量:
null, true) ?>" /><?php echo $clearancetag ?></a>
负责产品网格。
下一步在“产品视图”中显示“清除”图标。我只想在说明旁边显示它。
在 view.phtml 中 找到这些行:
<?php echo $this->getReviewsSummaryHtml($_product, false, true)?>
<?php echo $this->getChildHtml('alert_urls') ?>
<?php echo $this->getChildHtml('product_type_data') ?>
<?php echo $this->getTierPriceHtml() ?>
<?php echo $this->getChildHtml('extrahint') ?>
粘贴代码后立即:
<?php
//get all categories associated with this product
$categories = $_product->getCategoryIds();
$clearance_category = 134; //clearance category id
if(in_array($clearance_category, $categories)) {
echo '<div class="clearance-tag">CLEARANCE</div>';
}
?>
我确信有更优雅的方法可以做到这一点并且硬编码你的类别ID并不理想。但它对我有用,并希望它能帮助别人。
答案 3 :(得分:0)
我设法用jQuery做到了这一点。对于有人在System&gt; Configuration&gt; Display&gt; HTML Head下插入他们的网站,很容易进入Miscellaneous Scripts字段。
这适用于查找具有现在和现在价格的产品。我不熟悉Magento的不同版本,知道你是否需要更改选择器,但这个原则应该适用于大多数环境。
<style>
.special-tag {
position: absolute;
top: 0;
left: 0;
max-width: 50%;
}
.slider-products .special-tag {
display: none;
}
.special-tag-product {
position: absolute;
top: 40px;
left: 0;
max-width: 33%;
}
</style>
<script>
jQuery(document).ready(function($){
$('.item-content-wrapper').has('.special-price').append('<img src = "yourimage.png" class = "special-tag"/>');
$('.product-image').append(
$('.product-shop').has('.special-price').length ? '<img src = "yourimage_big.png" class = "special-tag-product"/>' : ""
);
});
</script>
.slider-products类特定于我的网站,您可能不需要这种样式。