Añadir un static block en el footer y solo en la home

Max

Nuevo usuario
Hola

Os explico lo que quiero hacer, he creado en el admin un static block y lo quiero añadir en el footer debajo del todo, pero que aparezca sólo en la home.

He hecho esto, cms->static block he creado mi block con un texto dentro y lo he llamado pongamos mi_block.

Luego he ido a cms pages y a la páginaa de la home he añadido este código al final

Insertar CODE, HTML o PHP:
<reference name="root">
			<reference name="footer" >						
				<block type="cms/block" name="mi_block">
						<action method="setBlockId"><block_id>mi_block</block_id></action>
				</block>
			</reference>
</reference>

Y luego en el archivo footer.phtml al final he llamado al bloque:

PHP:
<?php echo $this->getChildHtml('mi_block') ?>

El caso es que como el archivo footer.phtml se carga en todas las páginas, pues la cache hace el código del bloque se vea en todas y cada una de las páginas.
 

inavas

Nuevo usuario
Buenas, a mi lo que se me ocurre es, que hagas un .phtml nuevo que se llame mi_block e introduzcas esto:

Insertar CODE, HTML o PHP:
<div>
	<?php echo $this->getlayout()->createBlock('cms/block')->setBlockId('id_de_mi_static_block')->toHtml(); ?>
</div>
La id es la que te sale cuando creas el static block en cms->static block.

Luego en el CMS de la home añadir esto:
Insertar CODE, HTML o PHP:
<reference name="footer">
   <block type="core/template" name="mi_block" template="mi_block.phtml" as="mi_block"/>
</reference>

Donde en template, debe ir la ruta donde guardas el .phtml, por ejemplo la que te puse si es la de por defecto.

Es lo que yo hice para añadir bloques estaticos en diferentes partes de mi pagina, espero que te sirva, mi versión de magento es la 1.7.0.0, así que no se si te servirá. Si tienes alguna duda pregunta.
 
Upvote 0

Max

Nuevo usuario
Hola

Ya lo tengo solucionado, pongo aquí lo que hay que hacer, para futuras dudas que puedan surgir.

Tengo creado en mi template un archivo local.xml para no tocar archivos estructurales propios de magento, ya sean del base (que jamás deben modificarse) o del mismo template.

Dentro he puesto esto.
Insertar CODE, HTML o PHP:
<cms_index_index> <!--esto es para layout solo de la home-->
	<reference name="footer" >
          <block type="cms/block" name="mi_block">
            <action method="setBlockId"><block_id>mi_block</block_id></action>
    	</block>
  </reference>
</cms_index_index>

luego en el archivo footer.phtml del template, hago la llamada dónde quiere que salga el cms.
PHP:
<?php echo $this->getChildHtml('mi_block') ?>

Y luego, hay que sobreescribir la clase -> Mage_Page_Block_Html_Footer (buscar en la documentación de magento, como override blocks, es muy fácil).

Siempre lo creo un módulo custom en cada proyecto, para que ahí queden reflejado los cambios.

Y dentro hay que añadir esta función:

PHP:
public function getCacheKeyInfo(){
	    $cacheKeyInfo = parent::getCacheKeyInfo();
	    $cacheKeyInfo[] = (int)($this->getUrl('') == $this->getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true)));
	    return $cacheKeyInfo;
	}

Así la cache del footer de la home se separa de la del resto de las páginas.
 
Upvote 0
Arriba