Frage

Beim Erstellen der Open Graph-Erweiterung in Magento bin ich auf ein Problem gestoßen - obwohl mein Metatag korrekt ist, kann Facebook mein og-Tag nicht abfangen, da vor meinem Meta / og-Tag zu viel Code steht.

Hat das noch jemand erlebt und hast du irgendwelche Vorschläge?

<reference name="head">
    <block type="catalog/product_view" name="product.opengraph">
        <action method="setTemplate">
            <template>socialtag/opengraph_product.phtml</template>
        </action>
    </block>      
</reference>
War es hilfreich?

Lösung

Hier ist eine alternative Lösung.Es ist nicht schön und sollte als Hack betrachtet werden.Es geht auch gegen die Zwecke des Layoutsystems von Magento.Wenn jedoch Ihre -anforderung die Basiskopfvorlage nicht überschreiben soll, dann versuchen Sie dies:

Inbetriebnahme über Event Observer

in Ihrem Modul CONFIG XML, fügen Sie das folgende Ereignis hinzu: generasacodicetagpre.

und dann würden Sie eine Beobachterklasse erstellen, um zusammenzufassen: generasacodicetagpre.


Soweit ich sehen kann, ist dies nur möglich, um Ihr Problem zu lösen.Weder der Leiterblock der Börse noch der Basisvorlage erzielen Bestimmungen zum Hinzufügen von generationspoDiCETAGCODE-Tags über seinem Anruf für den Anruf für das untergeordnete HTML.

Andere Tipps

Ich bin mir nicht sicher, was genau im Kopf gerendert wird, das Ihre Meta-Tags so weit nach unten drückt, und ich habe auch nicht gesehen, dass dies ein Problem darstellt (außer der "Faustregel", die besagt, Meta-Tags so hoch wie möglich in der zu platzieren HEAD).

Auf jeden Fall könnten Sie dies versuchen:

<reference name="head">
    <block type="catalog/product_view" name="product.opengraph" before="-">
        <action method="setTemplate">
            <template>socialtag/opengraph_product.phtml</template>
        </action>
    </block>      
</reference>

Beachten Sie die before="-" Attribut.Dies wird während der Blockgenerierung aufgegriffen (siehe Mage_Core_Model_Layout::_generateBlock) und oben im Stapel des übergeordneten Blocks eingefügt (siehe Mage_Core_Block_Abstract::insert).

Leider wird dies allein Ihr Problem nicht lösen, da die Standard-Magento-Kopfvorlage ihre untergeordneten Elemente nicht in sortierter Reihenfolge wiedergibt.Sie müssen diese Vorlage also selbst überschreiben und das Sortierflag erzwingen.

Ändern Sie dazu die Kopfvorlage über Layout-XML:

<reference name="head">
    <action method="setTemplate">
        <template>your/module/head.phtml</template>
    </action>
</reference>

Und in dieser Vorlage rendern Sie Ihr Kind HTML so:

<?php echo $this->getChildHtml('', true, true) ?>

Wobei das dritte Argument das Sortierflag ist, das den Block anweist, seine untergeordneten Elemente gemäß Ihrer verwalteten Reihenfolge zu rendern.Dadurch wird Ihr Block oben angezeigt.

Nebenbei bemerkt, da Sie sowieso all diese Probleme durchlaufen müssen, um die Kopfvorlage zu erweitern, möchten Sie möglicherweise auch das untergeordnete Rendering oben in der Vorlage (über Ihrem CSS / JS) aufstocken.


BONUS:

Warum nutzen Sie die catalog/product_view blockieren?In dieser Erweiterung finden Sie eine gute Boilerplate, mit der Sie Ihren Code vergleichen können: https://github.com/thaddeusmt/magento-fb-opengraph/ -- ihre Implementierung umfasst OG-Tags, die über Produkte hinausgehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top