Magento - 在清仓类别的所有产品上叠加“清除”图标

时间:2011-11-25 16:26:20

标签: magento

我想在我的清关类别中列出的所有产品上叠加“清除”图标。

用户显然会在其出现的其他类别下浏览产品。

所以我想在每个页面上列出产品时,我需要检查它所属的其他类别,如果它在'许可'中则添加一些额外的标记。

我很好用后来造型。即使我可以添加     <div class="clearance-tag"></div> 在产品图像下方,我可以为其指定背景图像,并将其浮动/定位到我需要的位置。

我害怕Magento我经常知道我想要编写什么代码/逻辑,不知道在哪里写它。

有人可以帮忙吗? 我正在使用Magento 1.6

4 个答案:

答案 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类特定于我的网站,您可能不需要这种样式。