Pregunta

Recientemente creé una variable personalizada llamada storecount - que aumentaré mediante programación para cada tienda que se agregue a mi complemento de localización de tiendas.

Me gustaría mostrar esto en varias ubicaciones, incluidas descripciones de productos y categorías, de modo que cuando agreguemos una nueva tienda, no tengamos que buscar cada aparición del recuento de tiendas y aumentarlo manualmente en 1.

Usando {{customVar code=storecount}} no funciona en descripciones de categorías.¿Hay alguna manera de obtener esta variable sin destrozar el núcleo de Magento?

¿Fue útil?

Solución

La forma más sencilla de hacerlo es utilizar el mismo procesador de plantillas para la descripción de categorías que se utiliza para los bloques cms y el contenido de las páginas.El del módulo de widgets.
Para esto necesitas una extensión.llamémoslo StackExchange_Catalog.
Necesitará los siguientes archivos.

app/etc/modules/StackExchange_Catalog.xml - el archivo de declaración

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Catalog>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
                <Mage_Cms />
                <Mage_Widget />
            </depends>
        </StackExchange_Catalog>
    </modules>
</config>

app/code/local/StackExchange/Catalog/etc/config.xml - el archivo de configuración

<?xml version="1.0"?>
<config>
    <global>
        <catalog>
             <content>
                <tempate_filter>widget/template_filter</tempate_filter>
            </content>
        </catalog>
    </global>
</config>

borre el caché y vuelva a intentarlo.

Otros consejos

sin hackear el núcleo magento, sí;sin código, no.

Puede escribir un observador que escucha el evento catalog_category_load_fter y manipular la descripción de la categoría allí.

/ Editar: cuando se guarda la categoría con la descripción alterada, también se guardará la variable personalizada, por lo que esta no es una solución excelente.

Otra forma sería agregar tu storecount variable a un archivo de plantilla con:

// To get the TEXT value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('text');

// To get the HTML value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('html');

Si te preguntas qué plantilla, activa Sugerencias de ruta de plantilla y debería poder encontrar dónde agregarlo en un archivo de plantilla.No anule una plantilla principal, cópiela en el directorio de su tema, así que haga una copia en algún lugar como app/design/frontend/[Your Design Package]/[Your Theme]/template/catalog/category/view.phtml.Si no sigue esta práctica, perderá su trabajo cuando actualice Magento.

es probablemente mejores prácticas para cree bloques CMS y agréguelos a sus archivos de plantilla para que sea más fácil editarlos y desactivarlos.

cree su bloque CMS con su contenido, incluido {{customVar code=storecount}}y agréguelo donde lo necesite en sus archivos de plantilla con:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('your_cms_block_identifier')->toHtml() ?>

ACTUALIZARAcabo de echarle un vistazo adecuado la respuesta de mario - su solución parece muy clara y agrega la constitucionalidad que necesita Magento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top