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,所以我创建了代码片段并放入代码来检查电视是否被签入,但这并没有给我任何结果。

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

4

2 回答 2

4

试试这个,你不需要使用代码片段或编写任何代码来完成这项工作,

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

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

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

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

于 2012-07-04T15:47:26.327 回答
0

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

您可以通过编写在模板或块中访问您的模板变量,[*templatevarname*]它将输出内容。请注意,这仅输出您正在显示的页面的内容。

如果你想从其他资源加载模板变量,你必须为此创建一个片段。

看看这个维基页面: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

于 2012-07-04T10:06:47.147 回答