Construye Sitemaps para páginas, imágenes y archivos multimedia y proporciona una clase para enviarlos a los motores de búsqueda.
La forma recomendada de instalar el componente Sitemap es a través del compositor. Ejecute el siguiente comando para instalarlo:
php composer.phar require nilportugues/sitemap-componentEste componente construye Sitemaps compatibles con los principales motores de búsqueda, Google y Bing, en formatos XML y GZIP.
El componente de mapa del sitio es capaz de construir los siguientes tipos de siteos:
Un mapa del sitio que sirve como un índice que contiene referencias a otros archivos Sitemap.xml. Se puede encontrar más documentación aquí.
Text Content Sitemaps, el tipo de mapa del sitio más común que se encuentra en Internet. Se puede encontrar más documentación aquí.
Mapa del sitio para imágenes. Se puede encontrar más documentación aquí.
Mapa del sitio para videos. Se puede encontrar más documentación aquí.
Alternativa para mapas de video. Se puede encontrar más documentación aquí.
Mapa del sitio para artículos de noticias. Se puede encontrar más documentación aquí.
El componente del mapa del sitio sigue al 100% los estándares, lo que significa que sigue estrictamente las contrallas:
<url> . Este componente también proporciona un método para enviar los Sitemaps generados a los siguientes motores de búsqueda:
<?php
use NilPortugues Sitemap SubmitSitemap ;
// $status = ['google' => true, 'bing' => true]; if everything went OK.
$ status = SubmitSitemap :: send ( ' http://example.com/sitemap-index.xml ' );Para usar un índice de mapa del sitio, primero debe crear archivos de mapa del sitio. Echa un vistazo a 4.3, 4.4 y 4.5.
use NilPortugues Sitemap IndexSitemap ;
use NilPortugues Sitemap Item Index IndexItem ;
use NilPortugues Sitemap SitemapException ;
try {
$ sitemap = new IndexSitemap ( ' path/to/folder ' , ' sitemap.index.xml ' );
$ item = new IndexItem ( ' http://www.example.com/sitemap.content.xml ' );
$ item -> setLastMod ( ' 2005-05-10T17:33:30+08:00 ' ); //Optional
$ sitemap -> add ( $ item );
$ item = new IndexItem ( ' http://www.example.com/sitemap.media.xml ' );
$ item -> setLastMod ( ' 2005-05-10T17:33:30+08:00 ' );
$ sitemap -> add ( $ item );
$ sitemap -> build ();
} catch ( SitemapException $ e ) {
echo $ e -> getMessage ();
}<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< sitemapindex xmlns = " http://www.sitemaps.org/schemas/sitemap/0.9 " >
< sitemap >
< loc >http://www.example.com/sitemap.content.xml</ loc >
< lastmod >2005-05-10T17:33:30+08:00</ lastmod >
</ sitemap >
< sitemap >
< loc >http://www.example.com/sitemap.media.xml</ loc >
< lastmod >2005-05-10T17:33:30+08:00</ lastmod >
</ sitemap >
</ sitemapindex > use NilPortugues Sitemap Sitemap ;
use NilPortugues Sitemap Item Url UrlItem ;
use NilPortugues Sitemap SitemapException ;
try {
$ sitemap = new Sitemap ( ' path/to/folder ' , ' sitemap.index.xml ' );
$ item = new UrlItem ( ' http://www.example.com/ ' );
$ item -> setPriority ( ' 1.0 ' ); //Optional
$ item -> setChangeFreq ( ' daily ' ); //Optional
$ item -> setLastMod ( ' 2014-05-10T17:33:30+08:00 ' ); //Optional
$ sitemap -> add ( $ item );
$ item = new UrlItem ( ' http://www.example.com/blog ' );
$ item -> setPriority ( ' 0.9 ' );
$ item -> setChangeFreq ( ' monthly ' );
$ item -> setLastMod ( ' 2014-05-10T17:33:30+08:00 ' );
$ sitemap -> add ( $ item );
$ item = new UrlItem ( ' http://www.example.com/contact ' );
$ item -> setPriority ( ' 0.8 ' );
$ item -> setChangeFreq ( ' never ' );
$ item -> setLastMod ( ' 2014-05-10T17:33:30+08:00 ' );
$ sitemap -> add ( $ item );
$ sitemap -> build ();
} catch ( SitemapException $ e ) {
echo $ e -> getMessage ();
}<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< urlset xmlns = " http://www.sitemaps.org/schemas/sitemap/0.9 " >
< url >
< loc >http://www.example.com/</ loc >
< lastmod >2014-05-10T17:33:30+08:00</ lastmod >
< changefreq >daily</ changefreq >
< priority >1.0</ priority >
</ url >
< url >
< loc >http://www.example.com/blog</ loc >
< lastmod >2014-05-10T17:33:30+08:00</ lastmod >
< changefreq >monthly</ changefreq >
< priority >0.9</ priority >
</ url >
< url >
< loc >http://www.example.com/contact</ loc >
< lastmod >2014-05-10T17:33:30+08:00</ lastmod >
< changefreq >never</ changefreq >
< priority >0.8</ priority >
</ url >
</ urlset > use NilPortugues Sitemap ImageSitemap ;
use NilPortugues Sitemap Item Image ImageItem ;
use NilPortugues Sitemap SitemapException ;
try {
$ sitemap = new ImageSitemap ( ' path/to/folder ' , ' sitemap.image.xml ' );
$ item = new ImageItem ( ' http://www.example.com/logo.png ' );
$ item -> setTitle ( ' Example.com logo ' ); //Optional
$ sitemap -> add ( $ item , ' http://www.example.com/ ' );
$ item = new ImageItem ( ' http://www.example.com/main.png ' );
$ item -> setTitle ( ' Main image ' ); //Optional
$ sitemap -> add ( $ item , ' http://www.example.com/ ' );
$ sitemap -> build ();
} catch ( SitemapException $ e ) {
echo $ e -> getMessage ();
}<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< urlset xmlns = " http://www.sitemaps.org/schemas/sitemap/0.9 "
xmlns:image= " http://www.google.com/schemas/sitemap-image/1.1 " >
< url >
< loc >http://www.example.com/</ loc >
< image : image >
< image : loc > <![CDATA[ http://www.example.com/logo.png ]]> </ image : loc >
< image : title > <![CDATA[ Example.com logo ]]> </ image : title >
</ image : image >
< image : image >
< image : loc > <![CDATA[ http://www.example.com/main.png ]]> </ image : loc >
< image : title > <![CDATA[ Main image ]]> </ image : title >
</ image : image >
</ url >
</ urlset > use NilPortugues Sitemap VideoSitemap ;
use NilPortugues Sitemap Item Video VideoItem ;
use NilPortugues Sitemap SitemapException ;
try {
$ sitemap = new VideoSitemap ( ' path/to/folder ' , ' sitemap.video.xml ' );
$ item = new VideoItem (
' Grilling steaks for summer ' , //Title
' http://www.example.com/video123.flv ' , //URL
' http://www.example.com/videoplayer.swf?video=123 ' , //Player URL
' yes ' , //Optional
' ap=1 ' // Optional
);
//Optional Values
$ item -> setDescription ( ' Alkis shows you how to get perfectly done steaks everytime ' );
$ item -> setThumbnailLoc ( ' http://www.example.com/thumbs/123.jpg ' );
$ item -> setDuration ( 600 );
$ item -> setExpirationDate ( ' 2009-11-05T19:20:30+08:00 ' );
$ item -> setRating ( 4.2 );
$ item -> setViewCount ( 12345 );
$ item -> setPublicationDate ( ' 2007-11-05T19:20:30+08:00 ' );
$ item -> setFamilyFriendly ( ' yes ' );
$ item -> setRestriction ( ' IE GB US CA ' , ' allow ' );
$ item -> setGalleryLoc ( ' http://cooking.example.com ' , ' Cooking Videos ' );
$ item -> setPrice ( ' 0.99 ' , ' EUR ' , ' rent ' , ' HD ' );
$ item -> setPrice ( ' 0.75 ' , ' EUR ' , ' rent ' , ' SD ' );
$ item -> setCategory ( ' cooking ' );
$ item -> setTag ( array ( ' action ' , ' drama ' , ' entrepreneur ' ));
$ item -> setRequiresSubscription ( ' yes ' );
$ item -> setUploader ( ' GrillyMcGrillerson ' , ' http://www.example.com/users/grillymcgrillerson ' );
$ item -> setPlatform ( ' web mobile tv ' , ' allow ' );
$ item -> setLive ( ' no ' );
$ sitemap -> add ( $ item , ' http://www.example.com/ ' );
$ files = $ sitemap -> build ();
} catch ( SitemapException $ e ) {
echo $ e -> getMessage ();
}<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< urlset xmlns = " http://www.sitemaps.org/schemas/sitemap/0.9 " xmlns : video = " http://www.google.com/schemas/sitemap-video/1.1 " >
< url >
< loc >http://www.example.com/</ loc >
< video : video >
< video : thumbnail_loc > <![CDATA[ http://www.example.com/thumbs/123.jpg ]]> </ video : thumbnail_loc >
< video : title > <![CDATA[ Grilling steaks for summer ]]> </ video : title >
< video : description > <![CDATA[ Alkis shows you how to get perfectly done steaks everytime ]]> </ video : description >
< video : content_loc > <![CDATA[ http://www.example.com/video123.flv ]]> </ video : content_loc >
< video : duration > <![CDATA[ 600 ]]> </ video : duration >
< video : expiration_date > <![CDATA[ 2009-11-05T19:20:30+08:00 ]]> </ video : expiration_date >
< video : publication_date > <![CDATA[ 2007-11-05T19:20:30+08:00 ]]> </ video : publication_date >
< video : restriction relationship = " allow " >IE GB US CA</ video : restriction >
< video : gallery_loc title = " Cooking Videos " >http://cooking.example.com</ video : gallery_loc >
< video : price currency = " EUR " type = " rent " resolution = " HD " >0.99</ video : price >
< video : price currency = " EUR " type = " rent " resolution = " SD " >0.75</ video : price >
< video : tag >action</ video : tag >
< video : tag >drama</ video : tag >
< video : tag >entrepreneur</ video : tag >
< video : requires_subscription > <![CDATA[ yes ]]> </ video : requires_subscription >
< video : uploader >GrillyMcGrillerson</ video : uploader >
< video : platform relationship = " allow " >web mobile tv</ video : platform >
< video : live > <![CDATA[ no ]]> </ video : live >
</ video : video >
</ url >
</ urlset > use NilPortugues Sitemap MediaSitemap ;
use NilPortugues Sitemap Item Media MediaItem ;
use NilPortugues Sitemap SitemapException ;
try {
$ sitemap = new MediaSitemap ( ' path/to/folder ' , ' sitemap.media.xml ' );
$ sitemap -> setTitle ( ' Media RSS de ejemplo ' );
$ sitemap -> setLink ( ' http://www.example.com/ejemplos/mrss/ ' );
$ sitemap -> setDescription ( ' Ejemplo de MRSS ' );
$ item = new MediaItem ( ' http://www.example.com/examples/mrss/example1.html ' );
//Optional
$ item -> setContent ( ' video/x-flv ' , 120 );
$ item -> setPlayer ( ' http://www.example.com/shows/example/video.swf?flash_params ' );
$ item -> setTitle ( ' Barbacoas en verano ' );
$ item -> setDescription ( ' Consigue que los filetes queden perfectamente hechos siempre ' );
$ item -> setThumbnail ( ' http://www.example.com/examples/mrss/example1.png ' , 120 , 160 );
$ sitemap -> add ( $ item );
$ item = new MediaItem ( ' http://www.example.com/examples/mrss/example2.html ' );
$ item -> setContent ( ' video/x-flv ' , 120 );
$ item -> setPlayer ( ' http://www.example.com/shows/example/video.swf?flash_params ' );
$ item -> setTitle ( ' Barbacoas en invierno ' );
$ item -> setDescription ( ' Consigue unos filetes frios ' );
$ item -> setThumbnail ( ' http://www.example.com/examples/mrss/example2.png ' , 120 , 160 );
$ sitemap -> add ( $ item );
$ sitemap -> build ();
} catch ( SitemapException $ e ) {
echo $ e -> getMessage ();
}<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< rss version = " 2.0 " xmlns : media = " http://search.yahoo.com/mrss/ " xmlns : dcterms = " http://purl.org/dc/terms/ " >
< channel >
< title >Media RSS de ejemplo</ title >
< link >http://www.example.com/ejemplos/mrss/</ link >
< description >Ejemplo de MRSS</ description >
< item xmlns : media = " http://search.yahoo.com/mrss/ " xmlns : dcterms = " http://purl.org/dc/terms/ " >
< link >http://www.example.com/examples/mrss/example1.html</ link >
< media : content type = " video/x-flv " duration = " 120 " >
< media : player url = " http://www.example.com/shows/example/video.swf?flash_params " />
< media : title >Barbacoas en verano</ media : title >
< media : description >Consigue que los filetes queden perfectamente hechos siempre</ media : description >
< media : thumbnail url = " http://www.example.com/examples/mrss/example1.png " height = " 120 " width = " 160 " />
</ media : content >
</ item >
< item xmlns : media = " http://search.yahoo.com/mrss/ " xmlns : dcterms = " http://purl.org/dc/terms/ " >
< link >http://www.example.com/examples/mrss/example2.html</ link >
< media : content type = " video/x-flv " duration = " 240 " >
< media : player url = " http://www.example.com/shows/example/video.swf?flash_params " />
< media : title >Barbacoas en invierno</ media : title >
< media : description >Consigue unos filetes frios</ media : description >
< media : thumbnail url = " http://www.example.com/examples/mrss/example2.png " height = " 120 " width = " 160 " />
</ media : content >
</ item >
</ channel >
</ rss > use NilPortugues Sitemap NewsSitemap ;
use NilPortugues Sitemap Item News NewsItem ;
use NilPortugues Sitemap SitemapException ;
try {
$ sitemap = new NewsSitemap ( ' path/to/folder ' , ' sitemap.news.xml ' );
$ item = new NewsItem (
' http://www.example.org/business/article55.html ' , //URL
' Companies A, B in Merger Talks ' , //Title
' 2008-12-23 ' , //Publication Date
' The Example Times ' , //Publication Name
' en ' //locale
);
//Optional Values
$ item -> setAccess ( ' Subscription ' );
$ item -> setKeywords ( ' business, merger, acquisition, A, B ' );
$ item -> setStockTickers ( ' NASDAQ:A, NASDAQ:B ' );
$ item -> setGenres ( ' PressRelease, Blog ' );
$ sitemap -> add ( $ item );
$ sitemap -> build ();
} catch ( SitemapException $ e ) {
echo $ e -> getMessage ();
}<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< urlset xmlns = " http://www.sitemaps.org/schemas/sitemap/0.9 " xmlns : news = " http://www.google.com/schemas/sitemap-news/0.9 " >
< url >
< loc >http://www.example.org/business/article55.html</ loc >
< news : news >
< news : publication >
< news : name >The Example Times</ news : name >
< news : language >en</ news : language >
</ news : publication >
< news : access >Subscription</ news : access >
< news : genres >PressRelease, Blog</ news : genres >
< news : publication_date >2008-12-23</ news : publication_date >
< news : title >Companies A, B in Merger Talks</ news : title >
< news : keywords >business, merger, acquisition, A, B</ news : keywords >
< news : stock_tickers >NASDAQ:A, NASDAQ:B</ news : stock_tickers >
</ news : news >
</ url >
</ urlset >Las pruebas se han realizado utilizando PhPunit y Travis-Ci. Se ha probado que todo el código sea compatible desde PHP 5.4 hasta PHP 5.6 y HHVM de Facebook.
Déjame un correo electrónico o ponte en contacto conmigo usando
-
Nil Portugués Calderó