Usando la casilla de verificación TemplateVariable ModX

Estoy tratando de mostrar íconos sociales si el usuario marca la casilla de verificación en las variables de plantilla.
Así que hice todo lo que necesitaba para mostrar esta casilla de verificación en cada página (solo tengo 1 plantilla) en variables de plantilla.
A continuación, coloco este código en base.html (uso archivos estáticos para todos los fragmentos y la plantilla; este archivo es un archivo estático BaseTemplate)

<?php if ($modx->getTemplateVar(1,'Yes')) { ?>
  <a href="#"><img src="assets/templates/default/images/facebook.png" alt="Facebook" style="width: 26px; height: 26px; border: 0; margin-left: 40px;" /></a>
  <a href="#"><img src="assets/templates/default/images/twitter.png" alt="Twitter" style="width: 26px; height: 26px; border: 0; margin-left: 10px;" /></a>
  <a href="#"><img src="assets/templates/default/images/linkedin.png" alt="LinkedIn" style="width: 25px; height: 25px; border: 0; margin-left: 10px;" /></a><br /><br />
<?php } ?>

También probé:

<?php if ($modx->getTemplateVar($social,'Yes')) { ?>

sin que importe social es un nombre de mi televisor, 1 es la identificación de mi televisor.

Y esto es lo que obtengo en el sitio web:

getTemplateVar($social,'Yes')) { ?>

Pensé que esto se debe a que no puedo usar php en trozos/archivo de plantilla, así que creo un fragmento y coloco un código para verificar que la TV esté registrada, pero esto no me dio ningún resultado.

Esta es documentación Leo para usar la televisión.
¿Qué estoy haciendo mal? ¿Cómo usar la televisión de esta manera, no como un filtro mientras se muestra un recurso?

preguntado el 04 de julio de 12 a las 10:07

¿Qué versión de Modx estás usando? -

MODX Revolution 2.2.0-pl2 (avanzado) -

2 Respuestas

Pruebe esto, no necesita usar un fragmento o escribir ningún código para que esto funcione,

En su plantilla [base.html]:

[[*social:eq=`Yes`:then=`[[$YourSocialHTMLChunk]]` ]] 

[mejor aún, cambie su TV "social" a un tipo numérico de 1 o 0, es posible que deba verificar dos veces los filtros de salida: http://rtfm.modx.com/display/revolution20/Input+and+Output+Filters+(Output+Modifiers), no estoy seguro si el 'eq' funcionará en una cadena... ]

Luego pegue todos sus enlaces sociales en lo que quiera llamar YourSocialHTMLChunk

Respondido 04 Jul 12, 16:07

Puede usar PHP puro en plantillas o fragmentos en Modx. Si tiene que usar PHP, debe crear un Snippet para eso.

Puede llegar a su variable de plantilla en una plantilla o fragmento escribiendo [*templatevarname*] y generará el contenido. Tenga en cuenta que esto solo genera el contenido de la página que está mostrando.

Si desea cargar variables de plantilla de otros recursos, DEBE crear un fragmento para eso.

Echa un vistazo a esta página wiki: http://wiki.modxcms.com/index.php/Placeholders_used_by_MODx_Pages_and_Templates

Para un fragmento tendrías que escribir algo como

[!yourSnippetName? &sid=`[[*id*]]`!]

Contenido del fragmento:

$tvPr = $modx->getTemplateVarOutput(array("templatevarname"),$sid,1);
echo $tvPr['templatevarname'];

http://wiki.modxcms.com/index.php/API:getTemplateVarOutput

Respondido 04 Jul 12, 11:07

Eso no funciona. Su uso de snippet es incorrecto, pero de todos modos si lo uso bien, con doble [[]], no funciona. ¿Por otras ideas? Solo necesito acceso a la variable de plantilla de la página que estoy mostrando actualmente. - Miszczu

¿Estás seguro de que el marcado de mi fragmento es incorrecto? Ha pasado un tiempo desde que estaba programando en Evo, pero creo que los fragmentos no almacenados en caché se llamaban de esa manera... Hmm, es extraño que no funcione. - OptimusCrimen

Probablemente esté usando revo (¿podemos obtener una confirmación de eso?) en cuyo caso la sintaxis es ligeramente diferente: [[!yourSnippetName? &sid=[[*id]]]] - Sean Kimball

Se vinculó a la documentación anterior? Y las funciones en la primera publicación no son nada de eso en Revo. Mmm - OptimusCrimen

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.