fomvasss/laravel-meta-tags 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fomvasss/laravel-meta-tags

最新稳定版本:3.5.2

Composer 安装命令:

composer require fomvasss/laravel-meta-tags

包简介

A package to manage SEO (meta-tags, xml-fields, etc.)

README 文档

README

Development and support of this package is discontinued! Use a better solution fomvasss/laravel-seo

Laravel Meta Tags

License Build Status Latest Stable Version Total Downloads Quality Score

With this package you can manage meta-tags and SEO-fields from Laravel controllers and "blade" template.

Installation

Run from the command line:

composer require fomvasss/laravel-meta-tags

Publish and settings

  1. Publish assets - run this on the command line:
php artisan vendor:publish --provider="Fomvasss\LaravelMetaTags\ServiceProvider"
  • A configuration file will be publish to config/meta-tags.php.
  • A migration file will be publish to database/migrations/DATE_NOW_create_meta_tags_table.php.
  • A customizable blade template file will be publish to resources/views/vondor/meta-tags/tags.blade.php.
  1. Edit assets:
  • Set available tags inconfig/meta-tags.php - uncomment needed
  • If needed - set own model class for meta-tags inconfig/meta-tags.php
  • Edit migration meta_tags file - set available field tags - uncomment needed
  1. Run migration
php artisan migrate 

Upgrading

When upgrading from v2 to v3, please see the UPGRADING.md

Integrate & usage

Usage in Eloquent models: app/Models/Article.php

Add Metatagable trait in your entity model:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Fomvasss\LaravelMetaTags\Traits\Metatagable; class Article extends Model { use Metatagable; //... }
app/Http/Controllers/ArticleController.php: 

Usage facade MetaTag in controllers: app/Http/Controllers/ArticleController.php

<?php namespace App\Http\Controllers; use MetaTag; class ArticleController extends Controller { public function index() { $articles = \App\Model\Article::paginate(); MetaTag::setTags([ 'title' => 'Article index page', 'description' => 'It is article index page', ]); return view('index', compact('articles')); } public function store(Request $request) { // create entity $article = \App\Model\Article::create($request->only([ //.. article data ])); // create meta tag for entity $article->metaTag()->create($request->only([ //.. meta tags fields ])); } public function show($id) { $article = \App\Model\Article::findOrFail($id); // Set tags for showing MetaTag::setEntity($article) ->setDefault([ 'title' => $article->title, // if empty $article->metaTag->title - show this title ])->setTags([ 'seo_text' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 'h1' => $article->title, ]); return view('stow', compact('article')); } public function search(Request $request) { $articles = \App\Model\Article::bySearch($request->q) ->paginate(); // Set tags for showing MetaTag::setPath() // if argument `setPath()` is empty (or not set) - path = `request()->path()` ->setDefault([ 'title' => 'Search page', 'robots' => 'noindex', 'og_title' => 'Search page OG', 'twitter_title' => 'Search page Twitter', 'canonical' => 'page/search', ]); return view('index', compact('articles')); } }

For the package to work correctly, you must save to the database, in the path field, only the url-path itself, without a domain and trim slash'es (/)

Example:

  • https://site.com/some/pages/?page=23 => some/pages
  • https://site.com/some/pages => /

Usage facade MetaTag in blade templates: resources/views/layouts/app.blade.php

Simple and efficient:

<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8"> {!! MetaTag::render() !!} </head> <body> @yield('content') </body> </html>

Or output one by one manually:

<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>{!! MetaTag::tag('title') !!}</title> <meta name="description" content="{!! MetaTag::tag('description') !!}"> <meta name="keywords" content="{!! MetaTag::tag('keywords') !!}"> </head> <body> @yield('content') </body> </html>

Another example: resources/views/articles/show.blade.php

@extends('layouts.app') @section('content') <h1>{!! MetaTag::tag('title') !!}</h1> <div>{!! $article->body !!}</div> <div>{{ MetaTag::tag('seo_text') }}</div> @endsection

And you can set meta tags right in the template:

<!doctype html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8"> @php(MetaTag::setEntity($article)) @php(MetaTag::setDefault(['description' => 'My default meta tag'])) {!! MetaTag::render() !!} </head> <body> @yield('content') </body> </html>

Similarly:

{!!  \MetaTag::setEntity($article)  ->setDefault(['description' => 'My default meta tag'])  ->render()  !!}
{!!   \MetaTag::setPath('articles')  ->setDefault(['robots' => 'follow', 'canonical' => 'page/articles'])  ->setDefault(['title' => 'All articles'])  ->setDefault(['og_title' => 'All articles'])  ->setDefault(['og_locale' => 'de'])  ->setDefault(['og_image' => 'files/images/5be3d92e02a55890e4301ed4.jpg', 'og_image_height' => 123])  ->render()  !!}

Links

统计信息

  • 总下载量: 28.11k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 30
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 30
  • Watchers: 2
  • Forks: 8
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固