承接 samkitano/seo-gen 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

samkitano/seo-gen

Composer 安装命令:

composer require samkitano/seo-gen

包简介

Generate sitemap.xml and robots.txt files in Laravel 4.2 with support for multi-language. Based on Hettiger/SeoAggregator

README 文档

README

Generate robots.txt and multi-language sitemap.xml files in Laravel 4.2.

Based on Hettiger/seo-aggregator

Installation

Require with composer

// composer.json

"require": {
    "php": ">=5.4.0",
    "samkitano/seo-gen": "dev-master",
    // ...
},

Add provider in app\config\app.php

// ...
'Samkitano\SeoGen\SeoGenServiceProvider',

Publish configuration file

php artisan config:publish samkitano/seo-gen

Modify app\config\packages\samkitano\seo-gen\config.php to suit your needs.

Provide the name of the file you are using to translate your routes in 'translated_routes_file'. Do not include extension.

If you don't need to translate your url prefix (you wouldn't be here in that case now, would you?) you should probably use another package, but feel free to open a pull request and make some changes :)

For example purposes we will use the default 'translated_routes_file' => 'routes',

Usage examples with Laravel 4.2

Obviously, you will need to have your translation files ready:

/**
* app\lang\en\routes.php
*/

return array(
	'home'      => 'home',
	'portfolio' => 'portfolio',
	'contacts'  => 'contacts',
	'pages'     => 'pages',
	// ...
);
/**
* app\lang\pt\routes.php
*/

return array(
	'home'      => 'inicio',
	'portfolio' => 'portefolio',
	'contacts'  => 'contactos',
	'pages'     => 'paginas',
	// ...
);
/**
* app\lang\fr\routes.php
*/

return array(
	'home'      => 'accueil',
	'portfolio' => 'portefeuille',
	'contacts'  => 'contacts',
	'pages'     => 'pages',
	// ...
);
/**
* app\lang\de\routes.php
*/

return array(
	'home'      => 'startseite',
	'portfolio' => 'portefeuille',
	'contacts'  => 'kontakte',
	'pages'     => 'seiten',
	// ...
);

SeoGen will take a look at your app configuration file to find out your app's default language and the available languages.

/**
* app\config\app.php
*/

	/*
	|--------------------------------------------------------------------------
	| Application Locale Configuration
	|--------------------------------------------------------------------------
	|
	| The application locale determines the default locale that will be used
	| by the translation service provider. You are free to set this value
	| to any of the locales which will be supported by the application.
	|
	*/

	'locale' => 'en',

	/*
	|--------------------------------------------------------------------------
	| Available Languages
	|--------------------------------------------------------------------------
	|
	| Supported Languages
	|
	*/

	'languages' => array('en', 'pt', 'fr', 'de'),

Now you can use SeoGen wherever you like in your app.

For the sake of this example's simplicity we will do it right in app\routes.php, but you should use a controller instead.

/**
* app/routes.php
*/

use Samkitano\SeoGen\Facades\Sitemap;
use Samkitano\SeoGen\Facades\Robots;

// Language Selection
$languages  = array('en', 'pt', 'fr', 'de');
$locale     = Request::segment(1);

if ( in_array($locale, $languages) )
{
	\App::setLocale($locale);
	Session::put('locale', $locale);
}
else
{
	$locale = null;
}

Route::group( array('prefix' => $locale),
	function()
	{
		Route::get( trans('routes.home'),
			array('as' => 'home', 'uses' => 'ExampleController@home')
		);

		Route::get( trans('routes.portfolio'),
			array('as' => 'portfolio', 'uses' => 'ExampleController@portfolio')
		);

		Route::get( trans('routes.contacts'),
			array('as' => 'contacts', 'uses' => 'ExampleController@contacts')
		);

		Route::get( trans('routes.pages' . '/{slug}'),
			array('as' => 'pages', 'uses' => 'ExampleController@pages')
		);
	}
);

Route::get('sitemap.xml', function()
{
	$date_time = new DateTime('now');

	Sitemap::addLink($date_time, 'home');
	Sitemap::addLink($date_time, 'portfolio');
	Sitemap::addLink($date_time, 'contacts');

	$collection = Pages::all();
	Sitemap::addCollection($collection, 'pages');

	return Response::make( Sitemap::getSitemapXml() )
	               ->header('Content-Type', 'text/xml');
});

Route::get('robots.txt', function()
{
	Robots::disallowPath('/admin');
    return Response::make( Robots::getRobotsDirectives(true) )
    			   ->header('Content-Type', 'text/plain');
});

The above example should return a sitemap with something like

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
	<url>
		<loc>http://example.com/en/home</loc>
		<xhtml:link rel="alternate" hreflang="pt" href="http://example.com/pt/inicio"/>
		<xhtml:link rel="alternate" hreflang="fr" href="http://example.com/fr/accueil"/>
		<xhtml:link rel="alternate" hreflang="de" href="http://example.com/de/startseite"/>
		<lastmod>2015-06-16</lastmod>
	</url>
	<url>
		<loc>http://example.com/en/portfolio</loc>
		<xhtml:link rel="alternate" hreflang="pt" href="http://example.com/pt/portefolio"/>
		<xhtml:link rel="alternate" hreflang="fr" href="http://example.com/fr/portefeuille"/>
		<xhtml:link rel="alternate" hreflang="de" href="http://example.com/de/portefeuille"/>
		<lastmod>2015-06-16</lastmod>
	</url>
	<url>
		<loc>http://example.com/en/contacts</loc>
		<xhtml:link rel="alternate" hreflang="pt" href="http://example.com/pt/contactos"/>
		<xhtml:link rel="alternate" hreflang="fr" href="http://example.com/fr/contacts"/>
		<xhtml:link rel="alternate" hreflang="de" href="http://example.com/de/kontakte"/>
		<lastmod>2015-06-16</lastmod>
	</url>
	<url>
		<loc>http://example.com/en/pages/page-1</loc>
		<xhtml:link rel="alternate" hreflang="pt" href="http://example.com/pt/paginas/page-1"/>
		<xhtml:link rel="alternate" hreflang="fr" href="http://example.com/fr/pages/page-1"/>
		<xhtml:link rel="alternate" hreflang="de" href="http://example.com/de/seiten/page-1"/>
		<lastmod>2015-06-10</lastmod>
	</url>
	<url>
		<loc>http://example.com/en/pages/page-2</loc>
		<xhtml:link rel="alternate" hreflang="pt" href="http://example.com/pt/paginas/page-2"/>
		<xhtml:link rel="alternate" hreflang="fr" href="http://example.com/fr/pages/page-2"/>
		<xhtml:link rel="alternate" hreflang="de" href="http://example.com/de/seiten/page-2"/>
		<lastmod>2015-06-10</lastmod>
	</url>
	<url>
		<loc>http://example.com/en/pages/page-3</loc>
		<xhtml:link rel="alternate" hreflang="pt" href="http://example.com/pt/paginas/page-3"/>
		<xhtml:link rel="alternate" hreflang="fr" href="http://example.com/fr/pages/page-3"/>
		<xhtml:link rel="alternate" hreflang="de" href="http://example.com/de/seiten/page-3"/>
		<lastmod>2015-06-10</lastmod>
	<url>
</urlset>

and robots.txt

User-agent: *
Disallow: /admin

Sitemap: http://example.com/sitemap.xml

Notes

SeoGen does NOT translate slugs for the time being.

License

SEO Aggregator is open-sourced software licensed under the MIT license

SEO GEN is open-sourced software licensed under the MIT license

统计信息

  • 总下载量: 12
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2015-06-15

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固