El problema aquí es probablemente uno de orden de procesamiento. Supongo que su código PHP se está evaluando después de que se haya renderizado el bloque principal. Si bien su código está actualizando con éxito la instancia de la clase de bloque principal, está sucediendo después de que se haya generado la salida desde esa instancia.
La mejor solución será añadir las llamadas addJs()
en XML disposición para que puedan ser procesados antes de su representación. Sería bueno si hubiera un atributo ifnotconfig
, pero por ahora puede usar un ayudante.
Crear una clase de ayuda con un método que devuelve la ruta de escritura basada en los ajustes de configuración, a continuación, utilizar esto como el argumento de retorno.
<?php
class My_Module_Helper_Class extends Mage_Core_Helper_Abstract
{
public function getJsBasedOnConfig()
{
if (Mage::getStoreConfigFlag('mymodule/settings/enable')) {
return 'path-to-file/file1.js';
}
else {
return 'path-to-file/file2.js';
}
}
}
Luego, en el diseño XML:
<?xml version="1.0"?>
<layout>
<default>
<reference name="head">
<action method="addJs">
<file helper="classgroup/class/getJsBasedOnConfig" />
<!-- i.e. Mage::helper('module/helper')->getJsBasedOnConfig() -->
</action>
</reference>
</default>
</layout>
¿Funciona el enunciado condicional para un eco/impresión simple? –
Gracias Alan por su respuesta. Sí, el condicional sí proporciona 0 o 1 si lo hago eco. Sin embargo, traté de eliminar todas las líneas excepto una línea: $ this-> getLayout() -> getBlock ('head') -> addJs ('ruta-a-archivo/archivo1.js'); Pero todavía no funciona. La ruta es después del directorio raíz js. – user1576748
¿De qué archivo de plantilla de bloque está llamando? –