Magento: afficher les produits d'une catégorie spécifique dans le pied de page
Je suis en train de construire un "Produit du Mois" bloc pour le pied de page. Il doit charger une catégorie de produits et l'affichage de la première.
C'est mon fichier de modèle custom/featured-product.phtml
:
<?php $_productCollection = $this->getLoadedProductCollection() ?>
<div class="featured-product">
<h2><?php echo $this->__('Product of the Month') ?></h2>
<?php foreach ($_productCollection as $_product): ?>
<div class="item">
<a class="product-image" href="<?php echo $_product->getProductUrl() ?>">
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" />
</a>
<a class="product-name" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>
<?php echo $this->getPriceHtml($_product, true) ?>
</div>
<?php
//Note: Exit after first product.
break;
?>
<?php endforeach ?>
</div>
C'est juste une version simplifiée de Magento liste de produit modèle: catalog/product/list.phtml
Lors de l'intégration du bloc dans une Page CMS, il fonctionne très bien. Exemple:
{{block type="catalog/product_list" category_id="13" template="custom/featured-product.phtml" }}
PAS DE TRAVAIL
Lors de l'incorporation de le bloquer via local.xml
, il échoue. Le balisage correct est retourné, mais la catégorie spécifiée n'est pas chargé. Au lieu d'un aléatoire (je ne sais pas comment ils sont sélectionnés) de l'ensemble des produits est chargé.
Mon code dans local.xml
:
<default>
<reference name="footer">
<block type="catalog/product_list" name="custom.featuredProduct" as="product_of_the_month" category_id="13" template="custom/featured-product.phtml" />
</reference>
</default>
Pour être complet, je me suis rendu le bloc explicitement dans page/html/footer.phtml
comme suit:
<?php echo $this->getChildHtml('product_of_the_month') ?>
Des idées?
Ma meilleure supposition est mon local.xml
est incorrect. Est-il un bloc parent j'ai besoin de charger?
[Mises à jour]
Mon code d'origine accidents de la page du produit. La solution de contournement est pas fondant le code si lourdement sur la base Magento fichier: catalog/product/list.phtml
. Précisément d'éviter cette ligne:
<?php $_productCollection = $this->getLoadedProductCollection() ?>
[Solution]
Une version de travail avec des exemples pour l'utilisation dans les Pages CMS et LayoutXML est inclus ici:
https://stackoverflow.com/a/12288000/1497746
local.xml
- où est ce fichier? (chemin d'accès complet)Ce n'est pas un problème avec la thématique de secours de la hiérarchie. C'est le lieu normal pour un package personnalisé: /app/design/frontend/custom/custom/layout/local.xml
OriginalL'auteur Brendan Falkowski | 2012-09-05
Vous devez vous connecter pour publier un commentaire.
Trouvé une solution qui fonctionne à l'aide d'Alan Tempête conseils.
/template/custom/en vedette les produits.phtml
En bref, la collection est généré manuellement plutôt que de recevoir une collection (comme ma première tentative n'):
Utilisation dans une Page CMS:
Utilisation dans un modèle:
/layout/local.xml
/template/page/html/pied de page.phtml
Ressources utiles:
Comment obtenir une collection de produits:
À l'aide de la magie des getters/setters:
<?php echo $this->getPriceHtml($_product, true) ?>
ne semble pas rendu.avez-vous trouvé une solution pour rendre le prix? @brendan-falkowski
Nope, pas sûr de savoir comment faire ce travail.
OriginalL'auteur
Tout d'abord, j'ai eu des problèmes au cours des années à l'aide de mise à jour xml attribut pour définir les valeurs sur les blocs (autres que
template
,as
,name
,type
, ouclass
, afin d'essayer quelque chose de ce genreou ce
peut aider, et serait ma première étape.
Après, j'irais regarder le bloc de code de chargement de la collection
La
getLoadedProductCollection
méthode encapsule un appel à_getProductCollection
, et_getProductCollection
est où la collecte est en fait chargé.Ainsi, certains temporaire de débogage de code dans
Peut aider à assurer votre id de la catégorie, il est de la mise en page de mise à jour XML pour le bloc.
Cependant, si vous regardez un peu plus loin, à
_getProductCollection
, vous remarquerez qu'il y a quelques conditions où il réinitialise l'ID de la catégorie.Est autre pièce de Magento code a mis le
show_root_category
de la propriété, ou vous êtes sur une page où il y a un objet de produit dans le registre, Magento remplacera votre id de la catégorie.Rendre les choses encore plus compliquées, une fois la collection est chargé, il est situé sur une propriété protégée
qui n'a pas de méthode de lecture publique.
Les façons de procéder sont multiples. Si c'était moi, je voudrais examiner l'une des opérations suivantes
À l'aide d'un bloc personnalisé classe qui étend la classe
Mage_Catalog_Block_Product_List
et a une méthode de réinitialisation de la catégorie sur une collection de ou le chargement d'une nouvelle collectionChargement de la collecte de moi-même, sans s'appuyer sur le code de la
product/list
<action method="setCategoryId"><id>13</id></action>
méthode et<action method="setData"><key>category_id</key><value>13</value></action>
méthode de travail sur CMS et Affichage Catalogue. Une exception est levée sur Produit. Enquête sur...Magento t semblent ignorer la collection sur Produit, provoquant une exception, je ne sais pas comment tracer, donc je l'ai déplacé sur vos deux dernières suggestions. #2 a fonctionné pour moi. Affichera comme une réponse sous peu.
OriginalL'auteur
J'ai réussi à recréer le problème sous Magento CE 1.7.0.2.
J'ai d'abord créé un local.xml avec ce contenu:
J'ai compris, que peu d'emballage les éléments XML sont manquantes, et a ajouté quelques lignes supplémentaires:
Après ajout des éléments XML, il a travaillé.
local.xml
comprend ces également. J'ai seulement posté le abrégée, le code pertinent.Mon être vous avez quelques cas particulier. Juste pour mémoire: je l'ai testé uniquement pour la page d'accueil. Aussi j'ai créé mannequin thème, où mis de l'local.xml et personnalisée/en vedette les produits.phtml Pas les extensions installées. Produits de données de l'échantillon a été utilisé et je n'ai changé l'id de la catégorie.
Ne chargez-la à droite de la collection de produits de la catégorie spécifiée?
Oooops 🙂 Pas de ... j'ai eu de l'ordinateur, mais la catégorie est salon ...
OriginalL'auteur