gpt4 book ai didi

OctoberCMS 翻译插件与 SEO 插件不翻译 CMS 页面和博客的 SEO 关键字

转载 作者:行者123 更新时间:2023-12-04 14:11:42 26 4
gpt4 key购买 nike

我正在使用 OctoberCMS SEO 翻译插件 https://octobercms.com/plugin/anandpatel-seoextension它按照我的期望工作..但我有一个关于翻译插件的查询https://octobercms.com/plugin/rainlab-translate .请先看我的几张截图。

enter image description here

enter image description here

正如您在我上面的 2 个屏幕截图中看到的,在我应该创建或编辑博客的博客页面中,我无法为元标题、元描述、元关键字等进行翻译。

此外,在我的 CMS 页面中,我也无法使我的“元关键字”可翻译..

我试图将下面的代码放入我的一个事件插件的 Plugin.php 文件中,以便能够使我的博客“Meta Title”字段可翻译,但它也没有用..

\RainLab\Blog\Models\Post::extend(function($model) {            
$model->translatable[] = 'seo_title';
});

也尝试了下面的代码..

\AnandPatel\SeoExtension\Models\BlogPost::extend(function($model) {
$model->translatable[] = 'seo_title';
});

有人可以指导我如何使这些字段可翻译吗?

最佳答案

我调试了一下,问题是

SEO Extension Plugin is listening for \Event::listen('backend.form.extendFields' ... and this event is fired after backend.form.extendFieldsBefore so new added fields are not translatable.

backend.form.extendFieldsBefore 此事件负责将字段转换为 translatable 字段,因此在此事件之后添加的字段不会显示为 translatable.

我计划纠正此行为 并为作者 repo 贡献 PR https://github.com/anand-patel/oc-seo-extension一旦我有空闲时间

Solution could be [ need to be done in plugin base code ] to use backend.form.extendFieldsBefore event in SEO Extension Plugin and during extension of fields it need to directly work with raw config, right now it uses $widget->addFields so it has to remove that and directly injecting fields to config so, later on newly added fields can be processed by RainLab.Translate Plugin using backend.form.extendFieldsBefore event.

So For now workaround 在您的自定义插件中添加已经支持跨国的字段,或者您可以再次使用 extendFieldsBefore 并使用 raw config 添加字段。

这里我们只使用简单的解决方案并添加具有可翻译字段类型的覆盖字段

use RainLab\Blog\Models\Post;
use Event;
use System\Classes\PluginManager;

public function register() {

Post::extend(function($post) {
if (!$post->propertyExists('translatable')) {
$post->addDynamicProperty('translatable', []);
}
$post->translatable = array_merge($post->translatable, ['seo_title', 'seo_description' /* so on ....*/]);
});

Event::listen('backend.form.extendFields', function($widget) {
if(PluginManager::instance()->hasPlugin('RainLab.Blog') && $widget->model instanceof \RainLab\Blog\Models\Post)
{
$widget->addFields([
'seo_title' => [
'label' => 'Meta Title',
'type' => 'mltext', //<- HERE
'tab' => 'SEO'
],
'seo_description' => [
'label' => 'Meta Description',
'type' => 'mltextarea', //<- HERE
'size' => 'tiny',
'tab' => 'SEO'
],
'seo_keywords' => [
'label' => 'Meta Keywords',
'type' => 'mltextarea', //<- HERE
'size' => 'tiny',
'tab' => 'SEO'
],
'canonical_url' => [
'label' => 'Canonical URL',
'type' => 'mltext', //<- HERE
'tab' => 'SEO',
'span' => 'left'
],
'redirect_url' => [
'label' => 'Redirect URL',
'type' => 'mltext', //<- HERE
'tab' => 'SEO',
'span' => 'right'

],
// ... so on
],
'secondary');
}
});
}

但这是标准解决方案的解决方法,我计划更正此问题并将 PR 推送给作者插件 repo 可能是 -> https://github.com/anand-patel/oc-seo-extension

如有任何疑问,请发表评论。

关于OctoberCMS 翻译插件与 SEO 插件不翻译 CMS 页面和博客的 SEO 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63787551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com