pauloamgomes/cockpitcms-betterslugs

此包已被废弃且不再维护。没有建议的替代包。

Cockpit CMS的更好slug插件,提供了一种新的slug字段类型。

v1.0.0 2021-02-05 23:56 UTC

This package is auto-updated.

Last update: 2023-05-22 15:29:46 UTC


README

此插件通过提供可以用于自动生成您集合的slug字段的类型来增强Cockpit CMS。支持令牌以动态设置值(例如日期、字段等)。

部分灵感来源于Unique Slugs插件 https://github.com/raffaelj/cockpit_UniqueSlugs

安装

手动

下载最新版本并将其解压到COCKPIT_PATH/addons/BetterSlugs目录

Git

git clone https://github.com/pauloamgomes/CockpitCMS-BetterSlugs.git ./addons/BetterSlugs

Cockpit CLI

php ./cp install/addon --name BetterSlugs --url https://github.com/pauloamgomes/CockpitCMS-BetterSlugs.git

Composer

  1. 请确保在项目的composer.json文件中定义了cockpit插件的路径
{
    "name": "MY_PROJECT",
    "extra": {
        "installer-paths": {
            "cockpit/addons/{$name}": ["type:cockpit-module"]
        }
    }
}
  1. 在项目根目录运行
composer require pauloamgomes/cockpitcms-betterslugs

使用

将一个slug类型的字段添加到您的集合中并配置一个格式,例如

{
  "format": "[collection:name]/[date:Y]/[field:title]"
}

对于名为post的集合,结果将类似于post/2019/your-post-title,如果您想以/开头,例如/post/2019/your-post-title,请使用

{
  "format": "/[collection:name]/[date:Y]/[field:title]"
}

您也可以在slug中使用静态值,例如以blogs开头,如blogs/2019/01/your-post-title

{
  "format": "blogs/[date:Y]/[date:m]/[field:title]"
}

如果您正在使用本地化并且希望slug前缀为相应的语言ID,例如en/post/2019/your-post-title

{
  "format": "[lang:id]/blogs/[date:Y]/[date:m]/[field:title]"
}

并使用自定义回调函数

{
  "format": "blogs/[callback:slugUniqId]/[field:title]"
}

假设您有slugUniqId函数(例如在boostrap.php插件文件中)

function slugUniqId($entry, $app, $lang = FALSE) {
  return uniqid();
}

它将返回类似于blogs/5c2ccc816619b/your-post-title的结果

回调函数接收$entry数组作为参数。

目前支持以下令牌

  • collection:value - 其中value是集合结构中的值(例如名称)
  • date:value - 其中value是任何有效的PHP日期字符(例如Y,m,d,YMD等)
  • field:value - 其中value是字段名称(例如标题)
  • lang:id - 用语言ID替换令牌(例如en,fr,pt等)
  • linkedField:value|param - 其中value是链接字段集合名称,param是来自链接集合的值,例如
"format": "countries/[linkedField:country|name]]/[field:title]"

如果我们有一个名为country的字段是集合链接,它将检索集合链接条目的值并提取名称字段,因此结果将类似于:countries/netherlands/my-title

  • callback:value - 其中value是自定义回调函数

默认情况下,生成的slug是唯一的,因此如果您已配置具有格式的slug字段

"format": "blogs/[date:Y]/[date:m]/[field:title]"

并且您的字段标题是"Blog Test" blogs/2019/01/blog-test,如果您插入另一个具有相同标题的条目,则结果将是blogs/2019/01/blog-test-1,下一个将是blogs/2019/01/blog-test-2

只有当字段值为空时才自动生成slug,因此用户可以使用非生成值覆盖它。

支持本地化,只需在字段定义中启用,相应的字段语言名称(例如,slug、slug_en、slug_pt)将自动填充。

可以使用CLI命令来更新集合中的所有slug。

$ ./cp refresh-slugs --name  blog_post

Collection 'blog_post' - Refreshing slugs...
Slug for 5c2cbece164bfc004d0b7595 updated to 'blogs/2019/01/test'
Slug for 5c2cbf82164bfc0044192afc updated to 'blogs/2019/01/test-1'
Slug for 5c2cbfaf164bfc00455447b4 updated to 'blogs/2019/01/test-2'
Slug for 5c2cc22a164bfc00455447b7 updated to 'blogs/2019/01/another-post'
Slug for 5c2ccc81164bfc00455447b9 updated to 'blogs/2019/01/testing-callback'
Done! 9 entries updated in 0.032s

版权和许可

版权所有2019年pauloamgomes,根据MIT许可证。