【问题标题】:Using TemplateVariable checkbox ModX使用 TemplateVariable 复选框 ModX
【发布时间】:2012-07-04 09:33:02
【问题描述】:

如果用户选中模板变量中的复选框,我会尝试显示社交图标。
所以我做了我需要的一切,在模板变量中的每个页面上显示这个复选框(我只有 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,所以我创建了 sn-p 并将检查电视的代码放入其中,但这并没有给我任何结果。

这里是documentation 我读到使用电视。
我做错了什么?电视怎么用这种方式,而不是作为显示资源的过滤器?

【问题讨论】:

  • 你用的是什么版本的 Modx?
  • MODX 革命 2.2.0-pl2(高级)

标签: modx


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    如果您想从其他资源加载模板变量,您必须为此创建一个 sn-p。

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

    对于 sn-p,您必须编写类似

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

    sn-p的内容:

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

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

    【讨论】:

    • 那行不通。您对 sn-p 的使用是错误的,但无论如何,如果我正确使用它,使用双 [[]],它就不起作用。其他想法?我只需要访问当前显示的页面的模板变量。
    • 你确定我的 sn-p 标记是错误的吗?自从我在 Evo 中编程已经有一段时间了,但我相信未缓存的 sn-ps 是这样调用的……嗯,奇怪的是它不起作用。
    • 他可能正在使用 revo(我们可以确认一下吗?)在这种情况下,语法略有不同:[[!yourSnippetName? &sid=[[*id]]]]
    • 他链接到旧文档?第一篇文章中的功能与 Revo 中的功能完全不同。嗯
    猜你喜欢
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    相关资源
    最近更新 更多