当我在OctoberCMS Rainlab博客标题中写下非unicode字母时,它被转换为英文字母,如下所示:
موضوعجديد
转换为:modoaa-gdyd
我不想要这个,我只想用连字符替换空格,例如:
موضوع-جديد
我怎么能这样做?
答案 0 :(得分: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
复制到slu。中。
答案 1 :(得分: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
答案 2 :(得分:1)
我通过编辑以下文件解决了这个问题:
modules \ system \ assets \ ui \ storm-min.js
我清空了以下变量:
ARABIC_MAP={},PERSIAN_MAP={}
并通过替换此行来编辑slugify函数:
slug=slug.replace(/[^-\w\s]/g,'')
用这个:
slug=slug.replace(/[^-\w\sء-ي]/g,'')
所以,现在slug通常接受阿拉伯字符