Jaume2000 Posted August 3, 2019 Share Posted August 3, 2019 ¿De qué manera podria visualizar una variable global de Smarty dentre de una página CMS? Por ejemplo el nombre de la tienda o del usuario registrado. Saludos. Link to comment Share on other sites More sharing options...
zenerry Posted September 25, 2019 Share Posted September 25, 2019 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 More sharing options...
Prestafan33 Posted September 28, 2019 Share Posted September 28, 2019 (edited) 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 September 28, 2019 by Prestafan33 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now