19
Dez.
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.