willis1776 / seo-nova-field
一个Laravel Nova字段,它将所有SEO相关元字段添加到资源中。
Requires
- php: >=7.3.0
- laravel/nova: ^4.0.0
- dev-master
- v4.0.1
- v4.0.0
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.1.7
- V2.1.6
- V2.1.5
- V2.1.4
- V2.1.3
- V2.1.2
- V2.1.1
- V2.1.0
- v2.0.0
- v1.2.0
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- 1.0.0
- dev-dev/updates
- dev-update/sitemap-updates
- dev-feature/add-multilang-support
- dev-dependabot/npm_and_yarn/ws-6.2.2
- dev-dependabot/npm_and_yarn/dns-packet-1.3.4
- dev-dependabot/npm_and_yarn/browserslist-4.16.6
- dev-dependabot/npm_and_yarn/lodash-4.17.21
- dev-dependabot/npm_and_yarn/url-parse-1.5.1
- dev-dependabot/npm_and_yarn/ssri-6.0.2
- dev-dependabot/npm_and_yarn/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/ini-1.3.8
- dev-dependabot/npm_and_yarn/http-proxy-1.18.1
- dev-dependabot/npm_and_yarn/acorn-6.4.1
- dev-dependabot/npm_and_yarn/websocket-extensions-0.1.4
- dev-develop
This package is auto-updated.
Last update: 2024-09-17 20:14:56 UTC
README
这个自定义nova字段,可以通过一个单例特性,将SEO相关字段添加到任何模型中。
如果你是从v1版本升级的,请阅读升级指南
如何安装
要安装该软件包,请运行以下安装命令
composer require willis1776/seo-meta-nova-field
然后发布配置和迁移
php artisan vendor:publish --provider="Willis1776\SeoMeta\FieldServiceProvider"
然后运行迁移
php artisan migrate
如何使用字段
找到你想要添加SEO字段的模型,例如可以是App\Models\Page
,然后添加SeoMetaTrait
特性
...
use Willis1776\SeoMeta\Traits\SeoMetaTrait;
class Page extends Model
{
use SeoMetaTrait;
...
}
然后在nova资源App\Nova\Page
中使用该字段
...
use Willis1776\SeoMeta\SeoMeta;
class Page extends Resource
{
...
public function fields(Request $request)
{
return [
...,
SeoMeta::make('SEO', 'seo_meta')
->disk('s3-public') //disk to store seo image, default is public
];
}
}
然后进入布局blade的顶部,默认为resources/views/welcome.blade.php
...
<head>
@include('seo-meta::seo')
...
</head>
其中@include('seo-meta::seo', ['page' => $page])
,应包含与SeoMetaTrait
特性相关联的模型实例。
如果你当前页面没有选择任何模型/资源,那么你可以像这样获取页面的SEO数据
use Willis1776\SeoMeta\Helper\Seo;
...
Route::get('/tester', function(){
return view('page', [
'seo' => Seo::renderAttributes('SEO title', 'SEO description', 'SEO keywords', 'SEO image', 'index, follow'), // Builds the seo array
]);
});
以下是Seo::renderAttributes
静态方法的样子
本地化
- 对于本地化,只需更新配置文件,包括可用区域设置和回退区域设置
为模型设置默认值
如果SEO值应该每次都具有相同的结构,那么您可以使用特性中的以下方法设置它
/**
* REGISTERING THE DEFAULT VALUES IF EXISTS
*/
public function registerDefaultValues(): void
{
// add default SEO title for the model
$this->addTitleDefault(string $value = null, string $locale = null): void
// add default SEO description for the model
$this->addDescriptionDefault(string $value = null, string $locale = null): void
// add default SEO keywords for the model
$this->addKeywordsDefault(string $value = null, string $locale = null): void
// add default SEO image for the model
$this->addImageDefault(string $value = null): void
// add default SEO follow for the model
$this->addFollowDefault(string $value): void
}
设置Sitemap功能
如果您想要Sitemap功能,请将seo.sitemap_status
配置更改为true
以激活Sitemap。然后,将具有SeoSitemapTrait
特性的模型添加到seo.sitemap_models
数组中,如下所示
...
'sitemap_status' => env('SITEMAP_STATUS', true),
...
'sitemap_models' => [
App\Models\Page::class
],
将Sitemap特性添加到模型中
当您想要在Sitemap中显示eloquent模型时,您需要向它添加SeoSitemapTrait
特性
...
use Willis1776\SeoMeta\Traits\SeoSitemapTrait;
class Page extends Model
{
use SeoMetaTrait, SeoSitemapTrait;
...
/**
* Get the Page url by item
*
* @return string
*/
public function getSitemapItemUrl()
{
return url($this->slug);
}
/**
* Query all the Page items which should be
* part of the sitemap (crawlable for google).
*
* @return Builder
*/
public static function getSitemapItems()
{
return static::all();
}
}
现在您应该能够访问seo.sitemap_path
,默认为/sitemap
。然后,您应该得到一个正确的Sitemap结构的xml文件,用于Google Search Console。
在Laravel Nova中看起来如何
在详细视图中,如果没有设置SEO,您将看到一条文本信息“您需要一些SEO数据”。但是如果您有,您将获得一个切换按钮,它会显示在Google和Facebook上的外观示例: