Author Topic: [MOD]Image Sitemap für Google V1.1.0 (2 Varianten)  (Read 4643 times)

0 Members and 1 Guest are viewing this topic.

Offline Nosferatu

  • Full Member
  • ***
  • Posts: 230
    • View Profile
    • Project-Firepower
[MOD]Image Sitemap für Google V1.1.0 (2 Varianten)
« on: December 09, 2010, 06:45:52 PM »
Hallo,

Ich präsentiere euch nun einen Mod für eine Sitemap für eure Bilder, da Google Sitemap-image unterstützt.

.htaccess

RewriteEngine on
RewriteRule 
^sitemap-image.xmlsitemap-image.php


Variante 1:
Es wird für jedes Bild ein Link zu der Kategorie erzeugt. Sollte man anwenden, wenn man mehr als 1000 Bilder in einer Kategorie hat.


sitemap-image.php


<?php
# Create Google Sitemap for Images Version 1.0 for 4images
# Thanks Sumale.nin for UTF-8 encoding help!
# Created by Nosferatu (webmaster@pj-firepower.com http://www.pj-firepower.com)
# Date: 09/12/2010
# You can send ping to Google with this request: http://www.google.com/webmasters/sitemaps/ping?sitemap=URL_TO_YOUR_SITEMAP
#---------------------------------

$main_template 0;
$nozip 1;
$nocache 1;
define('GET_CACHES', (isset($HTTP_GET_VARS['s'])));
define('ROOT_PATH''./');
include(
ROOT_PATH.'global.php');

function 
xmlSafe($t)
{
  global 
$lang;
  
$c $lang['charset'];
  if (
function_exists("iconv"))
  {
    
$t iconv($c"UTF-8"$t);
    
$c "UTF-8";
  }
  elseif (
function_exists("mb_convert_encoding"))
  {
    
$t =  mb_convert_encoding($t"UTF-8"$c);
    
$c "UTF-8";
  }
  
$r htmlspecialchars($tENT_QUOTES$c);
  return empty(
$r) ? $t $r;
}


header ('Content-Type: application / xml'); 

echo 
'<?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">'
;



 
$db_user "user";
 
$db_pass "password";
 
$db mysql_connect("localhost"$db_user$db_pass);

 
mysql_select_db("database"$db);

$e $_GET['e'];
// 0 = mit dem ersten Eintrag wird gestartet
if(!is_numeric($e)) $e 0;



// mit Limit kann man angeben wieviele Bilder ausgegeben werden, 
// und ab welchen Bild sie ausgegeben werden sollen. 
// Ab 20.000 Einträge sollte man eine zweite Sitemap anlegen, da es bei Google und Co. zu Problemen kommen kann.
// einfach $e = 0 auf 20000 austuschen und bei der Limit die 20000 mit 40000 austauschen.

//picgallerie_image = tabelle ; ihr müsst diese vieleicht umbenennen.

$sql "SELECT image_id,cat_id,image_name,image_date,image_thumb_file FROM  picgallerie_images LIMIT $e, 10000";
$result mysql_query($sql,$db);


if(
mysql_num_rows($result))
{
while(
$row=mysql_fetch_array($result))

{
$iid $row['image_id'];
$cid $row['cat_id'];
$img xmlSafe($row['image_thumb_file']);
$iname xmlSafe($row['image_name']);
$date $row['image_date'];
$date date("Y-m-d",$date)."T".date("H:i:s",$date)."+00:00";

//wenn man die Original Bilder möchte, einfach thumbnails mit media austauschen

echo "
<url>
   <loc>http://www.domain.com/pfad zu euer gallery/details.php?image_id=
$iid</loc>
   <image:image>
     <image:loc>http://www.domain.com/pfad zu euer gallery/data/thumbnails/
$cid/$img</image:loc>
<image:title>
$iname</image:title> 
  </image:image>
 <lastmod>
$date</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>"
;

}
}

?>
</urlset>


Variante 2:

Die Bilder werden zu der passenden Kategorie zusammen gefasst. ACHTUNG! Google unterstützt maximal 1000 Bilder pro Set, fals ihr mehr habt verwendet Variante 1.


<?php
# Create Google Sitemap for Images Version 1.0 for 4images
# Thanks Sumale.nin for UTF-8 encoding help!
# Created by Nosferatu (webmaster@pj-firepower.com http://www.pj-firepower.com)
# Date: 09/12/2010
# You can send ping to Google with this request: http://www.google.com/webmasters/sitemaps/ping?sitemap=URL_TO_YOUR_SITEMAP
#---------------------------------

$main_template 0;
$nozip 1;
$nocache 1;
define('GET_CACHES', (isset($HTTP_GET_VARS['s'])));
define('ROOT_PATH''./');
include(
ROOT_PATH.'global.php');

function 
xmlSafe($t)
{
  global 
$lang;
  
$c $lang['charset'];
  if (
function_exists("iconv"))
  {
    
$t iconv($c"UTF-8"$t);
    
$c "UTF-8";
  }
  elseif (
function_exists("mb_convert_encoding"))
  {
    
$t =  mb_convert_encoding($t"UTF-8"$c);
    
$c "UTF-8";
  }
  
$r htmlspecialchars($tENT_QUOTES$c);
  return empty(
$r) ? $t $r;
}


header ('Content-Type: application / xml'); 

echo 
'<?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">'
;



 
$db_user "user";
 
$db_pass "password";
 
$db mysql_connect("localhost"$db_user$db_pass);

 
mysql_select_db("database"$db);

$e $_GET['e'];
// 0 = fängt vom Anfang an
if(!is_numeric($e)) $e 0;



// mit Limit kann man angeben wieviele Bilder ausgegeben werden, 
// und ab welchen Bild sie ausgegeben werden sollen. 
// Ab 20.000 Einträge sollte man eine zweite Sitemap anlegen, da es bei Google und Co. zu Problemen kommen kann.
// einfach $e = 0 auf 20000 austuschen und bei der Limit die 20000 mit 40000 austauschen.


$sql2 "SELECT image_id,cat_id FROM  picgallerie_images LIMIT $e, 100";
$result2 mysql_query($sql2,$db);

while(
$row2=mysql_fetch_array($result2))
{
$iid2 $row2['image_id'];
$cid2 $row2['cat_id'];

echo 
"
<url>
   <loc>http://www.domain.com/pfad zu euer gallery/details.php?image_id=
$iid</loc>";


$sql "SELECT image_id,cat_id,image_name,image_date,image_thumb_file FROM  picgallerie_images WHERE cat_id='$cid2'";
$result mysql_query($sql,$db);


if(
mysql_num_rows($result))
{
while(
$row=mysql_fetch_array($result))

{
$iid $row['image_id'];
$cid $row['cat_id'];
$img xmlSafe($row['image_thumb_file']);
$iname xmlSafe($row['image_name']);
$date $row['image_date'];
$date date("Y-m-d",$date)."T".date("H:i:s",$date)."+00:00";

//wenn man die Original Bilder möchte, einfach thumbnails mit media austauschen

echo "
   <image:image>
     <image:loc>http://www.domain.com/pfad zu euer gallery/data/thumbnails/
$cid/$img</image:loc>
	
<image:title>
$iname</image:title>
   </image:image>
<lastmod>
$date</lastmod>
"
;
}
}
echo 
"
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>"
;
}

?>
</urlset>
« Last Edit: December 10, 2010, 07:59:04 PM by Nosferatu »

Offline Sunny C.

  • Addicted member
  • ******
  • Posts: 1.806
  • I ♥ 4I
    • View Profile
Re: Image Sitemap für Google
« Reply #1 on: December 09, 2010, 07:29:58 PM »
Versuch mal diesen code zu verwenden
<?php
# Create Google Sitemap for Images Version 1.0 for 4images
# Created by Nosferatu (webmaster@pj-firepower.com http://www.pj-firepower.com)
# Date: 09/12/2010
# You can send ping to Google with this request: http://www.google.com/webmasters/sitemaps/ping?sitemap=URL_TO_YOUR_SITEMAP
#---------------------------------

$main_template 0;
$nozip 1;
$nocache 1;
define('GET_CACHES', (isset($HTTP_GET_VARS['s'])));
define('ROOT_PATH''./');
include(
ROOT_PATH.'global.php');

function 
xmlSafe($t)
{
  global 
$lang;
  
$c $lang['charset'];
  if (
function_exists("iconv"))
  {
    
$t iconv($c"UTF-8"$t);
    
$c "UTF-8";
  }
  elseif (
function_exists("mb_convert_encoding"))
  {
    
$t =  mb_convert_encoding($t"UTF-8"$c);
    
$c "UTF-8";
  }
  
$r htmlspecialchars($tENT_QUOTES$c);
  return empty(
$r) ? $t $r;
}


header ('Content-Type: application / xml'); 

echo 
'<?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">'
;



 
$db_user "******";
 
$db_pass "******";
 
$db mysql_connect("localhost"$db_user$db_pass);

 
mysql_select_db("*******"$db);

$e $_GET['e'];
// 0 = fängt vom Anfang an
if(!is_numeric($e)) $e 5000;



// mit Limit kann man angeben wieviele Bilder ausgegeben werden, 
// und ab welchen Bild sie ausgegeben werden sollen. 
// Ab 20.000 Einträge sollte man eine zweite Sitemap anlegen, da es bei Google und co zu problemen können kann.
// einfach $e = 0 auf 20000 austuschen und bei der Limit die 20000 mit 40000 austauschen.


$sql "SELECT image_id,cat_id,image_name,image_date,image_thumb_file FROM  picgallerie_images LIMIT $e, 10000";
$result mysql_query($sql,$db);


if(
mysql_num_rows($result))
{
while(
$row=mysql_fetch_array($result))

{
$iid $row['image_id'];
$cid $row['cat_id'];
$img $row['image_thumb_file'];
$iname xmlSafe($row['image_name']);
$date $row['image_date'];
$date date("Y-m-d",$date)."T".date("H:i:s",$date)."+00:00";

echo 
"
<url>
   <loc>http://www.pj-firepower.com/picgallerie/details.php?image_id=
$iid</loc>
<lastmod>
$date</lastmod>
   <image:image>
     <image:loc>http://www.pj-firepower.com/picgallerie/data/thumbnails/
$cid/$img</image:loc>
   </image:image>
 <image:title>
$iname</image:title>
<lastmod>
$date</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
</url>"
;

}
}

?>
</urlset>
« Last Edit: December 09, 2010, 08:12:40 PM by Rembrandt »

Offline Nosferatu

  • Full Member
  • ***
  • Posts: 230
    • View Profile
    • Project-Firepower
Re: Image Sitemap für Google
« Reply #2 on: December 09, 2010, 07:34:20 PM »
bringt leider nix...

lösch bitte user passwort und table raus ^^ hab vorhin vergessen zu löschen

Edit: sorry funkt nun hab übersehen, dass bei $img xmlSafe fehlt ^^ bei $iname war es von dir dabei

vielen Dank !!!

mfg
nosferatu