ayudat/seolo

SEO 工具

dev-master 2017-09-29 10:38 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:11:07 UTC


README

适用于Laravel 5.4及以上项目的SEO工具。包括:

  • 使用t()辅助函数绘制的文本编辑器。
  • 为添加CSS类seolo的图片提供替代文本编辑器。
  • 元标签和title编辑器。
  • 节日编辑器。

将Seolo添加到项目中

将以下行插入项目composer.json中的require部分:

"ayudat/seolo": "master-dev"

执行composer updatenpm install

composer.json中添加行"Ayudat\\Seolo\\": "vendor/ayudat/seolo/src"

"autoload": {
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/",
        "Ayudat\\Seolo\\": "vendor/ayudat/seolo/src"
    }
},

config/app.php中添加服务提供者:Ayudat\Seolo\SeoloServiceProvider::class

执行

$ composer dump-autoload

资产和发布

webpack.mix.js中添加,在let mix = ...之后:

mix.options({
  processCssUrls: false // Do not process/optimize relative stylesheet url()'s, for asset_()
});

如果我们不使用Vue,则在resources/assets/js/app.js中注释掉除require('./bootstrap')之外的所有行。

大约会是这样的:

...

require('./bootstrap');

//window.Vue = require('vue');

...

//Vue.component('example', require('./components/Example.vue'));

//const app = new Vue({
//    el: '#app'
//});

执行npm run dev以生成项目的基础CSS文件,以防我们想在后端使用它们。

完成后,在webpack.mix.js中,我们可以注释掉mix中的所有行,以便不再编译,节省每次“npm run dev”的时间,并在最后添加:

mix.sass('resources/assets/sass/seolo.scss', 'public/css');

Seolo已包含变量文件_variables.scss和Bootstrap,在此行mix之后,我们可以添加项目的SCSS。

现在我们可以发布和编译,以获取Seolo的文件和CSS (这应该在每个composer update时进行,以确保资产和其他内容)

$ php artisan vendor:publish --force --provider="Ayudat\Seolo\SeoloServiceProvider" && npm run dev

路由

routes/web.php中,将index路由命名为(因为系统需要标签),注意:所有路由都必须有一个“name”,将与其SEO数据相关联

Route::get('/', function () {
    return view('welcome');
})->name('index');

迁移

在配置好.env中的数据库后,执行迁移,这将创建“seolo_texts”表。

$ php artisan migrate:refresh --seed

如果发生错误,错误信息中包含类似"specified key was too long error"的内容,编辑你的AppServiceProvider.php并添加:

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

然后再次尝试运行artisan

身份验证

为了使Seolo的附加功能生效,需要一个经过身份验证的用户,初始情况下任何用户都可以,对于更深入的用户权限或可以“查看”Seolo的用户,你需要进行修改;)

$ php artisan make:auth

完成此操作后,你至少需要在数据库中有一个用户,创建一个种子来填充用户表,至少包含一个用户,以便可以进行登录,在Laravel手册中可以找到如何进行的方法,在Database > Seeding

语言

Seolo的消息用英语和西班牙语提供。根据在config/app.php中定义的“locale”。

布局修改

在项目布局中,将title标签替换为以下内容(注意og:image,这是当网站在Facebook上分享时使用的,需要创建300x300的图像,或者删除该行):

<?php $routeName = Illuminate\Support\Facades\Route::current()->getName(); ?>
<title>{{ tag($routeName, 'tab', config('app.name')) }}</title>
<meta property="og:title" content="{{ tag($routeName, 'title') }}"/>
<meta property="og:type" content="website" />
<meta property="og:url" content="{{ route($routeName) }}"/>
<meta property="og:description" content="{{ tag($routeName, 'description') }}"/>
<meta property="og:image" content="{{ route('index') }}/images/logo-fb.png"/>
<meta name="description" content="{{ tag($routeName, 'description') }}"/>
<meta name="csrf-token" content="{{ csrf_token() }}">

可能在这里,你需要添加项目的javascript,它必须包含jQuery

<script src="{{ asset_('js/app.js') }}"></script>

然后是

@if (Illuminate\Support\Facades\Auth::user())
    <link href="{{ asset_('css/seolo.css') }}" rel="stylesheet" type="text/css">
    @include('seolo::text')
    @include('seolo::tags')
    @include('seolo::alt')
    @include('seolo::festives')
@endif

注释

任何使用 t() 调用的文本,如果没有在翻译文件中包含 key,Seolo 将尝试在数据库的 seolo_texts 表中查找它。如果找到了并且用户已登录,则可以进行编辑。如果使用格式为 "blade" 的 t(),则使用如下形式:{!! t('...') !!},以确保 Seolo 所需的 HTML 正确渲染。

任何具有这种结构的图像都可以编辑其 alt 属性。

<img src="{{ asset_('images/test.png') }}" alt="{{ alt('test') }}" class="seolo" data-seolokey="test"/>

例如,seolo-alt.test 将是该图像在 Seolo 数据库中的 key。如果图像周围有锚点,其 href 将被取消,以便编辑包含图像的 alt 属性。可以保存空的文本替代,以防不想在某些图像中使用 alt

标签文本的格式如下,例如对于 "index" 路径:seolo-tag.index.tab,对于 'title' 标签:seolo-tag.index.title,对于 'og:title' 元数据:seolo-tag.index.description,对于 'description' 元数据和 'og:description'。

seolo-festives 中将保存节日文本。

辅助函数

Seolo 包含一些辅助函数来与之交互,包括:

asset_($asset) 返回一个 asset(图像、js、css)的路径,在最后添加 ?_=time,其中 'time' 是 asset 修改日期的时间戳。这会使浏览器在图像或 CSS 修改后重新缓存。重要的是要知道,如果将项目的 'public' 文件夹移动,并且使用此辅助函数找不到 assets,可能需要使用配置变量 'seolo.public-path' 来定义目录(Seolo 的 publish 生成 config/seolo.php)。

t($key, $amount = 1, $replace = [], $editable = true) 与 'trans_choice' 的功能相同,但如果在项目的翻译文件中找不到 $key,则会在 seolo_texts 表中查找,如果找到,则显示文本,如果用户已登录,则还允许编辑。

tag($routeName, $key, $default = '') 返回具有 'name'(例如 'index')的路由的标签数据,$key 可以是 [tab|title|description],通常由 Seolo 在布局的 head 块中(在前面的文档部分中已看到)使用。

alt($key, $default = '') 返回图像的文本替代(在前面的文档部分中已看到其使用示例)。

inSchedule() 如果处于工作时间内返回 true,否则如果处于非工作时间或节日返回 false。 重要:请记住在 config/app.php 中将时区设置为 "Europe/Madrid"。