Magento limitant le nombre d'articles retournés dans l'appel de collecte de produits
Im essayant de limiter le nombre de résultats retournés manuellement une copie de la liste.phtml modèle, mais sa avère être beaucoup plus difficile que ce que je pensais.
J'ai essayé de régler manuellement la taille de la collection, mais il ya encore une fois rien de travail. Quelqu'un peut me montrer comment faire cela? Serait nmuch apprécié!
source d'informationauteur thrice801
Vous devez vous connecter pour publier un commentaire.
Un moyen rapide est avec cette méthode J'ai récemment découvert. Vous pouvez même l'utiliser directement dans le modèle.
Une approche similaire à @joseph est de remplacer
Mage_Catalog_Block_Product_List
mais insérez le code suivant dans votre nouvelle classe:de cette façon, vous héritera de tout changement futur dans la Mage_Catalog code dans le bloc parent, mais encore de régler votre limite de page.
Idéalement, vous devriez utiliser une
system.xml
nœud pour créer un champ qui peut être modifié par un administrateur sans coder en dur le page_size. Le xml ressemblerait à quelque chose comme:Ensuite récupérer cette valeur dans votre code avec:
HTH,
JD
malheureusement cela ne fonctionne pas car dans le
_getProductCollection()
méthode de la Collection a déjà été initialisé avec une taille de page.Une solution plus flexible pourrait être celle de l'observation de la
catalog_product_collection_load_before
événement qui, comme son nom l'indique, est distribué avant la collecte est chargé.Voici un exemple (en supposant à écrire un
yourmodule
prorogation en vertu de l'yourpackage
):ÉTAPE 1: Définir votre statut d'observateur dans config.xml
dans le
global
section de votreconfig.xml
extension de fichier insérer quelque chose comme:ÉTAPE 2: Définir votre Observateur de la classe en vertu de la
Model\Catalog
dossier:Espère que cela aide.
Sincèrement,
Alessandro Ronchi
J'ai obtenu le Code d'Utilisateur:clockworkgeek , mais voici quelques question et de corriger le code est comme suit, et grâce clockworkgeek.
Vous Aussi écrire
enter code here
ou de résoudre ce problème en modifiant unGrâce,
S'il vous aider à le commenter.
Il ressemble à la collection retournée dans la liste.phtml a déjà eu load() a appelé, ce qui signifie qu'au moment où nous arrivons à le modèle que nous avons perdu la possibilité de définir la taille de la page. Donc, cela va être un peu salissant!
Le bloc qui génère cette collection est
Mage_Catalog_Block_Product_List
qui nous permettent de prolonger avec notre propre classe et de remplacer en même temps. Créer un nouveau bloc qui s'étendMage_Catalog_Block_Product_List
et remplacer la méthode_getProductCollection
comme suit:L'important est de trouver un moyen de détecter si vous êtes en utilisant la liste personnalisée.phtml page ou pas. Ensuite, vous aurez besoin de remplacer les références à
<block type='catalog/product_list' />
dans la mise en page de votre classe et vous devez être prêt à partir.Espère que ça aide!
Grâce,
Joe
Comme il a été mentionné, la
productCollection
a déjà la taille de la page de jeu de. Il y a un autre moyen d'obtenir la collection; via lecatalog/product
Modèle:La requête (et en fin de compte objet) contient la syntaxe LIMIT:
Est que ce que vous demandez?