2012-06-29 2 views
2

이미지가 포함 된 모든 제품이없는 제품보다 먼저 나열되도록하고 싶습니다. 필자는 일부 코드로 작업했지만 페이지 단위로만이 작업을 수행 할 수있었습니다.Magento 이미지가있는 모든 제품 (list.phtml)

페이지 1에 이미지가 포함 된 제품과 제품이 100 개이면 6 개의 제품이 먼저 표시되고 이후 페이지에는 이미지가있는 제품이 표시됩니다.

사진이있는 페이지가 무엇이든 상관없이 모든 제품에 먼저 표시하고 싶습니다.

코드는 가장 낮은 가격부터 가장 높은 가격 순으로 제품을 정렬하는 내 사이트의 기본값을 기반으로 작동합니다. 누군가 나를 바꿀 수 있습니다.

<?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> 
<?php else: ?> 
<div class="category-products"> 
<?php echo $this->getToolbarHtml() ?> 
<?php // List mode ?> 
    <?php $imgprd=array(); ?> 
<?php if($this->getMode()!='grid'): ?> 
<?php $_iterator = 0; ?> 
<ol class="products-list" id="products-list"> 

<?php foreach ($_productCollection as $_product): ?> 
<?php 
//you can create test in any part sting of you link image 
if (strpos($this->helper('catalog/image')->init             $_product, 'small_image') , "placeholder")   ==false): ?> 

    <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(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></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->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></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 echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_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; ?> 
        <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?> 
         <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li> 
        <?php endif; ?> 
       </ul> 
      </div> 
     </div> 
    </li> 
    <?php else: ?> 
    <?php $imgprd[]=$_product ?>  
    <?php endif; ?> 
<?php endforeach; ?> 
     <?php foreach ($imgprd 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(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></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->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></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 echo $_helper->productAttribute($_product, $_product->getShortDescription(), 'short_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; ?> 
        <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?> 
         <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></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(); $i=0; ?> 
<?php foreach ($_productCollection as $_product): ?> 
    <?php if (strpos($this->helper('catalog/image')->init($_product, 'small_image') , "placeholder")==false): ?> 
    <?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(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a> 
      <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), 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->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></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; ?> 
        <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?> 
         <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></a></li> 
        <?php endif; ?> 
       </ul> 
      </div> 
     </li> 
    <?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?> 
    </ul> 
    <?php endif ?> 
    <?php else: ?> 
    <?php $imgprd[]=$_product ?>  
    <?php endif; ?> 
    <?php endforeach ?> 
    <?php foreach ($imgprd 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(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a> 
      <h2 class="product-name"><a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), 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->__('Add to Cart') ?>" class="button btn-cart" onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"><span><span><?php echo $this->__('Add to Cart') ?></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; ?> 
        <?php if($_compareUrl=$this->getAddToCompareUrl($_product)): ?> 
         <li><span class="separator">|</span> <a href="<?php echo $_compareUrl ?>" class="link-compare"><?php echo $this->__('Add to Compare') ?></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; ?> 

<div class="toolbar-bottom"> 
    <?php echo $this->getToolbarHtml() ?> 
</div> 

답변

1

사용 :

$this->getLoadedProductCollection()->setOrder('image'/*or small_image*/, 'desc') 
0

당신은 setOrder('image')을 사용할 수 없습니다.

페이지 도구 모음에는 현재 정렬이 있으므로 서로 영향을 미치는 방법을 고려해야합니다.

가격순으로 오름차순을 선택했지만 이미지가있는 제품을 먼저 표시하려면 원하는 결과가 무엇이되어야합니까?

0

내가 한 것. 나는 http://www.atwix.com/magento/custom-sorting-product-listing/ 에있는 방법을 따랐다. 그러나 나는 정렬 순서에 문제가 있었고, 따라서 블록을 덮어 쓰기위한 코드를 대체하여 문제를 해결했다.

class Atwix_Tweaks_Block_Product_List_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar{ 
    protected $_direction = 'asc'; 
} 

내 수정 위의 링크에서

는 오리지널 코드 작업이 제대로

class Atwix_Tweaks_Block_Product_List_Toolbar extends Mage_Catalog_Block_Product_List_Toolbar{ 

    public function setCollection($collection){ 
     parent::setCollection($collection); 
     if($this->getCurrentOrder() == "image") 
      $this->_collection->setOrder($this->getCurrentOrder(), "desc"); 

     return $this; 
    } 
} 
를 정렬 할 수 있습니다