尝试使用 thunderer/shortcode 解析简码
Trying to parse a shortcode using thunderer/shortcode
我正在尝试向 WYSIWYG 添加简码。我正在使用 this library. I'm trying to parse this into an accordion from bootstrap:
[panel]
[header]
Heading goes here
[/header]
[content] Content goes here [/content]
[header]
Heading goes here
[/header]
[content] Content goes here [/content]
[/panel]
我的代码如下所示:
use Thunder\Shortcode\HandlerContainer\HandlerContainer;
use Thunder\Shortcode\Parser\RegularParser;
use Thunder\Shortcode\Processor\Processor;
use Thunder\Shortcode\Shortcode\ShortcodeInterface;
function processAgendaContent($content)
{
$handlers = new HandlerContainer();
$handlers->add('panel', function(ShortcodeInterface $s) {
return "<div class=\"panel panel-default\">";
});
$handlers->add('header', function(ShortcodeInterface $s) {
return '
<h4 class="panel-title">
<a href="#collapse1" target="_blank" role="button" data-toggle="collapse" aria-expanded="true" aria-controls="collapse1" class="btn-collapse">
' . $s->getContent() . '</a>
</h4>';
});
$processor = new Processor(new RegularParser(), $handlers);
echo $processor->process($content);
我现在的问题是,当我尝试解析时,它解析开始标记而不是结束标记,我想由于这个原因 getContent() 不起作用。知道我做错了什么吗?谢谢
我是 Shortcode 库的作者。要解决您的问题,请将您的 panel
简码处理程序正文更改为:
return '<div class="panel panel-default">'.$s->getContent().'</div>';
每个短代码处理程序控制从整个短代码文本返回的内容。您只是返回了一个简单的字符串,并没有在任何地方包含它的内容,这就是 [panel]
封装的整个文本被丢弃的原因。
我希望这有助于更好地理解这个库的工作原理,如果您有更多问题,我很乐意在这里回答。
我正在尝试向 WYSIWYG 添加简码。我正在使用 this library. I'm trying to parse this into an accordion from bootstrap:
[panel]
[header]
Heading goes here
[/header]
[content] Content goes here [/content]
[header]
Heading goes here
[/header]
[content] Content goes here [/content]
[/panel]
我的代码如下所示:
use Thunder\Shortcode\HandlerContainer\HandlerContainer;
use Thunder\Shortcode\Parser\RegularParser;
use Thunder\Shortcode\Processor\Processor;
use Thunder\Shortcode\Shortcode\ShortcodeInterface;
function processAgendaContent($content)
{
$handlers = new HandlerContainer();
$handlers->add('panel', function(ShortcodeInterface $s) {
return "<div class=\"panel panel-default\">";
});
$handlers->add('header', function(ShortcodeInterface $s) {
return '
<h4 class="panel-title">
<a href="#collapse1" target="_blank" role="button" data-toggle="collapse" aria-expanded="true" aria-controls="collapse1" class="btn-collapse">
' . $s->getContent() . '</a>
</h4>';
});
$processor = new Processor(new RegularParser(), $handlers);
echo $processor->process($content);
我现在的问题是,当我尝试解析时,它解析开始标记而不是结束标记,我想由于这个原因 getContent() 不起作用。知道我做错了什么吗?谢谢
我是 Shortcode 库的作者。要解决您的问题,请将您的 panel
简码处理程序正文更改为:
return '<div class="panel panel-default">'.$s->getContent().'</div>';
每个短代码处理程序控制从整个短代码文本返回的内容。您只是返回了一个简单的字符串,并没有在任何地方包含它的内容,这就是 [panel]
封装的整个文本被丢弃的原因。
我希望这有助于更好地理解这个库的工作原理,如果您有更多问题,我很乐意在这里回答。