Magento - de la Chapelure sur la page de la catégorie
J'ai défini la chapelure de ce genre sur catalogue/category/vue.phtml page.
echo $this->getChildHtml('breadcrumbs')
Je veux afficher un fil d'ariane sur la page de la catégorie. Ai-je besoin d'ajouter quoi que ce soit d'autre d'utiliser le code ci-dessus ?
Ai-je besoin pour définir ce en fichier xml ?
Par défaut, Magento montre breadcumbs dans la page de catégorie. Vous n'avez pas besoin de l'appeler de nouveau sur l'affichage des catégories de la page
Je le sais et elle montre également. Mais je veux le mettre sur la position personnalisée pas sur la position par défaut.
Ok, alors dites-moi quand vous mettez ce code, est-il travaillé? si la valeur par défaut est toujours à l'affiche dans votre page de catégorie ? et enfin, vous devez seulement dans la catégorie de la page.. et pas dans une autre page ?
Je le sais et elle montre également. Mais je veux le mettre sur la position personnalisée pas sur la position par défaut.
Ok, alors dites-moi quand vous mettez ce code, est-il travaillé? si la valeur par défaut est toujours à l'affiche dans votre page de catégorie ? et enfin, vous devez seulement dans la catégorie de la page.. et pas dans une autre page ?
OriginalL'auteur Jinal Dabhi | 2014-08-08
Vous devez vous connecter pour publier un commentaire.
créer local.xml en vertu de app/design/fontend/yourpackage/yourtemplate/mise en page
code si local.xml est
mettre à la vue de code.phtml
vérifiez maintenant............
qu'avez-vous changé ? Et où dois-je mettre local.xml fichier ?
Cela ne fonctionne pas @AmitBera . Prendre un coup d'oeil sur ma réponse.
Amit du script ne fonctionne pas à 100%
OriginalL'auteur Amit Bera
Breadcumbs est un bloc structurel dans Magento. Cela signifie que c'est une partie de Magento structure. Donc, si vous avez besoin de repositionner le breadcumb position, vous avez vraiment besoin de modifier le layout magento définition de la structure. Breadcump est défini dans
page.xml
Emplacement:
app/design/frontend/base/default/layout/page.xml
Évidemment, ce bloc est appelé à l'aide
getchildHtml()
méthode dans les modèles de mise en page. Ces modèles sont présents dans l'emplacementapp/design/frontend/base/default/tempate/page/
. Jetez un oeil sur ces fichiers. Ici, j'ai inclure le code à l'intérieur de 1column.phtml modèleCe que vous avez eu tort de
Votre code ne marchera pas. Parce que vous avez utilisé
getChildHtml()
méthode pour inclure le breadcumb bloc. Si vous voulez que le code du travail, alors breadcumb bloc doit être un enfant de bloc de bloc qui définitcategor/view.phtml
. Le bloc qui définissent ce modèle estMage_Catalog_Block_Category_View
. Dans le fichier de disposition de ce bloc est référencé par un nomcategory.products
. Vous pouvez voir ce bloc danscatalog.xml
Que devez-vous faire
Supprimer la
breadcrumps
premièreVous n'avez pas besoin de la chapelure dans chaque page et que vous souhaitez modifier la position où il semble maintenant. Pour cela, vous avez à enlever le fil d'ariane bloc de mise en page par défaut. Cela permettra d'éliminer le fil d'ariane de bloc à partir de chaque page. Le meilleur moyen pour cela est indiqué ci-dessous
créer un fichier de mise en page à
app/design/<package>/<theme>/layout/local.xml
et de mettre ce code à l'intérieur deLocal.xml
fichier de processus en dernier, après tous les autres fichiers de mise en page sont traitées. C'est donc l'endroit idéal pour supprimer breadcrumps bloc. Maintenant vider le cache et de charger la page. Vous verrez breadcrump obtenir dissappeard à partir de toutes les pages.Redéfinir le
breadcrumps
en page du catalogue de seulementVous devez maintenant placer le fil d'ariane d'un bloc dans les pages de la catégorie. Comme je l'ai déjà mentionné, ce que vous devez faire est de le, faire de la bredcrumbs bloquer enfant pour
catalog/category_view
bloc. Mais ici, c'est anothe problème. Il existe généralement deux types de pages de la catégorie . Page de catégorie avec layered navigation et la page de catégorie sans layered navigation. Magento est séparée de la structure de mise pour ces deux types. Si vous avez besoin de spécifier la chapelure bloc pour ces deux types de catégorie.Emplacement:
app/design/<package>/<theme>/layout/catalog.xml
Travail n'est pas terminé. Maintenant, vous devez appeler cette chapelure bloc dans le fichier de modèle aussi
Fichier :
app/design/<package>/<theme>/template/catalog/category/view.phtml
Appel ce partout où vous avez besoin à l'intérieur de
view.phtml
. Vous êtes fait. Maintenant effacer le cache et les charger à nouveau la page.OOOPSSSS!!!!!
Pas montrer quoi que ce soit à droite ?
Mais notre bloc est-il définitivement. Afin de confirmer cela, ouvrez la chapelure fichier de modèle et de mettre n'importe quel texte à l'intérieur. Maintenant charger la page à nouveau. Vous pourrez voir le contenu pour vous. Donc ce qui s'est vraiment passé la fois précédente. Laissez-nous regarder.
Chapelure blocs bloc spécial dans lequel nous avons besoin de certaines données avant d'être rendu. Sinon, il sera de fournir un résultat vide. La méthode utilisée pour établir la chapelure bloc est
addCrumb()
. Jetez un oeil sur le fil d'ariane blocMage_Page_Block_Html_Breadcrumbs
. Nous avons besoin de regarder _toHtml() la méthode, c'est ce qui transforme ce bloc en html.Il est donc essentiel que
$this->_crumbs
être définie avant d'appeler cette méthode. Sinon il va passer un tableau vide à la chapelure de modèle. Ceci affichera rien en frontend. C'est ce qui se passe maintenant. Cela signifie qu'il est d'une façon ou la manière magento ensemble$this->_crumbs
variable changé ainsi que les changements que nous maded maintenant. Nous avons donc besoin de trouver l'endroit où le flux par défaut cassé maintenant.Magento jeux de
$this->_crumbs
variable à l'aide d'une fonctionaddCrumb()
qui est défini dans la chapelure bloc lui-même. Laissez-nous jeter un oeil sur cette méthode.Comme vous pouvez le voir, c'est la méthode qui est responsable de la fabrication de fil d'ariane bloc actif. Vous pouvez voir que
$this->_crumbs
variable est mise à l'intérieur de cette méthode.Pour la page de catégorie, fil d'ariane paramètre de processus commence dans caetgory vue de bloc. Laissez-nous jeter un oeil sur l'affichage des catégories bloc. C'est
Ici comme vous pouvez le voir il crée un nouveau fil d'ariane bloc
Mage_Catalog_Block_Breadcrumbs
lors de la présentation de la préparation. Nous avons donc besoin de trouver ce que ce bloc n'.Oui il y est. De la chapelure pour la catégorie bloc est le réglage par ce bloc. Maintenant, pourquoi cela n'a pas fonctionné pour nous. C'est la plus délicate de la zone que nous avons besoin de comprendre.
Le truc, c'est cela. Nous avons notre chapelure bloc est définie à l'intérieur d'
catalog categoy view page
. Comme vous pouvez le voir ce bloc à la recherche d'breadcrumb
bloc dans sa mise en page. Malheureusement, le bloc ne sera pas disponible maintenant, depuis que le bloc est définit en fait à l'intérieur de l'affichage des catégories bloc. À ce stade, les blocs qui sont définis ci-dessus la vue catégorie bloquer seulement disponible ici. Lors de la chapelure de bloc ont été insdie page.xml fichier, ce bloc sera disponible ici. Si la méthode fonctionne parfaitement.Maintenant, comment pouvons-nous sortir de cette situation? Dans mon esprit, il y a deux façons de le faire
Je voudrais aller avec la deuxième méthode. Depuis qu'elle serait la meilleure méthode que nous avons maintenant disponible. Voici ce que nous devons faire, nous avons besoin de reproduire les fonctions qui n'par
Mage_Catalog_Block_Breadcrumbs
bloc. Après l'application des modifications en conséquence, votre chapelure page maintenant ressembler àNoter que j'ai simplement appliqué ce que nous avons vu au-dessus de ce bloc via
_construct
,_prepareLayout()
etgetTitleSeparator()
. C'est tout . Nous sommes faitMaintenant à nouveau retirer le cache et les charger à nouveau la page. Il y est . Nos chemins de navigation ne s'affiche que pour les pages de catégories de maintenant.
Remarque: Ne pas modifier les fichiers de base comme je l'ai décrit ici. Vous avez besoin de faire ces choses sans toucher aux fichiers de base. Vous devez créer un module selon les détails que j'ai donnés ici.
Si vous n'avez pas le temps. Je l'ai fait pour vous. Ses gratuit.
oui, vous avez besoin de faire une chose. Vous avez besoin d'appeler mon chapelure bloc comme ça .
<?php echo $this->getChildHtml('category_breadcrumbs'); ?>
dans votrecategory/view.phtml
Néanmoins, il ne fonctionne pas. J'ai ajouté dans la vue.phtml page.
Amit est la solution qui a fonctionné pour vous ?
j'ai vérifié dans mon système et il fonctionne très bien
OriginalL'auteur Rajeev K Tomy
Je sens qu'il y a une façon plus élégante de le faire.
Rajeev K Tomy explications du problème sont bons, mais je tiens à proposer ce que l'OMI est une solution de nettoyage la fois sur le plan côté (pas besoin de redéfinir
catalog.products
bloc) et sur le code côté (pas besoin de reconstruire le fil d'ariane).Disposition
Tout ce que nous faisons ici dans la mise en page est la suppression de l'original de la chapelure de bloc (plutôt que de l'enlever) et l'ajout d'un
my_module.breadcrumbs
bloc de la catégorie.produits.Code de My_Module_Block_Breadcrumbs
L'idée de ce code est de recréer le manque
breadcrumbs
bloc que nous avons supprimé dans la mise en page. Dès que cettebreadcrumbs
bloc existe,Mage_Catalog_Block_Breadcrumbs::_prepareLayout
! Et il va ensuite créer la chapelure correctement sans la nécessité pour nous de recode.Enfin, nous créons le
_toHtml()
méthode de récupérer lesbreadcrumbs
bloc qui est maintenant peuplée et cracher son contenu HTML.Dernière chose à faire est d'appeler notre
my_module.breadcrumbs
bloc dans le bon fichier de modèle.Dans votre thème catalog/category/vue.phtml fichier
Comme indiqué dans
catalog.xml
de base des fichiers de mise, le modèle utilisé pour lacategory.products
de référence que nous utilisons dans notre fichier de mise en page ci-dessus estcatalog/category/view.phtml
. Donc, tout ce que nous avons à faire est de rendre le code HTML de lamy_module.breadcrumbs
dans ce modèle.OriginalL'auteur Hervé Guétin