Domanda

Durante la creazione dell'estensione del grafico aperto in Magento mi sono imbattuto in un problema- Sebbene il mio metatag sia corretto, Facebook non riesce a prendere il mio tag OG perché c'è troppa codice prima del mio tag Meta / OG.

ha chiunque altro incontrò questo e hai qualche suggerimento?

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

È stato utile?

Soluzione

Ecco una soluzione alternativa.Non è bello, e dovrebbe essere considerato un hack.Va anche contro gli scopi del sistema di layout di Magento.Nondimeno, se il tuo requisito non deve ignorare il modello della testina di base, quindi provare questo:

Inject Content tramite evento Observer

Nel modulo Config XML, aggiungi il seguente evento:

...
<global>
    ...
    <events>
        <http_response_send_before>
            <observers>
                <head_modify>
                    <type>singleton</type>
                    <class>Namespace_Module_Model_Observer</class>
                    <method>injectOgTags</method>
                </head_modify>
            </observers>
        </http_response_send_before>
    </events>
    ...
</global>
...
.

E poi creeresti una classe di osservatore per abbinare:

<?php

class Namespace_Module_Model_Observer
    extends Varien_Event_Observer
{

    public function injectOgTags(Varien_Object $object)
    {
        $response   = $object->getResponse();
        $html       = $response->getBody();

        // Some logic for building up the appropriate meta tags
        // based on URL or product or layout handles
        $html = str_replace('<head>', '<head><meta property="og:title" content="Page title" />', $html);

        $response->setBody($html);
    }

}
.


.

Per quanto posso vedere, questo è solo un modo per risolvere il tuo problema.Né il blocco della testata né il suo modello di base prevede disposizioni per l'aggiunta di tag meta sopra la sua chiamata per il bambino HTML.

Altri suggerimenti

Non sono sicuro di cosa venga esattamente il rendering nella testa che spinge i tuoi meta tag così lontani, né ho visto questo essere un problema (tranne la "regola del pollice" che dice di posizionare i meta tag il più alto possibile nel HEAD).

In ogni caso, potresti provare questo:

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

AVVISO L'attributo before="-". Ciò verrà prelevato durante la generazione di blocchi (vedere Mage_Core_Model_Layout::_generateBlock) e inserito nella parte superiore dello stack del blocco genitore (vedere Mage_Core_Block_Abstract::insert).

Sfortunatamente, questo da solo non risolverà il tuo problema, poiché il modello di Capo Magento non rende i suoi figli in un ordine ordinato. Quindi dovrai sovrascrivere questo modello da solo e forzare la bandiera di ordinamento.

Per fare ciò, modificare il modello della testa tramite layout XML:

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

E in quel modello render your figlio html come:

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

Dove il terzo argomento è la bandiera di ordinamento che dice al blocco di rendere i suoi figli in base al tuo ordine gestito. Questo otterrà il tuo blocco in alto.

Su una nota laterale, perché dovrai comunque passare tutto questo problema per estendere il modello della testa, potresti anche voler urtare il bambino che resa vicino alla cima del modello (sopra il tuo CSS / JS) .


.

Bonus:

Perché stai sfruttando il blocco catalog/product_view? Vedi questa estensione per una buona caldaia per confrontare il tuo codice con: https://github.com/thaddeusmt / Magento-fb-OpenGraph / - La loro implementazione copre i tag OG Oltre solo prodotti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top