Stylemotion.de Forum » apexx » Konzepte & Codeschnipsel
XML Sitemap generieren - ein versuch
Seiten (4): 1 2 3 4 »  
Autor Beitrag
 
IrealiTY
Kunde (Support beendet)
XML Sitemap generieren - ein versuch
Heylo,

Habe vorhin bissl rum gespielt und versucht mir eine XML Sitemap zu generieren, jedoch scheitere ich irgendwie dran ^^'
Habe das über eine eigene Content Page versucht, habe per PHP den Header zur XML gemacht.
Code:
1
2
3
{DESIGN('blank')}
{PHP}header('content-type: text/xml');{/PHP}
<?xml version="1.0" encoding="{CHARSET}"?>

So das war net schwer ^^' Aber nun fangen die "Probleme" an :/

Die XML Struktur für eine Sitemap ist ja:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>Der URL zu Ihrer Einzelseite 1</loc>
    <lastmod>2007-06-01</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>Der URL zu Ihrer Einzelseite 2</loc>
    <lastmod>2007-05-13</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
</urlset>


Mann müsste also alle Last News, Artikel, Galerie Bilder und Downloads hier rein schreiben so dass sie sich automatisch aktualisieren =/ (Zumal Galerie wohl weniger wichtig ist)

Dafür bräuchte man bei jedem dieser Punkte ein eigenes Template.
News
/templates/default/news/functions/last_xml.html
Code:
1
2
3
4
5
6
7
8
{list NEWS}
  <url>
     <loc>{SERVER_HTTPHOST}{NEWS.LINK}</loc>
<lastmod>{DATE('Y-m-d',NEWS.TIME)}</lastmod>
<changefreq>daily</changefreq>
<priority>0.9</priority>
</url>
{/list}


Artikel
/templates/default/articles/functions/last_xml.html
Code:
1
2
3
4
5
6
7
8
{list ARTICLE}
  <url>
     <loc>{SERVER_HTTPHOST}{ARTICLE.LINK}</loc>
<lastmod>{DATE('Y-m-d',ARTICLE.TIME)}</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
{/list}


Galerie
Hier muss man Differenzieren zwischen Bildern und Galerien, ich habe mich für Galerien entschieden.
/templates/default/gallery/functions/last_xml.html
Code:
1
2
3
4
5
6
7
8
{list GALLERY}
  <url>
     <loc>{SERVER_HTTPHOST}{GALLERY.LINK}</loc>
<lastmod>{DATE('Y-m-d',GALLERY.UPDATETIME)}</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
{/list}


Und für die Bilder
/templates/default/gallery/functions/lastpic_xml.html
Code:
1
2
3
4
5
6
7
8
{list PICTURE}
  <url>
     <loc>{SERVER_HTTPHOST}{PICTURE.LINK}</loc>
<lastmod>{DATE('Y-m-d',PICTURE.GALLERY_TIME)}</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
{/list}


Downloads
/templates/default/downloads/functions/last_xml.html
Code:
1
2
3
4
5
6
7
8
{list DOWNLOAD}
  <url>
     <loc>{SERVER_HTTPHOST}{DOWNLOAD.LINK}</loc>
<lastmod>{DATE('Y-m-d',DOWNLOAD.TIME)}</lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
{/list}


So nun zur Content Page:
/templates/default/content/sitemap.html

Wie oben gesagt muss erstmal der Header geändert werden.
Code:
1
2
3
4
{DESIGN('blank')}
{PHP}header('content-type: text/xml');{/PHP}
<?xml version="1.0" encoding="{CHARSET}"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">


Und nun müssen die einzelnen Templates einfach aufgerufen werden.
Code:
1
2
3
4
5
{LASTNEWS(30,0,0,"last_xml")}
{LASTARTICLES(30,0,0,0,"last_xml")}
{GALLERY_LASTPICS(30,0,0,"lastpics_xml")}
{GALLERY_UPDATED(30,0,"last_xml")}
{LASTDOWNLOADS(30,0,0,"last_xml")}


Und alles mit einem </urlset> beenden.

Aufgerufen wird das ganze dann mit
http://domain.tld/content.php?show=sitemap

So ich weis, das es im Grunde keine Große Aufgabe ist aber wollte mir halt auch ne Sitemap machen und euch daran teilhaben ^^ Am Anfang war dieser Thread eigentlich ein Frage Thread, aber während ich meine Frage formuliert hatte ist mir schon die Lösung eingefallen und wollte halt denen es hilft auch mal dies anbieten.

Habe mal die Templates im Anhang ^^

Achya, mann kann natürlich eine Statische XML machen wo nur die Links zum Feed bzw zum News (etc) Archiv vorhanden ist, aber soweit ich weis muss eine Sitemap eine Hilfestellung für die Suchmaschinen sein und besser dirket verweisen. Kann sein das ich mich irre und das ganze hier für die Katz ist. :D
Viel Spaß, Diskussionsbereitschaft ist vorhanden :P
IrealiTY ist offline  
 
IrealiTY
Kunde (Support beendet)
Kleine Berichtigung!
Code:
1{GALLERY_LASTPICS(30,0,0,"lastpics_xml")}

Bitte nicht verwenden, da kommen noch Fehler bei den Bildern.
(Ist auch iwi unnütz diese mit zu nutzen in der Sitemap)

Im Anhang ist die aktualisierte Fassung

Edit: War noch ein Fehler drin.

BITTE DIE VERSION LADEN!!!
Anhänge
IrealiTY ist offline  
 
BamBam
Kunde (Support beendet)
Ja Hammer das Teil funzt auf annhieb. Und Goggle meckert auch nicht bei dem einreichen der Sitemap klasse echt.
BamBam ist offline  
 
pjfry
Kunde (Support beendet)
Ja ich bin auch mehr als begeistert, so nach den ersten Tests scheint alles bestens zu laufen!

Vielen vielen Dank!

Grüße

Benny
pjfry ist offline  
 
Freestate
Kunde (Support beendet)
Vielen Dank.
Es funktioniert perfekt. Versuche mich gerade daran das ganze noch mit dem Kalender ans laufen zu bekommen ;)
Freestate ist offline  
 
IrealiTY
Kunde (Support beendet)
Was wilste den ausgeben?
IrealiTY ist offline  
 
HerzZorro
Kunde (Support beendet)
@IrealiTY

Kannst du mir mal deine url geben, das ich mir das vorher live ansehen kann?
HerzZorro ist offline  
 
IrealiTY
Kunde (Support beendet)
http://battlefield-basis.de/content.php?show=sitemap
http://site.4dreamers.net/content.php?show=sitemap
IrealiTY ist offline  
 
Freestate
Kunde (Support beendet)
Zitat von IrealiTY:
Was wilste den ausgeben?


Die XX neu eingetragenen Termine .... wobei sich das auch wieder erledigt hat, denn die sind ja schneller wieder veraltet als in google vernünftigt gelistet ;)
Freestate ist offline  
 
Freestate
Kunde (Support beendet)
Hmmm habe mir nun die Produkte dazugebaut ... habe eigentlich auch nur ein Problem

Code:
1<lastmod>{DATE('Y-m-d',PRODUCT.TIME)}</lastmod>
ergibt <lastmod>1970-01-01</lastmod> da es Produt.Time nicht zu geben scheint ... weis da einer abhilfe?
Freestate ist offline  
Seiten (4): 1 2 3 4 »  
 
Suche Optionen
» Erweiterte Suche
Druckansicht Druckansicht