it-swarm.com.de

Grundlegendes zu Magento Block und Blocktyp

Ich möchte nur die Bedeutung von verstehen

 <block type="page/html" name="root" output="toHtml" template="example/view.phtml">

Ich habe viele Referenzen von Google erhalten und viele Dinge darüber verstanden, aber ich kann immer noch nicht verstehen, wie type="page/html" Ein Typ für mein benutzerdefiniertes Modul erstellt wird.

Bitte erkläre

type="A/B"

Lassen Sie mich wissen, woher diese A und B kommen?

105
Anup_Tripathi

Das A ist das Alias eines Moduls. In diesem Fall steht page für Mage_Page_Block (definiert in app/code/core/Mage/Page/etc/config.xml Wenn du sehen willst).

Das B ist der Klassenname relativ zum Alias, Anfangsbuchstaben jedes Wortes werden groß geschrieben. In diesem Fall wird html zu Html und an den aufgelösten Alias ​​angehängt. Es ist also Mage_Page_Block_Html. Dies ist wahrscheinlich in der Datei app/code/core/Mage/Page/Block/Html.php weil Klassennamen direkt in Orte in Magento übersetzt werden.

Wenn Sie einen Modellalias anstelle eines Blockalias verwenden, ist pageMage_Page_Model stattdessen. Gleiches gilt für Ressourcenmodelle und Helfer. Ihr eigenes Modul muss diese in it's config definieren, wenn es Blöcke, Modelle und Helfer haben soll.

126
clockworkgeek

Um mehr über die Magento-Blocktypen zu erfahren, folgen einige integrierte Blocktypen, die im Layout häufig verwendet werden.

  1. core/template: Dieser Block rendert eine Vorlage, die durch das Attribut template definiert ist. Die meisten im Layout definierten Blöcke haben den Typ oder Subtyp core/template.
  2. page/html: Dies ist ein Subtyp von core/template Und definiert den Root-Block. Alle anderen Blöcke sind untergeordnete Blöcke dieses Blocks.
  3. page/html_head: Definiert den HTML-Kopfbereich der Seite, der Elemente zum Einschließen von JavaScript, CSS usw. enthält.
  4. page/html_header: Definiert den Kopfbereich der Seite, der das Site-Logo, die Top-Links usw. enthält.
  5. page/template_links: Mit diesem Block wird eine Liste von Links erstellt. Links, die im Fuß- und Kopfbereich sichtbar sind, verwenden diesen Blocktyp.
  6. core/text_list: Einige Blöcke wie content, left, right usw. sind vom Typ core/text_list. Beim Rendern dieser Blöcke werden alle untergeordneten Blöcke automatisch gerendert, ohne dass die MethodegetChildHtml() aufgerufen werden muss.
  7. page/html_wrapper: Dieser Block wird verwendet, um einen Wrapper-Block zu erstellen, der seine untergeordneten Blöcke in einem HTML-Tag rendert, das durch die Aktion setHtmlTagName festgelegt wurde. Das Standard-Tag ist <div>, Wenn kein Element festgelegt ist.
  8. page/html_breadcrumbs: Dieser Block definiert Breadcrumbs auf der Seite.
  9. page/html_footer: Definiert den Fußzeilenbereich der Seite, der Fußzeilenlinks, Copyright-Meldungen usw. enthält.
  10. core/messages: Dieser Block gibt Fehler-/Erfolgs-/Hinweismeldungen aus.
  11. page/switch: Dieser Block kann für den Sprach- oder Store-Switcher verwendet werden.

Dies ist eine Liste nur häufig verwendeter Blocktypen. Es gibt viele andere Blocktypen, die in erweiterten Themenimplementierungen verwendet werden.

156
Kamesh Jungi
<block type="page/html" name="root" output="toHtml" template="example/view.phtml">

page ist ein Frontendname, der in der etc/config.xml - Datei definiert ist. html ist ein Blockklassenname

mehr Details:

in dieser Zeile type(type="page/html") definieren Sie den Blockklassennamen, der mit Ihrem template(template="example/view.phtml">) zusammenhängt. Der Name ist für jeden Block eindeutig.

siehe zuerst Ordnerstruktur

app> local> namespace> modulenname> etc> config.xml

wir setzen FrontendName = 'mymodule'

app> local> namespace> modulenname> Block> hello.php

in hello.php hast du eine funktion erstellt

   class namespace_modulename_Block_Data extends Mage_Core_Block_Template
   {
    public function mydata()
        {
            $data = "Block is called";
            return $data;
         }     
}   

und jetzt kommen Sie zu Ihrer Layout-XML-Seite:

<block type="mymodule/data" name="xyz" template="example/view.phtml"> Hier sind meine Daten der Name des Frontends

und jetzt komm zu deiner Vorlage

seite template/example/view.phtml

hier können Sie direkt die Funktion mydata () aufrufen

mögen

<div>
<?php echo $this->mydata(); ?>
</div>

jetzt können Sie Ihre Ausgabe im Browser "Block heißt" erhalten.

ich kenne den Typ "B" nicht, aber "A" bezieht sich auf das Tag des Modulnamens in der Datei config.xml. Beispiel in der Datei config.xml:

<A><!-- script --></A>

Nein, du liegst nicht falsch. Aber der "<!-- 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 config.xml Ihres Moduls definieren ist ein Pfad relativ zum Wert des Knotens. Diese zusammen ("A" + großgeschriebenes "B") werden in einen Klassennamen übersetzt, wobei der erste Teil (der Wert des Knotens "A") genau so verwendet wird, wie Sie ihn definiert haben (achten Sie auf Groß-/Kleinschreibung, 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:

<config>
  ...
  <global>
    <blocks>
      <A>Vendor_Module_Block</A>
    </blocks>
  </global>
  ...
</config>

In der Laufzeit würde A/B Von der Magento-Konfiguration zu Vendor_Module_Block_B Aufgelöst, was dann vom Autoload aus dem folgenden Pfad aufgenommen würde: public/app/local/Vendor/Module/Block/B.php. Zum besseren Verständnis empfehle ich Ihnen, sich die Mage_Core_Model_Config::getGroupedClassName(), Mage_Core_Model_Config::getModelInstance() und Varien_Autoload::autoload() anzuschauen.

5
ZeNC

Ich kenne den Typ "B" nicht, aber "A" bezieht sich auf Ihr Modulnamen-Tag in config.xml

Ein Beispiel in der Datei config.xml:

<A><!-- script --></A>

nb: ich hoffe ich liege nicht falsch.

3
Rully