orgasmicnightmare / cakephp-seo
CakePHP 3的SEO插件
Requires
- cakephp/cakephp: ~3.0
- friendsofcake/search: ~1.0
Requires (Dev)
Suggests
- cakephp/migrations: Database Migration plugin for CakePHP 3.0 based on Phinx
This package is not auto-updated.
Last update: 2024-09-14 18:36:47 UTC
README
为cakePHP 3提供的一个SEO插件,便于管理SEO标签。它包括一个行为、一个组件、一个视图单元和默认的admin crud操作。
- 该行为可以帮助你为每个模型生成一些默认标签。你可以使用简单的文本、模式、回调函数。
- 组件在视图中注入标签。
- 视图单元可以帮助你在记录的admin视图中直接添加或编辑标签。
注意:此插件受到了CakePHP-Seo-Plugin的启发
安装
您可以使用composer将此插件安装到您的CakePHP应用程序中。
安装composer包的推荐方式是
composer require orgasmicnightmare/cakephp-seo
然后更新您的数据库以创建新的表
bin/cake migrations migrate -p Seo
现在您可以访问到admin部分
- yoursite/admin/seo/seo-uris
- yoursite/admin/seo/seo-titles
- yoursite/admin/seo/seo-meta-tags
- yoursite/admin/seo/seo-canonicals
行为
SeoBehavior允许您在添加新条目时自动创建SEO字段。
配置行为,请参见下面的默认配置,每次添加条目时,所有配置的标签都将生成。这可以节省大量时间...
稍后,您可以通过admin部分或通过在模型视图中添加Seo单元框来访问数据。
默认配置是
$_defaultConfig = [
'urls' => [
[
'url' => [
'prefix' => false,
'action' => 'view',
'_' => [
'slug' => 'slug'
]
],
'title' => 'Seo default title',
'canonical' => true,
'meta_tags' => [
'og:type' => [
'content' => 'website',
'is_property' => true
],
'og:description' => [
'content' => '{{content}}',
'is_property' => true
],
'og:locale' => [
'callback' => 'getLocale',
'is_property' => true
],
'twitter:description' => [
'content' => '{{content}}',
'is_property' => true
],
]
]
]
];
- urls要添加标签的URL数组
- urls.url标准的CakePHP路由选项数组。此键有两个特殊键
- _用于传递路由的变量,例如:/brand/:slug
- _callback一个回调函数,用于生成路由选项数组
- urls.title标题模式。例如:
{{name}}
,将仅使用字段'name'填充标题标签。 - urls.canonical如果您想添加一个canonical标签,则为true
- urls.meta_tags您想添加的元标签数组。每个键是新标签名,支持许多选项
- callback一个回调函数,用于设置标签的内容(关于此稍后详细介绍)
- content一个模板来格式化内容。例如:
Hello {{name}}
双大括号中的文本是实体的一个字段。 - is_property如果为true,则标签使用属性"property"而不是"name"。
- is_http_equiv如果为true,则标签将设置属性"is_http_equiv"为true。
组件
SeoComponent根据URI准备并发送信息到视图。
要使用它,只需将其添加到AppController.php
或任何子控制器中。
默认配置是
$_defaultConfig = [
'excludePrefix' => ['admin'],
'defaults' => [
'title' => 'Default Title',
'prefix' => null,
'suffix' => null
],
'templates' => [
'meta' => '<meta{{attrs}}/>',
'canonical' => '<link rel="canonical" href="{{content}}"/>'
]
];
- excludePrefix:绕过这些前缀的处理过程
- defaults.title:标题标签
- defaults.prefix:标题标签的前缀
- defaults.suffix:标题标签的后缀
视图单元
您可以通过常规的admin URL(例如:yoursite/admin/seo/seo-titles)访问所有SEO数据。
但这并不真正有用,甚至可以说它很糟糕
单元视图是为了帮助您在所需的视图中直接获取所有SEO信息。
您有一个产品admin编辑视图。在Template/Admin/Products/edit.ctp中,只需添加
$cell = $this->cell('Seo.Seobox', ['uri' => Router::url(['_name' => 'catalogView', $product->slugPath])]);
echo $cell;
?>
在这个例子中,我使用了一个命名路由,但您也可以使用标准的数组。只需记住要使用要添加SEO元数据的路由,在这种情况下是产品的公共视图。
实际上,默认模板并不遵循 CakePHP 默认布局,你肯定想覆盖它。为此,只需遵循常规方法。