1

我对 Expression Engine 比较陌生,在学习它的过程中,我发现一些 WordPress 已经丢失了一段时间的东西。对我来说重要的是短代码,因为我将使用它们来允许 CMS 用户将更复杂的内容与他们的其他内容放在一起。

除了即将推出的私人测试版插件外,我在 EE 中没有看到任何真正的等价物。

作为初始测试,我试图通过在内容字段中使用分隔字符串(例如#foo#)来伪造简码,然后使用正则表达式将它们拉出并将它们传递给可以从 EE 数据库中检索内容的函数。

这让我想到了第二个问题,即在查看 EE 的 API 文档时,似乎没有一种简单的方法可以以编程方式检索通道条目(考虑类似于 WP 的内置 get_posts 函数)。

所以我的问题是:

a) 可以这样做吗?b) 如果是这样,我的处理方法是否合理?还是我的方法中缺少一些愚蠢的明显东西?

重申一下,我在这里的主要目标是有一些方法允许管理内容的人在他们的内容中放置一个代码,这些代码将被频道内容替换。

感谢您给我的任何建议或帮助。

4

4 回答 4

3

这是您正在寻找的功能的一个简单示例。

1) 从安装Low Replace开始。

2) 创建两个名为 gv_hello 和 gv_goodbye 的全局变量,其值分别为“Hello”和“Goodbye”。

3)将此文本放入条目的正文中:

[问好]

很高兴见到你。

[说再见]

4) 将其放入您的模板中,将 Low Replace 标签包裹在您的正文字段周围。

{exp:low_replace find="[say_hello]|[say_goodbye]" replace="{gv_hello}|{gv_goodbye}" multiple="yes" } {body} {/exp:low_replace}

5)它应该将其输出到您的浏览器中:

你好

很高兴见到你。

再见

显然,这是一个非常简单的例子。您可以将完整的 HTML 放入全局变量中。例如,我们使用它来渲染复杂的交互式图形,该图形不可编辑,但任何编辑器都可以轻松地将其拖放到页面中。

不幸的是,由于解析顺序问题,EE 标签在全局变量中不起作用。如果您在短代码输出中需要 EE 标记,则需要使用低变量插件而不是全局变量。

于 2012-10-22T20:40:18.553 回答
1

继续评论:

你有你想要支持/包含的那种短代码的例子吗?因为我怀疑从文本字段或所见即所得字段控制页面布局是否可行。

如果您希望编辑者能够调整布局或显示/隐藏页面上的额外部分,让他们访问频道中的一些额外字段,(imo)更易于管理和面向未来。例如,一些选择字段、关系(或播放)字段或矩阵,让他们选择在页面上包含/排除哪些部分,或者从另一个通道中提取内容的哪个条目。

正如评论中所说:我完全理解你是否想用来自另一个领域的图像或数据替换一些#foo#标签(参见其他答案:nsm-transplant、low_replace)。但是,让编辑器访问短代码并从中挑选出来,就像编写模板引擎来为 ee-template-engine 生成 ee-template 代码一样。

我认为,使用一些自定义字段让编辑选择要嵌入的部分更易于管理。

话虽如此,您可以制作一个插件来解析 textareas 内容中的短代码,然后进行大量编程,以从您想要支持的其他模块中获取数据。对于频道条目,您可以通过objectiveHTML 从频道数据库中构建。https://github.com/objectivehtml/Channel-Data

于 2012-10-29T17:35:29.143 回答
0

还有一个名为 Shortcode 的插件,您可以在 Devot-ee找到 该页面的引用:

简码旨在允许作者和编辑更动态地使用内容,允许将可重用的内容位甚至整个功能注入 EE 的任何领域

于 2012-10-27T13:13:19.947 回答
0

我听到了,我也想念 WP 的简码——尽管它们如此容易工作的原因是the_content(). EE 的极大灵活性带来了更少的一揽子解决方案。

我建议看看NSM Transplant。它应该适合你。

于 2012-07-30T22:26:11.587 回答