我创建了一个可以添加不同内容(文本、地图等)的插件。我已经在插件中注册了 Snippet。
插件.php
...
public function registerComponents() {
return [
'Author\Contents\Components\Text' => 'textContent'
];
}
public function registerPageSnippets() {
return [
'Author\Contents\Components\Text' => 'textContent'
];
}
...
我创建了一个文本类型组件,它创建了两个属性(contentID [现有文本内容的选择器]、showTitle [选择器,真或假])。
组件/Text.php
...
public function defineProperties() {
return [
"contentId" => [
"title" => "Select content",
"type" => "dropdown",
"placeholder" => "Please select a content..."
],
"showTitle" => [
"title" => "Show content title",
"type" => "dropdown"
]
];
}
public function getContentIdOptions() {
return Texts::orderBy("title")->lists("title", "id");
}
public function getShowTitleOptions() {
return [
"hide" => "No",
"show" => "Yes"
];
}
...
public function onRender() {
$this->contentData = $this->page["contentData"] = Texts::find($this->property("contentId"));
foreach ($this->getProperties() as $key => $value) {
$this->page[$key] = $value;
}
}
组件/文本/default.htm
{{ showTitle }}
{{ __SELF__ }}
<div class="row">
<div class="col-12">
{{ contentData.content|raw }}
</div>
</div>
当我尝试将片段插入页面(在静态页面插件中)时,它可以完美运行。但是,如果我更改代码片段设置(例如,我将 showTitle 属性值从 true 更改为 false),则内容不会出现在前端页面中。如果我更改了与创建状态相比的任何内容,则内容将消失。即使该属性未包含在代码中。
如果我不修改插入时使用的属性,它会生成 html。但是,如果我更改,我会在检查器中看到:
<figure data-component="Author\Contents\Components\Text" data-inspector-id="inspectorid-984837527907" data-property-contentid="6" data-property-showtitle="show" data-snippet="textContent"> </figure>
有趣的是,Rjgallery 插件的片段不起作用,它也不会加载内容。
编辑
如果我在更改后等待几分钟,更改就会生效。可能是缓存...如何缩短时间?
这是什么原因?