cnj/seotamic

Statamic 的简单 SEO 扩展插件

安装次数: 25,284

依赖关系: 1

建议者: 0

安全性: 0

星标: 20

关注者: 4

分支: 12

开放问题: 2

类型:statamic-addon


README

PRO 版本:如果您在许可证方面遇到问题,请确保在 config/statamic/editions.phpaddons 数组中添加 'cnj/seotamic' => 'pro'

Seotamic - Statamic SEO 扩展插件

仅支持 Statamic v5。对于 Statamic v4,请使用 4.* 版本;对于 Statamic v3,请使用 3.* 版本。自动为所有集合条目添加 SEO 选项卡,您可以在其中为每个条目微调 SEO。与 Antlers、Blade 和无头模式(PRO 版本)完美配合,直接使用 Statamic REST API 或 GraphQL 集成。

快速 Antlers 使用示例

{{ seotamic }}

生成完整的 SEO 设置数组

<title>My Page Title</title>
<meta name="description" content="SEO friendly description" />
<link rel="canonical" href="https://mysite.com/page" />
<meta property="og:url" content="https://mysite.com/page" />
<meta property="og:site_name" content="Site name" />
<meta property="og:title" content="My Page Title" />
<meta property="og:description" content="SEO friendly description" />
<meta property="og:image" content="https://mysite.com/img/og.jpg" />
...

版本 5 更改

Seotamic v5.* 与 Statamic v5.0+ 兼容。

版本 4.1 更改

Seotamic v4.1 是一个小版本更新,增加了相关元标签。相关元标签用于在多站场景中链接到与当前页面相关的其他页面。它们作为标签可用,并可用于 Antlers 或 Blade 模板。在 PRO 查询模式下,相关元标签也通过 REST API 和 GraphQL 可用。

版本 4 更改

Statamic v4 兼容性。由于 Statamic v4 中蓝图的工作方式,一些内部函数发生了变化。此版本与 Statamic v3 不兼容。在升级到此版本之前,请先升级到 Statamic v4。从 SEOtamic v2 升级的路径仍然相同。

版本 3 更改

版本 3 有破坏性更改。如果您从版本 1 或 2 升级,您的全局设置将不会迁移。数据布局略有不同,特定条目的数据也是如此。

字符串标签已更改为数组,因此要访问数据,您需要使用 :meta:social 前缀。例如 {{ seotamic:title }} 变为 {{ seotamic:meta:title }}

从版本 2 迁移

如果您从版本 2 迁移,可以使用以下命令迁移您的数据

php artisan seotamic:migrate

这将迁移您的全局设置和所有条目。它还将从条目中删除旧字段。在运行命令之前,请确保备份您的数据。

安装

使用 composer 包含包

composer require cnj/seotamic

此包需要 Laravel 9+ 和 PHP 8.1+。它将自动注册。

SEO & 社交选项卡将自动出现在所有集合条目中。

配置(可选)

您可以通过发布配置来覆盖默认选项

php artisan vendor:publish --provider="Cnj\Seotamic\ServiceProvider" --tag=config

这将复制默认配置文件到 `config/seotamic.php`。

如果您需要更改默认的资产容器,请确保在蓝图中也应用更改。

使用方法

使用方法相对简单直接。您可以通过在 CP 中的导航上点击 Seotamic 链接来访问全局设置。请确保遵循每个字段的说明。

Meta preview

在此之后,您可以通过编辑条目的 SEO 选项卡下的 SEO 设置来微调每个集合条目的输出。从版本 3 开始,您还可以预览元和社交设置的输出。预览应准确反映输出。

Social preview

Antlers

有几个 antler 标签可用,最简单的方法是将执行所有操作的基标签包含在布局的头部

{{ seotamic }}

如果您需要更多控制,您可以通过使用以下方法手动获取输出的一部分

{{ seotamic:meta:title }}
{{ seotamic:meta:description }}
{{ seotamic:meta:canonical }}
{{ seotamic:meta:robots }}
{{ seotamic:meta:related }}

这将返回字符串,因此您需要将它们包装在适当的标签中,例如

<title>{{ seotamic:meta:title }}</title>

社交相关的仍然会返回所有带有这些标签的内容(通用标签也会返回这些内容)

{{ seotamic:og }}
{{ seotamic:twitter }}

如果您需要更多控制,您可以通过使用以下方法手动获取输出的一部分

{{ seotamic:social:title }}
{{ seotamic:social:description }}
{{ seotamic:social:image }}
{{ seotamic:social:site_name }}

这将返回字符串,因此您需要将它们包装在适当的标签中。

Blade

类似于Antlers的使用,您可以使用相同的标签通过Blade实现。

{!! Statamic::tag('seotamic')->context(get_defined_vars()) !!}

它的工作方式类似于Antlers标签,因此您也可以使用单个值。

无头(PRO版)

无头使用很简单。如果您使用REST API或GraphQL,条目将包含三个Seotamic字段:`seotamic_meta`、`seotamic_social`,它们将包含预填充的SEO数据。

您还可以通过在配置文件中设置`headless_mode`的值来设置基础 canonical URL。默认值为`false`,但将其设置为`https://mydomain.com`将更改所有 canonical URL。图片将不会使用此基础 URL,因为它们仍然由Statamic提供。

无头使用仅支持PRO版。

网站地图(PRO版)

如果网站地图配置选项设置为true(默认),则网站地图将在`/sitemap.xml` URL下自动生成。

网站地图仅支持PRO版。

动态OG图片注入

在需要OG图片动态生成的项目中,目前您可以使用此ViewModel并将其注入到您的集合中,以动态分配OG图片。

<?php

namespace App\ViewModels;

use Statamic\View\ViewModel;

class OgImage extends ViewModel
{
    public function data(): array
    {
        $social = $this->cascade->get('seotamic_social');

        if ($social) {
          return [ ...$social, 'image' => 'https://myimageurl.com/image.jpg', ];
        }

        return [];
    }
}

在上面的示例中,我们使用了一个硬编码的图片URL,您可以根据您的用例进行更改。然后,在您的集合中,您只需注入ViewModel即可。

title: Posts
inject:
  view_model: App\ViewModels\OgImage

致谢

此包由CNJ Digital构建。

版本3、4和5许可证

版本3和4是Statamic的商业插件。它是开源的,但不是免费使用的。您可以在Statamic市场购买许可证。

版本2和1许可证

版本2和1是根据MIT许可证授权的。