alexeymezenin/laravel-russian-slugs

Laravel 5 的俄语SEO友好型缩略名

0.9 2016-04-27 12:40 UTC

README

该软件包不再受支持

简介

此软件包提供易于使用的西里尔字母缩略名,如 'Как_вырастить_дерево' 和 Yandex 转写 'kak-vyrastis-derevo' 的缩略名及其变体,包括小写字母和不同的分隔符。

安装

首先,编辑您的 Laravel 项目的 composer.json 文件,在 require 部分添加此行

"require": {
    ....
    "alexeymezenin/laravel-russian-slugs": "0.9.*"

之后,运行此命令安装软件包

composer update

现在,将这些两行插入到 config/app.php 中的 provider 和 aliases 数组中

'providers' => [
    ....
    AlexeyMezenin\LaravelRussianSlugs\SlugsServiceProvider::class,
    

'aliases' => [
    ....
    'Slug' => AlexeyMezenin\LaravelRussianSlugs\SlugsFacade::class,

最后,通过运行以下命令来注册配置文件和相关命令

php artisan vendor:publish

使用缩略名

要使用此软件包,您需要更新模型,添加此 use 子句

class Articles extends Model
{
    use \AlexeyMezenin\LaravelRussianSlugs\SlugsTrait;

然后您需要在迁移中创建 slug

$table->string('slug');

要使用 自动创建缩略名 功能,请将 slugFrom 属性添加到您的模型中

protected $slugFrom = 'article_name';

在这种情况下,每次您将数据保存到数据库时,软件包都会尝试创建(但不重新创建)一个新的缩略名并将其保存

$article = Article::create(['article_name' => 'Как вырастить дерево?']);

当然,在您使用一个查询更新多行时,这不会与大量插入和更新一起工作。

手动创建缩略名

要使用缩略名创建 新记录,请使用 reslug() 方法。这将基于 name 列添加缩略名

$article = new Article;
$article->name = 'How to grow a tree?';
$article->reslug('name');
$article->save();

您可以 更新现有记录 并添加缩略名

$article = Article::find(1);
$article->reslug('name');
$article->save();

如果缩略名已存在,但您需要重新创建它,请使用强制 reslug

$article->reslug('name', true);

或者,您可以使用 Slug 面具手动处理缩略名

$article = Article::find(1);
$article->update([
    'slug' => Slug::build($article->name)
    ]);

findBySlug() 方法允许您根据其缩略名找到模型

$slug = 'how-to-grow-a-tree';
$article = Article::findBySlug($slug);
echo $article->name; // Will output "How to grow a tree?"

配置

要配置软件包,应编辑 config/seoslugs.php 文件。

delimiter 是替换字符串中所有空格的符号。默认为 '_',但也可以是 '-'。

urlType 是缩略名的类型

默认为 1。用于类似 /категория/книги_в_москве 的 URL。

2 用于类似 /kategoriya/knigi_v_moskve 的转写 URL,使用 Yandex 规则进行转写。

keepCapitals 默认为 false。当为 true 时,在缩略名中保留大写字母,例如:/книги_в_Москве

slugColumnName 设置缩略名列的名称。默认为 slug

命令

软件包中提供了三个控制台命令

php artisan slug:auto {table} {column} 命令创建并执行迁移,使用 {column} 作为源重置表(为所有行创建缩略名)。

php artisan slug:migration {table} 命令创建添加缩略名列的迁移。

php artisan slug:reslug {table} {column} 命令为指定的表创建或重新创建缩略名。

命令 slug:autoslug:reslug 将重新创建所有缩略名,即使它们已经存在(使用强制 reslug)。

版权

RussianSeoSlugs 由 Alexey Mezenin 编写,并按 MIT 许可证发布。