Magento structurelle des blocs, des blocs de contenu et phtml modèles
J'ai juste commencé à lire sur la Magentos (1.9 EC) mise en page et la façon dont il fonctionne avec le XML et les fichiers PHTML.
Je suis venu à travers structurels des blocs et des blocs de contenu.
Je suis à la recherche à la page.xml fichier de Magento 1.9 installé RWD paquet de thème par DÉFAUT.
Je l'ai collé en dessous de ce que je crois est l'en-tête, contenu et pied de page à partir de la page.xml fichier.
Mes questions
1) Est un bloc considéré comme un bloc de contenu le moment, il est affecté à un "template="XXXX.phtml" attribut? Et si non, il est connu comme un bloc structurel?
2) Pour les blocs structurels qui n'ont pas le template="XXX", comment est-il finalement le lien avec les fichiers phtml? Ma question vient du contexte de la recherche sur le bloc d'en-tête comme on le voit ci-dessous quelques-uns de ses sous-blocs ont "modèle" de l'attribut, mais aucun d'entre eux semblent pointer dans l'en-tête.phtml de "\template\page\html" répertoire, que j'ai été d'édition pour personnaliser l'apparence du site Magento message de Bienvenue.
<block type="page/html_header" name="header" as="header">
<block type="page/template_links" name="top.links" as="topLinks"/>
<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
<block type="core/text_list" name="top.menu" as="topMenu" translate="label">
<label>Navigation Bar</label>
<block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml">
<block type="page/html_topmenu_renderer" name="catalog.topnav.renderer" template="page/html/topmenu/renderer.phtml"/>
</block>
</block>
<block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
<label>Page Header</label>
<action method="setElementClass"><value>top-container</value></action>
</block>
<block type="page/html_welcome" name="welcome" as="welcome"/>
</block>
<block type="core/text_list" name="content" as="content" translate="label">
<label>Main Content Area</label>
</block>
<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
<block type="page/html_wrapper" name="bottom.container" as="bottomContainer" translate="label">
<label>Page Footer</label>
<action method="setElementClass"><value>bottom-container</value></action>
</block>
<block type="page/switch" name="store_switcher" as="store_switcher" after="*" template="page/switch/stores.phtml"/>
<block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml">
<action method="setTitle"><title>Quick Links</title></action>
</block>
<block type="page/template_links" name="footer_links2" as="footer_links2" template="page/template/links.phtml">
<action method="setTitle"><title>Account</title></action>
</block>
<!-- This static block can be created and populated in admin. The footer_links cms block can be used as a starting point. -->
<!--<block type="cms/block" name="footer_social_links">
<action method="setBlockId"><block_id>footer_social_links</block_id></action>
</block>-->
</block>
Vous devez vous connecter pour publier un commentaire.
Il existe principalement deux types de blocs dans Magento
Structurels blocs :- Ces blocs définit en fait la structure d'une page de bloc. C'est là que les blocs de contenu réside
Exemple :
Header
,Left
,Right
,Footer
etMain
blocs (définit dans page.xml)Des blocs de contenu :- Ces blocs sont en fait maintenant le contenu. Dépend du type de bloc, le contenu tenez par ces blocs varie
Exemple :- Tous les blocs personnalisés,
core/template
bloc,cms/page
bloc etc.Normalement, chaque bloc de contenu devrait rentrer dans l'une quelconque des strucural bloc que décrit ci-dessus. Ces bloc de contenu est titulaire d'un contenu différent dépendent de son type. Par exemple, un
cms/page
bloc est l'intention de tenir des cms contenu de la page que nous avons mis en travers de la section admin.catalog/product_view
bloc est utilisé pour contenir un produit d'affichage du contenu. Comme vous l'avez déjà noté ces deux blocs de contenu afin de tenir contenu, mais le contenu differes de bloc à bloc, en fonction de son type spécifié. Cela dit, nous nous penchons sur votre problème1) blocs Structurels détient des structures d'une page. Bloc de contenu relève de chaque structurelle bloc. Ainsi, dans la disposition ci-dessus code, le bloc de type
page/html_header
est un bloc structurel. Alors que tous les autres blocs qui viennent à l'intérieur de ce bloc sont des blocs de contenu de ci-dessus structurels bloc. En d'autres termes ce sont des enfants de l'en-tête de bloc structurel. Maintenant, penchons-nous sur ceheader
bloc à l'arrière.Il est là. Notre structure de bloc est en fait un modèle par le biais de backend. Cela signifie que le modèle, qui correspondent à nos bloc d'en-tête réside dans
app/design/frontend/<your_package>/<your_theme>/template/page/html/header.phtml
. Si vous ouvrez ce fichier, vous pouvez voir que le modèle est en fait la définition de la partie en-tête de notre page à l'aide de html, de css et de js et de l'invocation de son enfant blocs à l'aide d'une méthodegetChildHtml()
. Une partie du fichier ci-dessus est illustré ci-dessous.Comme vous pouvez le voir ci-dessus, il appelle l'enfant blocs(en d'autres termes des blocs de contenu) qui sont définis dans
page.xml
fichier de mise en page, à l'aide degetChildHtml()
méthode.Cela signifie que, si vous ajoutez un enfant personnalisé bloc à l'intérieur de la
header
structurels bloc et n'a pas l'invoquer dansheader.phtml
à l'aide degetChildHtml()
méthode, votre bloc de contenu ne va pas se montrer en frontend.Vous pouvez également définir
header.phtml
pour le blocheader
parpage.xml
comme ceIl n'y a pas de problème avec cela. Donc en bref, on ne peut dire en général que d'un bloc qui définit un fichier phtml est un bloc de contenu ou un strutural bloc. Comment ces deux bloc defferes purement dépend de ce que ceux de bloc détient.
Petite Remarque : Un cotent bloc peut contenir d'autres blocs de contenu. Ce que nous faisons est la plupart du temps, c'est ça. Signifie l'ajout de notre contenu personnalisé bloc à un autre bloc de contenu déjà existant dans magento.
2) Si vous regardez sur les différents blocs dans magento, vous pouvez voir que, quelle que soit structurelle bloc/bloc de contenu, un bloc peut définir un modèle par le biais de mise en page ou via le backend. Nous pouvons définir le modèle d'un bloc à l'aide d'un observateur aussi. J'ai déjà dit
header
structurels bloquer l'ensemble avec le modèleheader.phtml
. Dans ce cas, c'est grâce à backend côté.
Espère que vous aide à comprendre le concept.
MODIFIER
Pas de vous absoulutely mal. Dans magento mise en page regroupe l'intégralité de la structure d'une page. Il contient tous les blocs qui doivent rendre pour une page en particulier.
Supposons que vous avez une url
www.mydomain.com/index.php/customer/account
. Ce que magento n'est maintenant qu'il va diviser l'url et de trouver le module qui génère des url. Voici donc ci-dessus url split comme ceMaintenant magento sera requête pour laquelle le module qui est responsable pour le frontend nom
customer
. Il est défini parMage_Customer
module de base. Maintenant magento recherchez le contrôleur qui gère cette url. Dans notre url, la partie qui mentionnent c'estaccount
. Donc, il va chercher lesAccountController.php
fichier dansMage_Customer
module. Maintenant, encore une fois magento regarder pour qui la méthode qui gère l'url. Mais dans notre url il n'y a pas de méthode spécifiée. Donc, il assumera la méthodeindex
donc. Maintenant, regardez sur cette méthode.C'est la partie importante. D'abord la méthode appelle une fonction
loadLayout()
. Ce simple code est beaucoup de travail derrière le curton. Il va générer une grande mise en page de l'arbre qui correspondent à la page qui va afficher en frontend. Où est-ce que les plans sont définis ? Bien sûr.. C'est dans la mise en forme de fichiers XML. Mise en page fichier xml définit ce que sont les blocs qui devrait la rendre à cette url ci-dessus et de ce qui ne le sont pas. Pour un exemple dans ce contexte, follwing poignées seront traitées par magento.Magento va générer une énorme mise en page de l'arbre qui sera composé de tous les blocs qui est spécifié en vertu de la disposition de ces poignées. Mise en page poignées peuvent venir dans n'importe quelle forme de fichier XML qui vient sous le répertoire
app/design/frontend/<your_package>/<your_theme>/layout
. Après la création de cette disposition de l'arbre, magento pour rendre ces la disposition de l'arbre à l'aide du coderenderLayout()
. Essentiellement, ce qu'il va faire est de convertir ces mise en page en html et de les rendre (Pour cela, il utilise des fichiers de modèle et de la peau).Maintenant que penseriez-vous ? Mise en page XMLs sont aussi simple que cela? 🙂