4images Forum & Community

4images Modifications / Modifikationen => Mods & Plugins (Requests & Discussions) => Topic started by: Nosferatu on December 09, 2010, 06:45:52 PM

Title: [MOD]Image Sitemap für Google V1.1.0 (2 Varianten)
Post by: Nosferatu 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.xml$ sitemap-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($t, ENT_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($t, ENT_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>
Title: Re: Image Sitemap für Google
Post by: Sunny C. 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($t, ENT_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>
Title: Re: Image Sitemap für Google
Post by: Nosferatu 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