0

我创建了一个可以添加不同内容(文本、地图等)的插件。我已经在插件中注册了 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">&nbsp;</figure>

有趣的是,Rjgallery 插件的片段不起作用,它也不会加载内容。

编辑

如果我在更改后等待几分钟,更改就会生效。可能是缓存...如何缩短时间?

这是什么原因?

4

0 回答 0