secretwebmaster/ wncms-tags
为您的Wncms添加标签和可标签行为
v1.3.0
2024-09-22 03:23 UTC
Requires
- php: ^8.0
- laravel/framework: ^8.67|^9.0|^10.0|^11.0
- nesbot/carbon: ^2.63|^3.0
- secretwebmaster/wncms-translatable: ^1.0.0
Requires (Dev)
- orchestra/testbench: ^8.26
- pestphp/pest: ^1.22|^2.0
- phpunit/phpunit: ^9.5.2
README
此套件为您的模型提供可标签行为。安装完成后,您只需将 HasTags
特性添加到 Eloquent 模型,即可使其可标签。
我们不仅限于一般的标签功能,WNCMS 标签包含多种功能。内置支持[标签翻译]、[多重标签类型]及[排序功能]。
以下以 Post 模块为例:
// apply HasTags trait to a model use Illuminate\Database\Eloquent\Model; use Wncms\Tags\HasTags; class Post extends Model { use HasTags; // ... }
// 創建你的模型,以Post為例 $post = Post::create([ 'name' => '文章標題', ]); // 添加標籤 $post->attachTag('標籤1'); //不指定類型 $post->attachTag('標籤2', '文章標籤'); //指定類型 $post->attachTags(['標籤3', '標籤4']); //同時創建多個,不指定類型 $post->attachTags(['分類1','分類2'], '文章分類'); //同時創建多個,指定類型,最常用 // 移除標籤 $post->detachTag('標籤1'); $post->detachTag('標籤2', '文章標籤'); $post->detachTags(['標籤3', '標籤4']); $post->detachTags(['分類1', '分類2'], '文章分類'); // 取得模型的所有標籤 $post->tags; // 同步標籤 $post->syncTags(['標籤1', '標籤2']); //其他標籤將被移除 // 同步帶有類型的標籤 $post->syncTagsWithType(['標籤1', '標籤2'], '文章標籤'); $post->syncTagsWithType(['紅色', '黑色'], '顏色'); // 獲取帶有類型的標籤 $post->tagsWithType('文章標籤'); $post->tagsWithType('顏色'); // 獲取帶有任意一個標籤的模型 Post::withAnyTags(['標籤1', '標籤2'])->get(); // 獲取帶有所有標籤的模型,需同時擁有所有 Post::withAllTags(['標籤1', '標籤2'])->get(); // 獲取不帶有指定標籤的模型 Post::withoutTags(['標籤1', '標籤2'])->get(); // 翻譯標籤 $tag = Tag::findOrCreate('我的標籤'); $tag->setTranslation('name', 'en', 'My Tag'); $tag->setTranslation('name', 'fr', 'Mon tag'); $tag->setTranslation('name', 'nl', 'Mijn tag'); $tag->save(); // 獲取翻譯 $tag->getTranslation('name'); //返回我的標籤名稱,使用當前語言 $tag->getTranslation('name', 'fr'); //返回 Mon tag (可選語言參數) // 使用標籤類型 $tag = Tag::findOrCreate('標籤1', '文章標籤'); $tag = Tag::findOrCreate('tag_slug_1'); // slug 不會因語言設定而改變 $tag->slug; //返回 "tag_slug_1"
需求
此套件需要 Laravel 8 或更高版本、PHP 8 或更高版本,以及支持 MySQL 兼容功能的数据库。
安装
您可以通过 Composer 安装此套件:
composer require secretwebmaster/wncms-tags
套件将自动注册。
您可以使用以下命令发布迁移文件以及配置文件:
php artisan vendor:publish --provider="Wncms\Tags\TagsServiceProvider" --tag="tags-migrations"
发布迁移文件后,您可以通过执行 migrate
来创建 tags
和 taggables
数据表:
php artisan migrate