4images Forum & Community
4images Modifications / Modifikationen => Mods & Plugins (Requests & Discussions) => Topic started 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>
-
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>
-
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