0

私は式エンジンフィールドを使用して、<pre>要素と[code]マークアップを使用してコードサンプルを投稿していますが、このフィールドも抜粋として使用しています。抜粋では、これらのpre要素内のすべてを削除したいと思います(または、<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

これはかなり具体的なニーズです。私が知っている既存のプラグインではそれができません。2つのオプションは次のとおりです。

専用の抜粋フィールドを作成します(より良い抜粋を作成し、データを構造化しておくという点で本当に最高です)。

または、渡したコンテンツを取得する独自のプラグインを作成し(実際にはそれほど難しくありません)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 に答える