使用TemplateVariable复选框ModX

时间:2012-07-04 09:33:03

标签: modx

如果用户在模板变量中选中复选框,我正在尝试显示社交图标 所以我做了我需要的所有东西,在模板变量的每个页面上显示这个复选框(我只有1个模板) 接下来我将此代码放入base.html(我使用所有块和模板的静态文件 - 此文件是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 } ?>

我也试过了:

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

其中social是我的电视名称,1是我的电视的ID。

这就是我在网站上得到的:

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

我虽然这是因为我不能在块/模板文件中使用php,所以我创建片段并将代码放入检查电视检查到它,但这并没有给我任何结果。

以下是documentation我读过使用电视 我做错了什么?如何以这种方式使用电视,而不是作为显示资源的过滤器?

2 个答案:

答案 0 :(得分:3)

试试这个,您不需要使用代码段或编写任何代码来使其工作,

在您的模板[base.html]中:

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

[更好的是,将您的“社交”电视更改为数字类型1或0,您可能需要仔细检查输出过滤器:http://rtfm.modx.com/display/revolution20/Input+and+Output+Filters+(Output+Modifiers),我不确定'eq'是否会在字符串上工作...]

然后将所有社交链接粘贴到您想要命名为YourSocialHTMLChunk的任何内容

答案 1 :(得分:0)

您可以在Modx中的模板或块中使用纯PHP。如果必须使用PHP,则需要为此创建一个Snippet。

您可以通过编写[*templatevarname*]来模板或块中的模板变量,然后输出内容。请注意,这只会输出您正在显示的页面的内容。

如果您想从其他资源加载templatevariables,您必须为此创建一个代码段。

看看这个维基页面:http://wiki.modxcms.com/index.php/Placeholders_used_by_MODx_Pages_and_Templates

对于代码段,您必须编写类似

的内容
[!yourSnippetName? &sid=`[[*id*]]`!]

摘录内容:

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

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