产品在设置为单独不可见时仍然显示

Posted

技术标签:

【中文标题】产品在设置为单独不可见时仍然显示【英文标题】:Products still showing when set to Not Visible Individually 【发布时间】:2013-08-20 15:57:52 【问题描述】:

使用 Magmi 上传 CSV 以将简单产品设置为单独不可见。

清除 Magento 缓存和重新索引后,产品仍然显示在类别页面上,但是单击简单产品会给您一个 404 页面。

是否有办法阻止这些产品在类别页面上显示。

发生这种情况的示例http://boxchilli.co/s2as/kayaks-1.html

PROTEC ACE 水头盔 - 顶部的白色没有显示,但 PROTEC ACE 水头盔 - 白色 2 是

下面添加了 list.phtml 的代码

<?php
    $_productCollection=$this->getLoadedProductCollection();
    $_helper = $this->helper('catalog/output');

?>
<?php if(!$_productCollection->count()): ?>
<p class="note-msg"><?php echo $this->__('There are no products matching the selection.') ?></p>
<!--<script type="text/javascript">
jQuery(window).load(function() 
    jQuery('.page').css('background-image','none');
);
</script>-->
<?php else: ?>
<div class="category-products">
<?php $position = 'top'; ?>
    <?php echo $this->getToolbarHtml($position) ?>
    <?php // List mode ?>
    <?php if($this->getMode()!='grid'): ?>
    <?php $_iterator = 0; ?>
    <ol class="products-list" id="products-list">
    <?php foreach ($_productCollection as $_product): ?>
        <li class="item<?php if( ++$_iterator == sizeof($_productCollection) ): ?> last<?php endif; ?>">
            <?php // Product Image ?>
            <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(130); ?>"    /></a>
            <?php // Product description ?>
            <div class="product-shop">
                <div class="f-fix">
                    <?php $_productNameStripped = $this->stripTags($_product->getName(), null, true); ?>
                    <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped; ?>"><?php echo $_helper->productAttribute($_product, $_product->getName() , 'name'); ?></a></h2>
                    <?php if($_product->getRatingSummary()): ?>
                    <?php echo $this->getReviewsSummaryHtml($_product) ?>
                    <?php endif; ?>
                    <?php echo $this->getPriceHtml($_product, true) ?>
                    <?php if($_product->isSaleable()): ?>
                        <p><button type="button" title="<?php echo $this->__('BUY NOW') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('BUY NOW') ?></span></span></button></p>
                    <?php else: ?>
                        <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                    <?php endif; ?>
                    <div class="desc std">
                        <?php $shortened = truncateText($_product['description'],250,'.'); ?>
                        <?php 
                        $product_data = $_product->getData();
                        if($_product->getName() == 'Mystic Warrior III (3) Kitesurf Waist Harness 2012 - Black')print_r($product_data); 
                        ?>
                        <?php print_r($_product['description']); ?>
                        <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $_productNameStripped ?>" class="link-learn"><?php echo $this->__('Learn More') ?></a>
                    </div>
                    <ul class="add-to-links">
                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                            <li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
                        <?php endif; ?>
                    </ul>
                </div>
            </div>
        </li>
    <?php endforeach; ?>
    </ol>
    <script type="text/javascript">decorateList('products-list', 'none-recursive')</script>

    <?php else: ?>

    <?php // Grid Mode ?>

    <?php $_collectionSize = $_productCollection->count() ?>
    <?php $_columnCount = $this->getColumnCount(); ?>
    <?php $_columnCount = 4; ?>
    <?php $i=0; foreach ($_productCollection as $_product): ?>
        <?php if ($i++%$_columnCount==0): ?>
        <ul class="products-grid">
        <?php endif ?>
            <li class="item<?php if(($i-1)%$_columnCount==0): ?> first<?php elseif($i%$_columnCount==0): ?> last<?php endif; ?>">
                <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(158); ?>"  /></a>
                <?php $shortened = truncateText($_product->getName(),250,'.'); ?>
                <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($shortened, null, true) ?>"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></a></h2>
                <?php if($_product->getRatingSummary()): ?>
                <?php echo $this->getReviewsSummaryHtml($_product, 'short') ?>
                <?php endif; ?>
                <?php echo $this->getPriceHtml($_product, true) ?>
                <div class="actions">
                    <?php if($_product->isSaleable()): ?>
                        <button type="button" title="<?php echo $this->__('BUY NOW') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('BUY NOW') ?></span></span></button>
                    <?php else: ?>
                        <p class="availability out-of-stock"><span><?php echo $this->__('Out of stock') ?></span></p>
                    <?php endif; ?>
                    <ul class="add-to-links">
                        <?php if ($this->helper('wishlist')->isAllow()) : ?>
                            <li><a href="<?php echo $this->helper('wishlist')->getAddUrl($_product) ?>" class="link-wishlist"><?php echo $this->__('Add to Wishlist') ?></a></li>
                        <?php endif; ?>
                    </ul>
                </div>
            </li>
        <?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
        </ul>
        <?php endif ?>
        <?php endforeach ?>
        <script type="text/javascript">decorateGeneric($$('ul.products-grid'), ['odd','even','first','last'])</script>
    <?php endif; ?>
    <?php $position = 'bottom'; ?>
    <div class="toolbar-bottom">
        <?php  echo $this->getToolbarBlock()->setTemplate('catalog/product/list/toolbar_bottom.phtml')->toHtml(); ?> 
    </div>
</div>
<?php endif; ?>

【问题讨论】:

确保在这些产品的可见性中实际显示“单独不可见”。另外,您如何检索此页面的产品?如果不是默认的base/default/template/catalog/product/list.phtml,请发布您用于呈现产品列表的模板 .phtml。或者至少是您如何在此页面上提取产品集合。 @Jason 添加了问题中要求的代码,我还仔细检查了 magento 中的产品,它们被设置为单独不可见 【参考方案1】:

解决了这个问题。

索引出错,但未报告,错误日志中也没有任何内容。通过一个一个地重新索引,它解决了这个问题。

【讨论】:

很高兴你明白了,通常如果重新索引过程成功并且它们仍然显示它是由于集合的调用方式,但我现在看到你正在使用标准的 getLoadedProductCollection() 方法。有时使用直接Mage::getModel( 'catalog/product' )-&gt;getCollection() 调用产品而不添加可见性作为过滤器,这就是我最初要求查看模板代码的原因;D【参考方案2】:

确保产品也未分配到某个类别。我对继承的站点有同样的问题。

【讨论】:

以上是关于产品在设置为单独不可见时仍然显示的主要内容,如果未能解决你的问题,请参考以下文章

默认情况下,将jTextArea设置为可见的false

更新 Woocommerce 3 中的产品可见性

为啥我的 Silverlight BusyIndi​​cator 在设置 IsBusy = true 后仍然不可见?

当我将 ImageView 的可见性设置为线性布局消失时,它的一个孩子仍然存在,另一个在 android 中消失了

Asp:Label 在 vi​​sible 设置为 true 时不显示?

怎样在js中控制一个HTML元素的可见与不可见