Je veux faire quelques choses, et je suis nouveau et très très loin de maîtriser Magento; ce que je demande, c'est la meilleure façon, la plus concise, de faire ce qui suit:
Je voudrais modifier le contenu de ma page d'accueil - et probablement toutes les autres pages CMS, à mesure que j'avance dans ce projet - dans mon éditeur de texte et non dans le panneau d'administration WYSIWYG. Je suppose que j'aurais juste un modèle comme
home-content.phtml
contenant mon balisage pour mes carrousels et tout ce que je finirais par mettre sur ma page d'accueil. Il m'a semblé que la façon la plus logique de le faire était d'attacher mahome-content.phtml
à lagetChildHtml('content')
méthode dans le panneau d'administration -> CMS -> Pages -> Page d'accueil -> onglet 'Conception' -> Layout Update xml avec un code comme celui-ci:<reference name="content"> <block type="core/template" name="home-content" as="home-content" template="home-content.phtml" /> </reference>
Cependant, cela a été gâché par la prochaine chose que je voulais faire ...
À mon avis, la structure HTML Magento par défaut est horriblement gonflée, avec trop d'imbrications
div
( wrapper -> page -> conteneur principal col1-layout -> main -> col-main juste pour accéder au contenu d'une page) . Cela rend le style avec Sass un cauchemar pour moi, avec tous les styles de ces classes divisés en 5 partiels Sass différents. Donc, je nettoie la structure par défaut pour qu'elle corresponde à mes propres principes de conception. Cela implique en partie de supprimer les éléments vides, tels que l'infâme<div class="std"> </div>
. Le moyen le plus efficace de s'en débarrasser (car je ne prévois pas d'utiliser le panneau d'administration pour le contenu) est<remove name="cms.wrapper">
dans le XML Home Layout Update XML. Le problème est que cela supprime tout ce que j'ajoute avec la méthode ci-dessus (reference name="content"
).
Fondamentalement: comment ajouter du contenu à ma page d'accueil avec un .phtml
et supprimer le <div class="std"> </div>
sans conflit? Je ne comprends pas en quoi la fonctionnalité de admin -> CMS -> mise à jour XML diffère de la fonctionnalité de layout.xml, ni pourquoi je devrais utiliser l'une sur l'autre (comme, ne pourrais-je pas utiliser <cms index-index>
pour faire la même chose?) .
Merci d'avance, tout le monde.
la source
.std
ajoute des styles de liste là où ils ne sont pas souhaités. Comme prévu avec Magento, c'est une procédure longue à résoudre.Réponses:
Laissez-nous diviser votre problème en 3 sections et l'examiner.
1. Vous devez ajouter un fichier modèle à votre page CMS
La méthode que vous adopterez ici fonctionnera à coup sûr. C'est-à-dire que vous devez ajouter cet extrait de code dans votre page cms, sous l'onglet de conception
Étant donné que votre fichier de modèle est directement
content
bloqué, le contenu de votre modèle sera rendu par magento. Vous n'avez donc pas besoin d'utiliser laas
propriété dans votrecore/template block
.2. Comment éviter
<div class="std"></div>
Ce div est en fait un élément div wrapper pour les pages cms. Voir la définition de ce bloc ici.
Comme vous pouvez le voir, le
cms.wrapper
bloc est de typepage/html_wrapper
. Ce que fait ce bloc, c'est qu'il enveloppera tout son bloc enfant avec un élément div (élément par défaut) et rendra les blocs enfants automatiquement.Afin d'éviter ce blocage, vous avez utilisé ce code
Mais c'est complètement faux. Il supprime effectivement le div wrapper. Mais avec cela, il supprime également son bloc enfant
cms_page
. C'estcms_page
avec un typecms/page
. Cela signifie qu'il fait référence au blocMage_Cms_Block_Page
. Ce bloc est le «cœur» des pages CMS. Ainsi, la suppression de l'emballage a également anéanti le bloc cœur de la page CMS. C'est pourquoi vous n'avez obtenu aucune sortie dans votre page cms.Alors, que devez-vous faire pour éviter cet emballage? La réponse est plutôt simple. Sortez
cms_page
de l'emballage puis retirez-le en toute sécurité. Voici donc le code que vous devez utiliser dans votre section de disposition de page cms.Comme vous pouvez le voir dans le code XML de mise en page, nous supprimons d'abord le wrapper et donc le
cms_page
bloc inséré dans notre code. Nous avons également utilisé notre bloc de modèles comme vous pouvez le voir. Cela rendra le contenu du fichier modèle en premier dans votre page, puis suivi du contenu de la page cms.3. En quoi admin -> CMS -> mise à jour XML diffère de la fonctionnalité de layout.xml
Supposons que vous souhaitiez avoir une apparence spéciale pour l'une des pages CMS que vous avez dans votre site. Pour cela, la meilleure méthode que vous pouvez choisir est d'ajouter la mise à jour de la mise en page via admin-> CMS-> Mise en page. Ce sera uniquement valable pour la page CMS.
Mais si vous avez besoin d'appliquer des modifications générales à toutes les pages CMS, il serait facile d'y aller
layout.xml
.Donc, en règle générale, la méthode à adopter pour modifier la mise en page dépend uniquement de ce que vous souhaitez réaliser. En fonction de cela, vous devez choisir une méthode. Pas toutes les méthodes.
J'espère que cela pourra aider
la source
S'il n'y a qu'une seule page incriminée, alors la manière la plus simple et la plus simple de l'OMI:
Modifiez l'
"Design"
onglet de la page CMS .Référencez l'élément wrapper, utilisez la
setElementClass
méthode pour n'appliquer aucune classe ou une nouvelle classe.la source
Vous devez modifier la disposition, normalement 1column.phtml, 2columns.phtml, etc. et les faire comme vous le souhaitez / besoin.
Ces PHTML sont la structure de base de toute mise en page et sont remplis par programme de mises à jour XML.
Cela n'affectera rien d'autre si vous gardez la cohérence entre vos modèles et mises en page dans votre propre thème.
la source
if this is the home page, include this code ...
sur toutes les pages de mise en page, puis simplement supprimer legetCHildHtml('content')
sur toutes les pages? Je veux apprendre à utiliser Magento et ses meilleurs outils, pas seulement à marteler le problème.Il m'a fallu une minute pour comprendre toutes les directions de la réponse acceptée, donc pour la superposer, c'est tout ce qui était nécessaire pour supprimer le wrapper de toutes les pages CMS:
<div class="std"></div>
Dans cms.xml, remplacez le bloc cms_page par:
la source