Inserimento di tag grafici aperti tramite modulo personalizzato e blocco
-
12-12-2019 - |
Domanda
Sto usando Magento EE 1.6
Quando utilizzo una classe di blocco personalizzata per visualizzare alcuni tag all'interno del mio <head>
, il blocco non verrà visualizzato. Ma se utilizzo il tipo "page/html"
, tutto va bene ... Ho bisogno della mia classe personalizzata per aggiungere alcune funzionalità al blocco (attivazione, ottenere l'URL dell'immagine ecc.).
Aiutami a capire cosa mi è mancato. Ecco cosa ho fatto finora:
app / etc / modules / wbx_social.xml:
.
<?xml version="1.0"?>
<config>
<modules>
<Wbx_Social>
<active>true</active>
<codePool>local</codePool>
</Wbx_Social>
</modules>
</config>
App / codice / locale / wbx / social / etc / config.xml:
.
<?xml version="1.0"?>
<config>
<modules>
<Wbx_Social>
<version>0.1.0</version>
</Wbx_Social>
</modules>
<global>
[...]
<blocks>
<wbx_social>
<class>Wbx_Social_Block</class>
</wbx_social>
</blocks>
</global>
<frontend>
<layout>
<updates>
<wbx_social>
<file>wbx_social.xml</file>
</wbx_social>
</updates>
</layout>
</frontend>
</config>
app / code / local / wbx / social / block / opengraph.php:
.
class Wbx_Social_Block_Opengraph extends Mage_Core_Block_Template
{
/**
* @return int
*/
public function isActive()
{
return true; // Will be replaced with store config value
}
/* And other useful functions */
}
app / design / frontend / reattivo / predefinito / layout / wbx_social.xml:
.
<?xml version="1.0"?>
<layout>
<default>
<reference name="head">
<block type="wbx_social/opengraph" name="opengraph" as="opengraph" template="social/opengraph.phtml"/>
</reference>
</default>
</layout>
e infine il modello: app / design / frontend / reattivo / predefinito / template / social / opengraph.phtml:
.
<?php /* @var $this Wbx_Social_Block_Opengraph */ ?>
<?php if ($this->isActive()) : ?>
<meta property="fb:app_id" content="an id"/>
<meta property="og:type" content="website"/>
<meta property="og:site_name" content="a name"/>
<?php endif; ?>
Nel caso in cui, non ho dimenticato l'aiutante Wbx_Social_Helper_Data
Vuoto.
In wbx_social.xml
, quando provo la modifica della classe Block per type="core/template"
o type="page/html"
(ad esempio), il blocco è visualizzato correttamente (senza alcun accesso delle funzioni personalizzate del corso)
Ho davvero bisogno di un suggerimento, sono passate diverse ore che sto strappando ...
Soluzione 2
ok ho scoperto l'origine del problema.
Il problema è stato effettivamente dal mio blocco Wbx_Social_Block_Opengraph
che ha implementato un metodo getUrl()
.Grosso errore !Mage_Core_Block_Abstract
(un antenato del mio blocco) ha già un metodo getUrl()
ma con una firma diversa.
La mia vera domanda è: perché diavolo non ho ricevuto alcun errore / avvertimento ??Avrebbe salvato così tanto tempo ...
Comunque, ho cambiato il mio metodo per getOgUrl()
e voilà!I miei tag sono visualizzati come volevo ....
Grazie mille per i tuoi suggerimenti, gente!
Altri suggerimenti
Ci sono diversi tipi di blocchi in Magento.Vedi app \ code \ core \ mage \ core \ Block \
Uno di questi è "Elenco".Ottiene tutti i bambini e li ha appena emessi uno per uno.Il blocco content
funziona così.
Ma la maggior parte dei blocchi ha il tipo "modello".Significa che hanno alcuni modelli .phtml associati e renderli.Ad esempio, il tuo blocco ha tale tipo.
Per aggiungere un po 'di blocco nel test (tipo="Template"), è necessario modificare il file Head.phtml e chiamare il blocco figlio utilizzando $this->getChildHtml('opengraph')