Domanda

Ho scoperto che Magento ha due modi distinti di gestire prezzi speciali, ma non so quale sia il migliore per il mio caso. Ho trovato che un regime di prezzi catalogo sono molto potenti, ma non so come ciclo tra loro senza hardcoding l'ID della regola.

Il mio cliente ha bisogno di avere due tipi di prezzi speciali: sconti normali (20-30% di sconto alcuni prodotti) e "vendite flash" che lo scorso breve tempo (1-2 giorni). Ho bisogno di averli visualizzati nella home page e nelle pagine di categoria, quelli in necessità a casa per essere selezionati da un amministratore dal backend e quelli nelle pagine di categoria troppo, saranno impostati di 4 prodotti su ogni pagina (quelli nelle pagine di categoria devono essere da detti categoria). Poi ho un link a una pagina con tutti i prodotti che hanno prezzi speciali su di loro.

La parte "selezione" della transazione Io davvero non so come fare, ma finora non riesco nemmeno a ottenere i prodotti con una regola prezzo di catalogo di presentarsi sulla mia home page. Ho un blocco per loro e ho trovato questo codice:

$rule = Mage::getModel('catalogrule/rule')->load(1);   
$rule->setWebsiteIds("1"); $productIdsArray = $rule->getMatchingProductIds(); 
$productsCollection = Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect("*") ->addAttributeToFilter("entity_id", array("in", $productIdsArray)); 
$this->setProductCollection($collection); 

Ma sto cercando di indovinare il ->load(1); è hardcoding l'ID del promo, che cosa succede se l'utente crea una nuova regola di prezzo, allora? Come fare ad anello che tutto attraverso tutti i prodotti che hanno una regola in loro?

I so come collegare attraverso prodotti di prezzi speciali e forse li ho potuto utilizzare per le promo flash, ma penso che sarò complicando con il resto delle caratteristiche che ho bisogno di implementare.

Inoltre se avete qualche consiglio su come gestire il fatto che le esigenze degli utenti per selezionare i 4 articoli in vetrina sarei molto grato.

È stato utile?

Soluzione

forse prendere in considerazione la seguente configurazione:

L'applicazione di sconti d'uso (20-30% di sconto alcuni prodotti)
O farlo manualmente su ogni prodotto o creare una categoria chiamata "vendita Articoli" e sotto che una sottocategoria per ogni staffa di sconto, ad esempio, "20 per cento", "30 per cento", ecc È quindi possibile utilizzare le regole prezzo di catalogo su ciascuno di questi categorie per ottenere gli sconti desiderati.

Flash vendita
Anche in questo caso, creare una categoria per la vendita flash e quindi creare una regola di prezzo di catalogo attualizzazione prodotti in questa categoria. È possibile impostare un "a" e "da" la data su questa regola prezzo.

Mostra prodotti di vendita sulla homepage
Per mostrare i prodotti che hanno un prezzo speciale applicato a loro di solito creare un nuovo blocco chiamato Namespace_Module_Block_Product_List_Special (Special.php). Ha bisogno di estendere Mage_Catalog_Block_Product_List. È quindi possibile sovrascrivere il _getProductCollection(). Ecco il file intero isolato:

<?php
class Namespace_Module_Block_Product_List_Special extends Mage_Catalog_Block_Product_List
{

    //default item limit
    protected $_defaultItemLimit = 4;


    public function _construct() {
        parent::_construct();
    }

    /**
     * Retrieve product collection
     *
     * @return Mage_Eav_Model_Entity_Collection_Abstract
     */
    protected function _getProductCollection()
    {

        $todayStartOfDayDate  = Mage::app()->getLocale()->date()
            ->setTime('00:00:00')
            ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);

        $todayEndOfDayDate  = Mage::app()->getLocale()->date()
            ->setTime('23:59:59')
            ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);


        $collection = Mage::getResourceModel('catalog/product_collection');
        $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
        $collection = $this->_addProductAttributesAndPrices($collection)
            ->addStoreFilter()
            ->addAttributeToFilter('special_from_date', array('date' => true, 'to' => $todayStartOfDayDate))
            ->addAttributeToFilter('special_to_date', array('or'=> array(
                0 => array('date' => true, 'from' => $todayStartOfDayDate),
                1 => array('is' => new Zend_Db_Expr('null')))
            ), 'left')
            ->addAttributeToSort('special_from_date', 'desc')
        ;


        $itemLimit = $this->getItemLimit();
        $collection->setPageSize($itemLimit);
        return $collection;
    }

    public function getItemLimit() {

        if($this->hasData('item_limit')) {
            return $this->getData('item_limit');
        }

        return $this->_defaultItemLimit;
    }

}

Per utilizzarlo è necessario aggiungere questo alla tua config.xml sotto il tag <global>:

    <blocks>
        <modulename>
            <class>Namespace_Module_Block</class>
        </modulename>
        <catalog>
            <rewrite>
                <product_list_special>Namespace_Module_Block_Product_List_Special</product_list_special>
            </rewrite>
        </catalog>
    </blocks>

E poi visualizzarlo sulla homepage in questo modo:

{{block type="catalog/product_list_special" name="homepage.products.special" template="catalog/product/list.phtml"}}

O tramite file XML di layout:

<block type="catalog/product_list_special" name="hometabs.products.special" template="catalog/product/list.phtml"/>

Si potrebbe utilizzare lo stesso metodo per visualizzare i prodotti speciali in ogni categoria, ma che richiederebbe una modifica del metodo _getProductCollection() che i controlli per la categoria corrente. Date un'occhiata a Mage_Catalog_Block_Product_list::_getProductCollection() per alcune idee sul codice da utilizzare per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top