habib-eg/seo-manager

Laravel 框架的 SEO 管理器

dev-main 2021-03-20 16:59 UTC

This package is auto-updated.

Last update: 2024-09-21 00:44:13 UTC


README

MadeWithLaravel.com shield

lionix/seo-manager 包将为您提供一个界面,您可以从这里分别管理所有页面的元数据,并获得动态变化的内容。让我们看看如何。

更新

在更新到版本 > v1.2.* 后,您必须运行

php artisan vendor:publish --provider="Lionix\SeoManager\SeoManagerServiceProvider" --tag=config --force
php artisan vendor:publish --provider="Lionix\SeoManager\SeoManagerServiceProvider" --tag=assets --force

php artisan migrate

以发布最新的配置文件和新迁移文件。

本地化

在版本 v1.2.* 中,您将能够本地化元数据并设置数据的翻译。

为此,您只需点击右上角的“添加区域”按钮,添加您可用的区域,并选择您想要添加翻译的区域。

这就完成了,包将自动从网站检测您的区域并设置所需的翻译,您不需要进行任何其他配置。简单,不是吗?

安装

您可以通过 composer 安装此包

composer require lionix/seo-manager

发布包文件

php artisan vendor:publish --provider="Lionix\SeoManager\SeoManagerServiceProvider"

此命令将创建 config/seo-manager.php 文件,并将包资源目录复制到 public/vendor/lionix

配置

config/seo-manager.php 文件中,您可以进行以下配置

return [
    /**
     * Database table name where your manager data will be stored
     */
    'database' => [
            'table' => 'seo_manager',
            'locales_table' => 'seo_manager_locales',
            'translates_table' => 'seo_manager_translates'
        ],
        
    /**
     * Set default locale,
     * It will be added as default locale
     * when locales table migrated
     */
    'locale' => 'en',

    /**
     * Path where your eloquent models are
     */
    'models_path' => '',

    /**
     * Route from which your Dashboard will be available
     */
    'route' => 'seo-manager',

    /**
     * Middleware array for dashboard
     * to prevent unauthorized users visit the manager
     */
    'middleware' => [
        //  'auth',
    ],

    /**
     * Routes which shouldn't be imported to seo manager
     */
    'except_routes' => [
        'seo-manager',
        'admin'
        //
    ],

    /**
     * Columns which shouldn't be used ( in mapping )
     */
    'except_columns' => [
        // "created_at",
        // "updated_at",
    ],

    /**
     * Set this parameter to true
     * if you want to have "$metaData" variable
     * shared between all views in "web" middleware group
     */
    'shared_meta_data' => false
];

完成所有配置后,运行 php artisan migrate 以创建 SEO 管理器表。

这就完成了,现在您的 SEO 管理器将从 /seo-manager URL(或,如果您更改了路由配置,通过该配置 URL)可用。

使用方法

访问仪表板 URL 后,您必须导入您的路由以开始管理它们。

routes import

路由导入将存储所有您的 GET 路由到数据库中(除非在 "except_routes" 配置中指定的路由)。

imported routes

让我们开始吧!

映射

为了获取动态变化的元数据,您应将路由参数映射到正确的模型。

参数:路由参数

模型:您使用路由参数获取记录的 Eloquent 模型

查找:您使用数据库表列名获取记录

使用列:我们应使用哪些数据库表列进行进一步映射

注意:如果您在模型内部通过 protected $appends 添加了属性,并且您想在映射中使用它们,您必须在您的模型内部使用 Lionix\SeoManager\Traits\Appends; trait。

只有当您的路由具有参数时,才可进行映射

下一步,您可以设置关键词、描述、标题、URL、作者、标题动态、OpenGraph 数据。

关于“标题动态”

在这里,您可以拖放映射的参数、标题,并写入自定义文本以生成页面的动态标题。每次更改“标题”或映射参数的值时,动态标题将自动更改。

关于“Open Graph”

在这里,您可以编写您的 Open Graph 数据或将字段映射到基于参数的映射。

示例用法

通过 SeoManager Facade

use Lionix\SeoManager\Facades\SeoManager;
这将返回一个包含所有 SEO 管理器数据的数组
SeoManager::metaData();

示例

array:13 [▼
  "keywords" => "First Keyword, Second, Third"
  "description" => "Test Description"
  "title" => "Test Titile"
  "url" => "http://example.com/users/1"
  "author" => "Sergey Karakhanyan"
  "title_dynamic" => "Test Titile - Custom Text - Test User Name "
  "og:url" => "http://example.com/users/1"
  "og:type" => "website"
  "og:image:url" => "https://wallpaperbrowse.com/media/images/3848765-wallpaper-images-download.jpg"
  "og:title" => "Test Titile - Custom Open Graph Text"
  "og:locale" => "en_GB"
  "og:site_name" => "Seo Manager Package"
  "og:description" => "Open Graph Description"
]

SeoManager::metaData(); 方法可以接收属性变量以获取某些属性的值

示例

SeoManager::metaData('keywords'); 将返回 "First Keyword, Second, Third"

仅获取 OpenGraph 数据数组
SeoManager::metaData('og_data');

示例

array:7 [▼
  "og:url" => "http://example.com/users/1"
  "og:type" => "website"
  "og:image:url" => "https://wallpaperbrowse.com/media/images/3848765-wallpaper-images-download.jpg"
  "og:title" => "Test Titile - Custom Open Graph Text"
  "og:locale" => "en_GB"
  "og:site_name" => "Seo Manager Package"
  "og:description" => "Open Graph Description"
]
别名

SeoManager::metaKeywords()

SeoManager::metaTitle()

SeoManager::metaDescription()

SeoManager::metaUrl()

SeoManager::metaAuthor()

SeoManager::metaTitleDynamic()

SeoManager::metaOpenGraph() - 可以接收属性变量以获取某些OG属性的值

示例

SeoManager::metaOpenGraph('og:image:url')

将返回 "https://wallpaperbrowse.com/media/images/3848765-wallpaper-images-download.jpg"

通过 辅助函数

metaData()

metaKeywords()

metaTitle()

metaDescription()

metaUrl()

metaAuthor()

metaTitleDynamic()

metaOpenGraph()

通过 @Blade 指令

您可以在视图文件中使用这些blade指令来获取元数据。

@meta

输出示例

<meta property="keywords" content="First Keyword, Second, Third">
<meta property="description" content="Test Description">
<meta property="title" content="Test Titile">
<meta property="url" content="http://packages.loc/users/1">
<meta property="author" content="Sergey Karakhanyan">
<meta property="title_dynamic" content="Test Titile - Custom Text - Test User Name ">
<meta property="og:url" content="http://packages.loc/users/1">
<meta property="og:type" content="website">
<meta property="og:image:url" content="https://wallpaperbrowse.com/media/images/3848765-wallpaper-images-download.jpg">
<meta property="og:title" content="Test Titile - Custom Open Graph Text">
<meta property="og:locale" content="en_GB">
<meta property="og:site_name" content="Seo Manager Package">
<meta property="og:description" content="Open Graph Description">

@meta 可以接收属性参数

@meta('description')

输出示例

<meta property="description" content="Test Description">

注意:您不能将开放图属性添加到 @meta() 中,例如 @meta('og-url')。但您可以通过 @meta('og_data') 获取仅包含开放图元数据。如果您想获取具体的OG参数元标签,可以使用 @openGraph(与 @meta('og_data') 类似)并在其中传递参数,例如 @openGraph('og-url')

注意 #2:如果您想修改OG数据并手动显示,您应该在 @meta 之前做这些操作。

示例

<meta property="og:image:url" content="{{ asset(metaOpenGraph('og:image:url')) }}">
@meta
别名

@keywords

@url

@author

@description

@title

@openGraph

@titleDynamic - 将返回动态生成的标题,您可以在 <title></title> 标签内使用它。

贡献

如何开始在此项目上开发

  1. 在现有的Laravel项目中安装模块并检查模块是否工作。

  2. 删除文件夹 vendor/lionix/seo-manager。

  3. 将模块的分支复制到 vendor/lionix/seo-manager 文件夹中(不知道如何创建分支? https://kbroman.org/github_tutorial/pages/fork.html)

  4. 将以下行添加到您的 webpack.mix.js mix.js('vendor/lionix/seo-manager/src/vue/seo-manager.app.js', 'public/vendor/lionix/js');

  5. 运行NPM Watch命令 npm run watch

  6. 如果一切正常,您就可以开始开发模块了

  7. 请务必将您的 public/vendor/lionix/js/seo-manager.app.js 复制到 vendor/lionix/seo-manager/src/assets/seo-manager.app.js

鸣谢