Magento - Spezielle Sammlung zeigt keine Symbolleiste und die Seitenleiste in der einzelnen Produktansicht

magento.stackexchange https://magento.stackexchange.com/questions/3096

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe ein Magento -Geschäft, das zwei Seiten haben muss, auf denen sowohl die neuen Produkte dem Geschäft hinzugefügt werden, als auch diejenigen, die einen Rabatt haben. Beide zeigen das gleiche Problem, aber ich gebe Ihnen den Code für letztere, weil ich denke, dass es das problematischste ist.

Das Problem ist, dass ich die Liste der Produkte, die die Kriterien zeigen, erfolgreich zeigen kann, aber ich kann die Symbolleiste nicht wie in jeder anderen Kategorie aussehen lassen. Wenn ich von dort auf ein Produkt klicke, verliere ich die Seitenleiste auf der Detailseite des Produkts, als ob die XML -Regeln, die ich eingerichtet habe, nicht für die Seite gelten, da ich von der Seite dieser Werbeaktionen komme.

Dies ist die Klasse, mit der ich die Sammlung von Produkten mit einer aktiven Promotion erhalten kann:

class Mage_Catalog_Block_Product_Promo extends Mage_Catalog_Block_Product_List{
protected $_productsCount = null;

const DEFAULT_PRODUCTS_COUNT = 5;

protected function _beforeToHtml()
{
    $todayDate  = Mage::app()->getLocale()->date()->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);

    $collection = Mage::getResourceModel('catalog/product_collection');
    Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);

    $collection = $this->_addProductAttributesAndPrices($collection)
        ->addStoreFilter()
        ->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayDate))
        ->addAttributeToFilter('special_to_date', array('or'=> array(
            0 => array('date' => true, 'from' => $todayDate),
            1 => array('is' => new Zend_Db_Expr('null')))
        ), 'left')
        ->addAttributeToSort('flash', 'desc')
        ->setPageSize($this->getProductsCount())
        ->setCurPage(1)
    ;
    $this->setProductCollection($collection);

    $toolbar = $this->getToolbarBlock();
    $toolbar->setCollection($collection);
    $this->setChild('toolbar', $toolbar); 

    return parent::_beforeToHtml();
}

 public function setCollection($collection)
{
    $this->_productCollection = $collection;
    return $this;
}

public function setProductsCount($count)
{
    $this->_productsCount = $count;
    return $this;
}

public function getProductsCount()
{
    if (null === $this->_productsCount) {
        $this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
    }
    return $this->_productsCount;
}
} 

Dies ist mein PhTML, in dem ich alle meine Produkte bekomme:

<?php $current_cat= Mage::getSingleton('catalog/layer')->getCurrentCategory()->getId(); ?>

<?php 
$_productCollection = $this->getProductCollection();
$_helper = $this->helper('catalog/output');
$_collectionSize = $_productCollection->count() ?>
<div class="promos_new_list">
    <div class="countcat">
        <?php //$_productCollection = $this->getLoadedProductCollection(); 
        $count = $_productCollection->getSize(); 
        echo $count; ?> Produits 
    </div>
<?php echo $this->getToolbarHtml(); ?>
<?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; ?>">
            <?php include('view/labels.phtml')  ?>                
            <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(178,108); ?>" width="178" height="108" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>
            <div id="productimgover<?php echo $_product->getId()?>" style="display: none;"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(64); ?>" width="64" height="64" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></div>
            <div class="moreinfo">
                <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>
                <div id='productname<?php echo $_product->getId()?>' style='display:none'><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></div>
                <p class="product-desc">
                    <?$desc=$this->htmlEscape($_product->getShortDescription());?>
                    <?php echo Mage::helper('function')->unalinea($desc,30);?>
                </p>
                <?php echo $this->getPriceHtml($_product, true) ?>

                <div class="nowmore orangegradient">
                    <a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($_product->getName(), null, true) ?>">En savoir plus </a><span></span>
                </div>

                <div class="clear"></div>

            </div>
        </li>
    <?php if ($i%$_columnCount==0 || $i==$_collectionSize): ?>
    </ul>
    <?php endif ?>
<?php endforeach ?>
</div>

Ich weiß nicht, ob mehr Code benötigt wird. Ein Kollege sagt, Magento funktioniert nicht richtig, wenn ich dies tue, weil es keine aktive Kategorie hat, aber ich verstehe nicht wirklich warum? Kannst du mich hierher führen?

War es hilfreich?

Lösung

Bisher habe ich das Problem der Symbolleiste ausgewichen:

<?php
$toolbar = Mage::getBlockSingleton('catalog/product_list')->getToolbarBlock();
$toolbar->setCollection($_productCollection);
echo $toolbar->toHtml();
?>

Ich bin mir nicht sicher, ob dies der richtige Weg ist, um sich der Situation zu nähern, aber es funktioniert für mich vorerst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top