当我在OctoberCMS Rainlab博客标题中写非unicode字母时,它被转换为英文字母,例如:
موضوعجديد
被转换为:modoaa-gdyd
我不想要这个,我只想用连字符替换空格例如:
موضوع-جديد
我该怎么做?
问问题
718 次
3 回答
2
嗯,现在看来我们无法js plugin
为特定目的而扩展
但我们可以将插件扩展为不使用slug
类型
您可以将此代码添加到任何插件的boot
方法中
boot
方法是imp
<?php namespace HardikSatasiya\DemoTest;
use System\Classes\PluginBase;
class Plugin extends PluginBase
{
public function registerComponents()
{
}
public function registerSettings()
{
}
public function boot() {
\Event::listen('backend.form.extendFieldsBefore', function($widget) {
// You should always check to see if you're extending correct model
if(!$widget->model instanceof \RainLab\Blog\Models\Post) {
return;
}
// now we remove type = slug , and use exact
// as type = slug will convert chars ARABIC_MAP to english so
$widget->fields['slug']['preset']['type'] = 'exact';
});
}
}
它不会解决您的完整问题,但它可以简单地将您
blog-title
完全复制到 slug 中,slug text-box
然后您需要/
在开头添加,然后您还需要手动' ' => '-'
放置(在空格处破折号)。
抱歉,这不会解决您的整个问题,但只会让您免于title
一次又一次地复制到 slug。
于 2018-01-08T09:09:37.733 回答
1
将此函数添加为您的应用程序中的助手并重用它
public static function generateSlug($title)
{
$title = strtolower($title);
$title = preg_replace("/[\s-]+/", ' ', $title);
$title = preg_replace("/[\s_]/", '-', $title);
return $title;
}
$slug = Helpers::generateSlug('موضوع جدید', '-');
//will produce "موضوع-جدید"
或者使用这个包 Sluggable Persian
于 2018-01-06T11:39:32.200 回答
1
我通过编辑以下文件解决了这个问题:
模块\系统\资产\用户界面\storm-min.js
我清空了以下变量:
ARABIC_MAP={},PERSIAN_MAP={}
并通过替换此行来编辑 slugify 函数:
slug=slug.replace(/[^-\w\s]/g,'')
有了这个:
slug=slug.replace(/[^-\w\sء-ي]/g,'')
所以,现在蛞蝓正常接受阿拉伯字符
于 2018-05-14T14:50:56.023 回答