Jump to content

Variable Smarty en página CMS


Recommended Posts

  • 1 month later...

Bon dia Jaume!

has conseguido solucionar, o encontrar la manera de ahcer esto?

Estoy buscando la manera para hacerlo sólo para una página, no para todas las páginas del CMS, lo cual entiendo que sería editar el supuesto "page.tpl", dependiendo de cada plantilla.

Me urge encontrar solución.

 

Gràcies.

Link to comment
Share on other sites

No se pueden usar variables Smarty dentro del contenido de una página CMS. Por tanto, no creo que sea fácil utilizar variables ahí dentro.

No sé si hay otra forma más sencilla de hacerlo, a mí se me ocurre una. Hacerla bien implica un poco de trabajo,  aunque también se puede hacer de forma más chapucera y rápida (que explico al final).

Se trataría de usar una serie de shortcodes. Cuando hablo de shortcodes me refiero a replicar de una forma simple cómo funcionan en WordPress. Es decir, se pueden elegir varios shortcode para insertar cosas como el nombre de la tienda, o el nombre del usuario, por ejemplo : [shopname], [username]. A estos shortcodes se les puede dar el formato que se quiera, aunque es conveniente utilizar algún carácter "especial", para evitar que haya texto normal que se pueda confundir con ellos. Luego se meterían en donde se quiera que aparezcan, dentro del contenido normal de la página CMS, y al mostrar la página los sustituiríamos por el contenido de las variables correspondientes.

SOLUCIÓN LABORIOSA

1.- Editar la plantilla /cms/page.tpl, y añadir un hook dentro del bloque cms_content. Y pasarle a ese hook el contenido de la variable $cms.content, que tiene el contenido de la página, para poder modificarlo. Es decir, algo así:

{block name='cms_content'}
  {if Module::isEnabled('shortcodes_in_cms')}
    {hook h='displayCMSWithShortcodes' cms_content=$cms.content}
  {else}
    {$cms.content nofilter}
  {/if}
{/block}

De este modo que lo he puesto el hook sólo se va a ejecutar si está activo mi módulo (al que he llamado "shortcodes_in_cms"). Si no está activo, pues se muestra el contenido normal.

2.- Crear el módulo que se ejecuta en ese hook, que revise el contenido de $cms.content, busque ciertos "shortcodes" y los sustituya por las variables que nosotros queramos.

Lo que haría el módulo que comento sería recibir todo el contenido de la página en una variable (que se la pasa el hook), hacer una búsqueda de los shortcodes que hemos diseñado y sustituirlos por el contenido de las variables correspondientes. Y tras haber hecho eso "escupir" el contenido de la página CMS ya modificado.

SOLUCIÓN RÁPIDA

Decir que todo este proceso también se puede hacer de forma más chapucera sin tener que añadir un hook ni crear un módulo, haciendo la búsqueda y sustitución de los shortcodes sobre la variables $cms.content, directamente dentro de la vista (page.tpl). Por ejemplo:

{block name='cms_content'}
  {$content_modified = $cms.content|replace:'[shopname]':$shop.name|replace:'[username]':$customer.firstname}
  {$content_modified nofilter}
{/block}

 

Edited by Prestafan33 (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...