1


当我在OctoberCMS Rainlab博客标题中写非unicode字母时,它被转换为英文字母,例如:
موضوعجديد
被转换为:modoaa-gdyd
我不想要这个,我只想用连字符替换空格例如:
موضوع-جديد
我该怎么做?

4

3 回答 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 回答