Comment faire de réglage produits par page remis à la page par défaut de charge

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

  •  16-10-2019
  •  | 
  •  

Question

J'ai essayé de modifier getLimit () dans le fichier Mage_Catalog_Block_Product_List_Toolbar, mais cela ne semble pas quoi que ce soit de changement. Est-ce seulement possible?

Était-ce utile?

La solution

Cela peut ne pas obtenir ce que vous voulez, mais il convient de mentionner: vous pouvez désactiver la « mémorisation » des paramètres de la barre d'outils de la liste des produits en appelant la méthode suivante:

Mage_Catalog_Block_Product_List_Toolbar::disableParamsMemorizing()

Ou, via XML de mise en page que vous pouvez mettre à jour le bloc de la barre d'outils de votre poignée de catégorie comme suit:

<block type="catalog/product_list_toolbar" name="product_list_toolbar" template="catalog/product/list/toolbar.phtml">
    <action method="disableParamsMemorizing"></action>
    <block type="page/html_pager" name="product_list_toolbar_pager"/>
    <!-- The following code shows how to set your own pager increments -->
    <!--
        <action method="setDefaultListPerPage"><limit>4</limit></action>
        <action method="setDefaultGridPerPage"><limit>9</limit></action>
        <action method="addPagerLimit"><mode>list</mode><limit>2</limit></action>
        <action method="addPagerLimit"><mode>list</mode><limit>4</limit></action>
        <action method="addPagerLimit"><mode>list</mode><limit>6</limit></action>
        <action method="addPagerLimit"><mode>list</mode><limit>8</limit></action>
        <action method="addPagerLimit" translate="label"><mode>list</mode><limit>all</limit><label>All</label></action>
    -->
</block>

Avis J'ai ajouté le noeud <action> avec un appel à la méthode disableParamsMemorizing.

Cela permettra d'éviter la barre d'outils de l'utilisateur des params d'être stockés dans leur session et réinitialise chaque fois qu'ils se chargent de la page, à condition qu'il n'a pas le dans une chaîne param de requête. Gardez à l'esprit que ce sera 'oublier' ALL barre d'outils params:

  1. sort_order
  2. sort_direction
  3. display_mode
  4. limit_page

Vous pouvez également appliquer sur une base par catégorie via des mises à jour de mise en page dans Magento administration.

Autres conseils

Il semble que si vous réécrit la méthode comme suit ferait ce que vous voulez faire:

public function getLimit()
{
    $limit = $this->_getData('_current_limit');
    if ($limit) {
        return $limit;
    }
    $limit = $this->getRequest()->getParam($this->getLimitVarName(), $this->getDefaultPerPageValue());

    $this->setData('_current_limit', $limit);
    return $limit;
}

Ce que je l'ai fait ici est de supprimer les conditions dans / obtenir les valeurs limites de la session de catalogue. Cela signifie que si la limite est fixée dans le querystring il obéira, mais il ne sera pas le stocker dans la session, il est donc que l'application de la limite pour ceux qui changent les produits par page Valeur déroulante - pas pour leur visites de retour où ils ont frappé probablement une page de catégorie en naviguant sur le site ou par la recherche biologique.

Si la valeur limite n'a pas été définie dans les queryString il alors par défaut la valeur définie dans la configuration.

Bonne chance!

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top