0

我正在使用表达式引擎字段来使用<pre>元素和[code]标记发布代码示例,但我也将此字段用作摘录。在摘录中,我想删除这些前置元素中的任何内容(或以某种方式停止,一旦它到达<pre>元素。有人知道该怎么做吗?这是我的摘录代码:

<p class="excerpt">{exp:trunchtml chars="300"}{code_content}{/exp:trunchtml}</p>

这是一个包含代码的示例条目:

</p>Blah blah blah Lorem Ipsum</p> <pre>[code]camera.position.set(0,20,35); [/code]</pre>
4

1 回答 1

0

这是一个非常具体的需求,我知道没有现有的插件可以做到这一点。您的两个选择是:

创建一个专门的摘录字段(在制作更好的摘录和保持数据结构化方面确实是最好的)。

或者,编写自己的插件(真的不是很困难),它将获取您传递的内容,然后对其执行一些preg_replace()操作以消除您的<pre> 元素及其所有内容,返回清理后的结果。

所以它看起来像这样:

<p class="excerpt">
    {exp:trunchtml chars="300"}
        {exp:my_plugin:replace_pre}{code_content}{/exp:my_plugin:replace_pre}
    {/exp:trunchtml}
</p>

这一点 PHP 会在你的插件中为你做魔法:

$content = $this->EE->TMPL->tagdata;
preg_replace('/<pre[^>]*>.*?<\/pre>/i', '', $content);
return $content;
于 2012-07-30T22:16:56.863 回答