2012-04-10 38 views
9

Tengo en CMS-> página "página de inicio" archivo. En el contenido que estoy escribiendo línea como la siguiente:página CMS agregar bloque magento

{{block type="myfolder/newfile" template="myfolder/newfile.phtml"}} 

Quiero rendir en newfile.phtml archivo de contenido. Que estoy haciendo mal ?

Mi nuevo archivo se encuentra bajo: app \ diseño \ frontend \ default \ themeas \ template \ myfolder \ newfile.phtml

Respuesta

21

Es necesario dar un nombre a su bloque. Así es como Magento hará referencia al bloque. Además, su tipo de bloque debe ser válido para que el bloque lo represente. Para bloques predeterminados trate de usar type = "núcleo/plantilla"

Su nuevo código debería tener este aspecto:

{{block type="core/template" name="my.block.name" template="myfolder/newfile.phtml"}} 

Otra nota sobre el atributo de tipo, no es en realidad una estructura de directorios/archivos, sino que es un URI que se correlaciona con el autocargador Magento. "Núcleo" se refiere a la clase Mage_Core_Block_Core (en el directorio de la aplicación/código/núcleo/Mage/Core) y luego la información después de la barra se refiere a las carpetas dentro de ese directorio. Entonces type = "core/template" se resuelve en esta clase Mage_Core_Block_Core_Template que se encuentra en la aplicación/code/core/Mage/Core/Block/Template.php. Todo lo que el atributo de tipo está haciendo le dice a Magento qué métodos necesita cargar dentro de su bloque.

Un par de otros tipos de bloques se puede probar son:

Para listas de productos: Catálogo/product_list

para las listas de texto (bloques que hacen automáticamente bloques del niño): núcleo/text_list

Por Categoría Bloques: catálogo/category_view

Hay muchas más, una buena manera de encontrar nuevas es mirar un bloque que hace una acción similar a lo que estás tratando de hacer, y encontrar dónde está definido en el XML.

+0

en uno de mis sitios funcionó sin nombre hasta la versión 1.9.2.3 como '' '{{block type =" catalog/product_list "category_id =" 8 "template =" catalog/product/featured.phtml "}}' '' – lrkwz

+2

No olvide dar permiso al bloque o no se mostrará (magento versión 1.9+) sistema-> permiso-> bloques – Mike

6

Si desea pasar variables al bloque, se puede hacer algo como:

{{block type="core/template" name="my.block.name" myvariable="5" template="myfolder/newfile.phtml"}} 
3

Me gustaría ofrecer una alternativa:

Las respuestas anteriores funcionan bien, sin embargo, es mi personal Preferencia para no insertar bloques en el contenido de una página CMS ya que los clientes pueden (y han) eliminado esta línea crucial al intentar editar texto y contenido usando el WYSIWYG.

Se podría añadir lo siguiente en el diseño del > Actualización de diseño XML sección de una página de CMS:

<reference name="content"> 
    <block after="-" type="your/block_type" name="block.name" template="your/block/template/file.phtml"/> 
    <action method="insert" ifconfig="your/block_type"> 
     <block>block.name</block> 
    </action> 
</reference> 

De esta manera, los clientes son menos propensos a editar esta pestaña!

Espero que esto ayude a cualquier otra persona con este problema.

3

Desde Magento 1.9.2.2, o parche equivalente, también debe otorgar permisos para el nuevo bloque.Usted hace esto en el back-end: Sistema | permisos | bloques

Es decir, si desea mostrar:

{{block type="catalog/product_bestseller" name="krillo.bestseller" template="catalog/product/bestseller.phtml"}} 

Haz tu nombre de bloque "Catálogo/product_bestseller" y establezca el estado a "permitido"

Cuestiones relacionadas