Ich möchte ein paar Dinge tun, und ich bin neu und sehr weit davon entfernt, Magento zu beherrschen. Was ich verlange, ist der beste und prägnanteste Weg, um Folgendes zu tun:
Ich möchte den Inhalt meiner Homepage - und wahrscheinlich jeder anderen CMS-Seite, wenn ich in diesem Projekt weiter komme - in meinem Texteditor und nicht im Admin-Bereich WYSIWYG bearbeiten. Ich denke, ich hätte nur eine Vorlage,
home-content.phtml
die mein Markup für meine Karussells enthält und was auch immer ich sonst auf meiner Homepage platziere. Es schien mir der logischste Weg, dies zu tun, meine Methodehome-content.phtml
an diegetChildHtml('content')
Methode im Admin-Bereich anzuhängen -> CMS -> Seiten -> Startseite -> Registerkarte 'Design' -> XML-Layout aktualisieren mit Code wie folgt:<reference name="content"> <block type="core/template" name="home-content" as="home-content" template="home-content.phtml" /> </reference>
Das wurde jedoch durch das nächste, was ich tun wollte, durcheinander gebracht ...
Meiner Meinung nach ist die Standard-Magento-HTML-Struktur schrecklich aufgebläht, mit zu vielen verschachtelten
div
( Wrapper -> Seite -> Hauptcontainer col1-Layout -> Haupt -> Spalte-Haupt, nur um zum Inhalt einer Seite zu gelangen). . Es macht das Styling mit Sass für mich zu einem Albtraum, da all diese Stile in 5 verschiedene Sass-Partials aufgeteilt sind. Daher bereinige ich die Standardstruktur so, dass sie meinen eigenen Konstruktionsprinzipien entspricht. Ein Teil davon bedeutet, leere Elemente wie die berüchtigten zu entfernen<div class="std"> </div>
. Der effektivste Weg, dies zu beseitigen (da ich nicht vorhabe, das Admin-Panel für Inhalte zu verwenden), ist<remove name="cms.wrapper">
das CMS Home Layout Update XML. Das Problem ist, dass dadurch alles entfernt wird, was ich mit der obigen Methode (reference name="content"
) hinzufüge .
Grundsätzlich gilt: Wie kann ich meiner Homepage mit a Inhalte hinzufügen .phtml
und diese<div class="std"> </div>
konfliktfrei entfernen ? Ich verstehe nicht, wie sich die Funktionalität von admin -> CMS -> Layout Update XML von der Funktionalität von layout.xml unterscheidet oder warum ich eine über die andere verwenden sollte (wie könnte ich nicht <cms index-index>
das Gleiche tun?). .
Vielen Dank im Voraus an alle.
quelle
.std
Listenstile hinzugefügt, bei denen sie nicht erwünscht sind. Mit Magento ist dies vorhersehbar ein langwieriger Vorgang.Antworten:
Lassen Sie uns Ihr Problem in drei Abschnitte unterteilen und überprüfen.
1. Sie müssen Ihrer CMS-Seite eine Vorlagendatei hinzufügen
Die Methode, die Sie hier anwenden, wird mit Sicherheit funktionieren. Das heißt, Sie müssen dieses Code-Snippet auf Ihrer CMS-Seite unter der Registerkarte "Design" hinzufügen
Da Ihre Vorlagendatei direkt
content
blockiert wird, wird Ihr Vorlageninhalt von Magento gerendert. Sie müssen also keineas
Eigenschaft in Ihrem verwendencore/template block
.2. Wie vermeide ich?
<div class="std"></div>
Dieses div ist eigentlich ein Wrapper-div-Element für CMS-Seiten. Siehe die Definition dieses Blocks hier.
Wie Sie sehen können,
cms.wrapper
ist der Block vom Typpage/html_wrapper
. Dieser Block umschließt den gesamten untergeordneten Block mit einem div-Element (Standardelement) und rendert die untergeordneten Blöcke automatisch.Um diesen Block zu vermeiden, haben Sie diesen Code verwendet
Es ist jedoch völlig falsch. Es entfernt tatsächlich das Wrapper-Div. Gleichzeitig wird aber auch der untergeordnete Block entfernt
cms_page
. Diescms_page
ist mit einem Typcms/page
. Das heißt, es bezieht sich auf den BlockMage_Cms_Block_Page
. Dieser Block ist das "Herz" von CMS-Seiten. Durch das Entfernen des Wrappers wurde auch der Herzblock von CMS Page gelöscht. Aus diesem Grund haben Sie auf Ihrer CMS-Seite keine Ausgabe erhalten.Was sollten Sie also tun, um diesen Wrapper zu vermeiden? Die Antwort ist ziemlich einfach. Entfliehen Sie
cms_page
der Verpackung und entfernen Sie die Verpackung sicher. Hier ist der Code, den Sie in Ihrem Abschnitt zum Layout der CMS-Seite verwenden müssen.Wie Sie im XML-Code des Layouts sehen können, entfernen wir zuerst den Wrapper und fügen daher einen
cms_page
Block durch unseren Code ein. Wie Sie sehen, haben wir auch unseren Vorlagenblock verwendet. Dadurch wird der Inhalt der Vorlagendatei zuerst auf Ihrer Seite gerendert, gefolgt vom Inhalt der CMS-Seite.3. Wie sich admin -> CMS -> Layout Update XML von der Funktionalität von layout.xml unterscheidet
Angenommen, Sie möchten ein spezielles Erscheinungsbild für eine der CMS-Seiten, die Sie auf Ihrer Website haben. Die beste Methode, die Sie wählen können, ist das Hinzufügen einer Layoutaktualisierung über admin-> CMS-> Layout. Dies gilt nur für die CMS-Seite.
Wenn Sie jedoch einige allgemeine Änderungen an allen CMS-Seiten vornehmen müssen, ist dies problemlos möglich
layout.xml
.Welche Methode zum Ändern des Layouts angewendet werden sollte, hängt im Allgemeinen davon ab, was Sie erreichen möchten. Abhängig davon müssen Sie mit einer Methode gehen. Nicht alle Methoden.
Ich hoffe, das hilft
quelle
Wenn es nur eine beleidigende Seite gibt, dann der beste und einfachste Weg IMO:
Bearbeiten Sie die
"Design"
Registerkarte der CMS-Seite .Verweisen Sie auf das Wrapper-Element und
setElementClass
wenden Sie mit der Methode entweder keine Klasse oder eine neue Klasse an.quelle
Sie sollten das Layout ändern, normalerweise 1column.phtml, 2columns.phtml usw., und sie so gestalten, wie Sie es möchten / brauchen.
Diese PHTMLs sind die Grundstruktur jedes Layouts und werden programmgesteuert mit XML-Updates gefüllt.
Dies wirkt sich auf nichts anderes aus, wenn Sie die Konsistenz zwischen Ihren Vorlagen und Layouts in Ihrem eigenen Thema beibehalten.
quelle
if this is the home page, include this code ...
auf allen Layoutseiten hinzuzufügen und dann nur diegetCHildHtml('content')
auf allen Seiten zu löschen ? Ich möchte lernen, wie man Magento und seine Tools besser einsetzt, nicht nur das Problem mit dem Vorschlaghammer.Ich habe eine Minute gebraucht, um alle Anweisungen in der akzeptierten Antwort zu verstehen. Um darauf zurückzugreifen, war dies alles, was erforderlich war, um den Wrapper für alle CMS-Seiten zu entfernen:
<div class="std"></div>
Ändern Sie in cms.xml den Block cms_page in:
quelle