ayudat / seolo
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 update
和npm 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"。