Magento eigenes Artikel Listing

19
Dec

neu Datei erstellen in  app/code/local/Mage/Catalog/Block/Product z.B. Meinlisting.php (immer auf Groß / Kleinschreibung achten )

der Inhalt

 

<?php
 class Mage_Catalog_Block_Product_Meinlisting extends Mage_Catalog_Block_Product_List
{
    function get_prod_count() {
      Mage::getSingleton('catalog/session')->unsLimitPage();
      return (isset($_REQUEST['limit'])) ? intval($_REQUEST['limit']) : 24;
   }
 
   function get_cur_page() {
      return (isset($_REQUEST['p'])) ? intval($_REQUEST['p']) : 1;
   }

    /**
    * Retrieve loaded category collection
    *
    * @return Mage_Eav_Model_Entity_Collection_Abstract
   **/
   protected function _getProductCollection() {
 
      $collection = Mage::getResourceModel('catalog/product_collection');
	  $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
 
;
  
	  // Get New Products 
	  $collection = $this->_addProductAttributesAndPrices($collection)
      
	->setOrder('entity_id', 'desc')
	->addAttributeToSelect('*')
      //->addFieldToFilter( 'name', array('like' => '%120x60%') ) 	
	->addFieldToFilter( 'laenge_cm', array('eg' =>array( 91292 )) ) 
        ->addFieldToFilter( 'breite_cm', array('eg' =>array( 91140 )) ) // nur der zugriff auf die id der Optionen möglich 

	->addUrlRewrite($curr_categoryid)
	->setPageSize($this->get_prod_count())
        ->setCurPage($this->get_cur_page());
		 
  Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->collection);
      $this->setProductCollection($collection);
 
      return $collection;
   }
  
}
?>

Ich haben hier nach Arttributen gefiltert die laenge_cm und breite_cm heißen um mir nur bestimmte Masse ausgeben zu lassen (die Arttributen  müssen auf der Kategorie sichtbar sein).

Nur zur Ausgabe :

Hier für habe ich mir eine Kategorie angelegt  und die auf nur statischer block eingestellte  unter kommt dann der Aufruf mit:

<block type="catalog/product_Meinlisting" name="product_Meinlisting" template="catalog/product/list.phtml">


<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
<block type="page/html_pager" name="product_list_toolbar_pager" />


<action method="addPagerLimit" translate="label"><mode>grid</mode><limit>all</limit><label>All</label></action>
</block>
<action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>6</count></action>
<action method="setToolbarBlockName"><name>product_list_toolbar</name></action>
</block>

</reference>

da Wir das Listing überschrieben haben müssen wir hier auch die Tool bar mit aufrufen.

hier noch eine die Möglichen Operationen

Attribute Code SQL Equivalent Example
eq = $collections->addAttributeToFilter(‘price’, array(‘eq’ => 10.00));
neq != $collections->addAttributeToFilter(‘price’, array(‘neq’ => 10.00));
like LIKE $collections->addAttributeToFilter(‘name’, array(‘like’ => ‘%VJTemplates%’));
nlike NOT LIKE $collections->addAttributeToFilter(‘name’, array(‘nlike’ => ‘%VJTemplates%’));
in IN () $collections->addAttributeToFilter(‘id’, array(‘in’ => array(1,2,3,4)));
nin NOT IN () $collections->addAttributeToFilter(‘id’, array(‘nin’ => array(1,2,3,4)));
is IS
notnull IS NOT NULL
$collections->addAttributeToFilter(‘description’, ‘notnull’);
null IS NULL $collections->addAttributeToFilter(‘description’, ‘null’);
moreq >= $collections->addAttributeToFilter(‘price’, array(‘moreq’ => 10.00));
gt > $collections->addAttributeToFilter(‘price’, array(‘gt’ => 10.00));
lt < $collections->addAttributeToFilter(‘price’, array(‘lt’ => 10.00));
gteq >= $collections->addAttributeToFilter(‘price’, array(‘gteq’ => 10.00));
lteq <= $collections->addAttributeToFilter(‘price’, array(‘lteq’ => 10.00));
finset FIND_IN_SET() $collections->addAttributeToFilter(‘custom’, array(‘finset’ => ‘1’));
from >= $collection->addAttributeToFilter(‘created_at’, array(
‘from’ => ’10 July 2013′,
‘to’ => ’11 July 2013′,
‘date’ => true
));
to <=
date
datetime $collection->addAttributeToFilter(‘created_at’, array(
‘from’ => ‘2013-01-01 00:00:00’,
‘to’ => ‘2013-12-31 00:00:00’,
‘datetime’ => true
));

Was ich lieder nicht gefunden habe ist die Möglichkeit eine OR AND Abfrage auf das Gleiche Attribut.