Das A
ist der Alias eines Moduls . In diesem Fall page
ist die Abkürzung für Mage_Page_Block
(sie ist definiert in, app/code/core/Mage/Page/etc/config.xml
wenn Sie sehen möchten).
Dies B
ist der Klassenname relativ zum Alias. Die Anfangsbuchstaben jedes Wortes werden groß geschrieben. In diesem Fall html
wird Html
und wird an den aufgelösten Alias angehängt, so ist es Mage_Page_Block_Html
. Dies ist wahrscheinlich in der Datei enthalten, app/code/core/Mage/Page/Block/Html.php
da Klassennamen direkt in Speicherorte in Magento übersetzt werden.
Wenn Sie einen Modellalias anstelle eines Blockalias verwenden page
würden, wäre dies Mage_Page_Model
stattdessen der Fall . Das Gleiche gilt auch für Ressourcenmodelle und Helfer. Ihr eigenes Modul muss diese in seiner Konfiguration definieren, wenn es Blöcke, Modelle und Helfer haben soll.
Um mehr über Magento-Blocktypen zu erfahren, werden im Folgenden einige integrierte Blocktypen aufgeführt, die im Layout häufig verwendet werden.
core/template
: Dieser Block rendert eine Vorlage, die durch ihrtemplate
Attribut definiert ist . Die meisten im Layout definierten Blöcke sind vom Typ oder Subtyp voncore/template
.page/html
: Dies ist ein Subtyp voncore/template
und definiert den Root-Block. Alle anderen Blöcke sind untergeordnete Blöcke dieses Blocks.page/html_head
: Definiert den HTML-Kopfabschnitt der Seite, der Elemente zum Einschließen von JavaScript, CSS usw. enthält.page/html_header
: Definiert den Kopfteil der Seite, der das Site-Logo, Top-Links usw. enthält.page/template_links
: Mit diesem Block wird eine Liste von Links erstellt. In der Fußzeile und im Kopfbereich sichtbare Links verwenden diesen Blocktyp.core/text_list
: Einige Blöcke wiecontent
,left
,right
usw. sind vom Typcore/text_list
. Wenn diese Blöcke gerendert werden, werden alle untergeordneten Blöcke automatisch gerendert, ohne dass diegetChildHtml()
Methode aufgerufen werden muss.page/html_wrapper
: Mit diesem Block wird ein Wrapper-Block erstellt, der seine untergeordneten Blöcke in einem von der Aktion festgelegten HTML-Tag rendertsetHtmlTagName
. Das Standard-Tag ist,<div>
wenn kein Element festgelegt ist.page/html_breadcrumbs
: Dieser Block definiert Breadcrumbs auf der Seite.page/html_footer
: Definiert den Fußzeilenbereich der Seite, der Fußzeilenlinks, Copyright-Meldungen usw. enthält.core/messages
: Dieser Block rendert Fehler- / Erfolgs- / Benachrichtigungsmeldungen.page/switch
: Dieser Block kann für den Sprach- oder Speicherumschalter verwendet werden.Dies ist eine Liste nur häufig verwendeter Blocktypen. Es gibt viele andere Blocktypen, die in erweiterten Theme-Implementierungen verwendet werden.
quelle
Seite ist ein Frontend-
etc/config.xml
Name, der in der Datei definiert ist. HTML ist ein Blockklassennamemehr Details:
In dieser Zeile
type(type="page/html")
definieren Sie den Blockklassennamen, der sich auf Ihren bezieht,template(template="example/view.phtml">)
und der Name ist für jeden Block eindeutig.siehe zuerst Ordnerstruktur
legen wir fest
FrontendName = 'mymodule'
In hello.php haben Sie eine Funktion erstellt
und jetzt kommen Sie zu Ihrer Layout-XML-Seite:
<block type="mymodule/data" name="xyz" template="example/view.phtml">
hier ist mydata frontend nameund jetzt kommen Sie zu Ihrer Vorlage
Hier können Sie direkt die Funktion mydata () aufrufen
mögen
Jetzt können Sie Ihre Ausgabe im Browser "Block heißt" erhalten.
quelle
Nein, du liegst nicht falsch. Aber das
"<!-- script -->"
kann verwirrend sein. Lassen Sie uns klarstellen: Wie in den obigen Antworten angegeben, handelt es sich um einen Alias, der aus zwei Teilen bestand. Der erste Teil ("A") selbst ist der Alias, den Sie für die Klassen Ihres Moduls in den Modulen Ihres Moduls definieren. Derconfig.xml
zweite Teil ist ein Pfad relativ zum Knotenwert. Diese zusammen ("A" + großgeschriebenes "B") werden in einen Klassennamen übersetzt, wobei der erste Teil (der Wert des "A" -Knotens) genau so verwendet wird, wie Sie ihn definieren (achten Sie auf Groß- / Kleinbuchstaben, wenn Sie keine Stunden möchten des Leidens) und der zweite Teil wird nach jedem Unterstrich großgeschrieben. Beginnen Sie also mit dem A / B-Beispiel mit einem Block und dieser Konfiguration:Zur Laufzeit
A/B
würde durch die Magento-Konfiguration aufgelöst,Vendor_Module_Block_B
die dann vom Autoload aus folgendem Pfad aufgenommen würde :public/app/local/Vendor/Module/Block/B.php
. Um ein besseres Verständnis Ich rate bekommen Sie einen Blick auf die nehmenMage_Core_Model_Config::getGroupedClassName()
,Mage_Core_Model_Config::getModelInstance()
undVarien_Autoload::autoload()
.quelle
Ich weiß nichts über den Typ "B", aber "A" bezieht sich auf Ihr Modul-Namensschild in der Datei config.xml
Ein Beispiel in der Datei config.xml:
nb: ich hoffe ich liege nicht falsch ..
quelle