XML Sitemap

SMP

Well-Known Member
This is basically improved version of this one

Changes:

1) Includes all public images
2) Added "caption" element
3) Excluded images of private profiles
4) Added albums sitemap (only public ones which are not password protected or from private profiles)
5) Added users sitemap (only public profiles)

Info:

This generates a sitemap-index.xml in root and images1.xml, images2.xml, etc... , albums1.xml, etc... , users1.xml, etc... in "xml-sitemaps" folder

Optional edits:

Line 4 to change sitemaps folder to something other then "xml-sitemaps"
Line 5 to change maximum number of urls to be included in each sitemap

Files

Route (upload/add to app/routes/route.xml-sitemap.php)

PHP:
<?php
$route = function($handler) {
try {
  $sitemapsFolder = "xml-sitemaps/"; //Child sitemaps folder(Optional change)
  $max_url_limit = 10000; // 50k is maximum  https://support.google.com/webmasters/answer/183668?hl=en

  //DO NOT CHANGE
  //////////////////////////////////////////////////////////
  $absSitemapsFolder = getcwd()."/".$sitemapsFolder;
  $handler::$vars['sitemapsFolder'] = $sitemapsFolder;

  // Basic things
  if( !file_exists($absSitemapsFolder)){
  if(!mkdir($absSitemapsFolder))
  throw new Exception("Can not create ".$sitemapsFolder);

  if(!is_readable($absSitemapsFolder) or !is_writeable($absSitemapsFolder))
  throw new Exception("Can not read/write to ".$sitemapsFolder. ". Check permissions.");
  }
  // lastmod
  $objDateTime  =  new DateTime('NOW');
  $dateTime  = $objDateTime->format(DATE_W3C);

  // Get paths
  $site_upload_image_route = CHV\getSetting('upload_image_path');
  $site_album_route = CHV\getSetting('route_album');
  $site_image_route = CHV\getSetting('route_image');
  $site_user_route = CHV\getSetting('user_routing');

  // To get no of child sitemaps in each one
  /////////////////////////////////////////////////////////////////////////////////////////////////

  // Count no of images and then round off to higher number.
  $count_images = CHV\DB::queryFetchSingle("SELECT COUNT(*) as total FROM " . CHV\DB::getTable('images'). "")['total'];
  if ($count_images > 0) {
  $image_sitemap_count = ceil($count_images/$max_url_limit);
  for ($i=1; $i<= $image_sitemap_count; $i++) {
  $lists[] = array("list_id" => images, "list_name" => "Images ".$i, "list_slug" => "images".$i);
  }
  }

  // Count no of albums and then round off to higher number.
  $count_albums = CHV\DB::queryFetchSingle("SELECT COUNT(*) as total FROM " . CHV\DB::getTable('albums'). " WHERE album_privacy = 'public' AND album_password IS NULL AND NOT album_image_count = 0")['total'];
  if ($count_albums > 0) {
  $album_sitemap_count = ceil($count_albums/$max_url_limit);
  for ($j=1; $j<= $album_sitemap_count; $j++) {
  $lists[] = array("list_id" => albums, "list_name" => "Albums ".$j, "list_slug" => "albums".$j);
  }
  }

  // Count no of users and then round off to higher number.
  $count_users = CHV\DB::queryFetchSingle("SELECT COUNT(*) as total FROM " . CHV\DB::getTable('users'). " WHERE user_is_private = '0'")['total'];
  if ($count_users > 0) {
  $user_sitemap_count = ceil($count_users/$max_url_limit);
  for ($k=1; $k<= $user_sitemap_count; $k++) {
  $lists[] = array("list_id" => users, "list_name" => "Users ".$k, "list_slug" => "users".$k);
  }
  }

  $handler::$vars['lists'] = $lists;
  
  //Strip away the unwanted chars
  function utf8_for_xml($string)
  {
  return preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string);
  }
  

  // Create index sitemap on root dir
  //////////////////////////////////////////////////////////////////////////////////////
  $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" />');


  foreach($lists as $list) {
  $c = $xml->addChild("sitemap");

  $xml_url  = $handler->base_url.$sitemapsFolder.$list["list_slug"].".xml";
  $xml_local  = $sitemapsFolder.$list["list_slug"].".xml";

  $c->addChild("loc", $xml_url);
  $c->addChild("lastmod", $dateTime );


  // Lets create a sitemaps
  /////////////////////////////////////////////////////////////////////////////////
  $xml2 = new SimpleXMLElement('<?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 = CHV\DB::getInstance();

  if($list["list_id"] == "images" and $count_images > 0) {

  for ($l=1; $l<= $image_sitemap_count; $l++) {

  $iurl_offset = $max_url_limit*($l-1);
  if($list["list_slug"] == "images".$l) {
  $q = $DB->query("SELECT image_id, image_title, image_description, DATE_FORMAT(image_date, '%Y') as year, DATE_FORMAT(image_date, '%m') as month, DATE_FORMAT(image_date, '%d') as day, image_storage_mode, image_storage_id, image_date, image_name, image_extension, storage_url FROM " . CHV\DB::getTable('images'). "
  LEFT JOIN " . CHV\DB::getTable('storages'). " on storage_id = image_storage_id
  LEFT JOIN " . CHV\DB::getTable('users'). " on user_id = image_user_id
  WHERE user_is_private = '0' AND image_user_id IS NOT NULL
  UNION
  SELECT image_id, image_title, image_description, DATE_FORMAT(image_date, '%Y') as year, DATE_FORMAT(image_date, '%m') as month, DATE_FORMAT(image_date, '%d') as day, image_storage_mode, image_storage_id, image_date, image_name, image_extension, storage_url FROM " . CHV\DB::getTable('images'). "
  LEFT JOIN " . CHV\DB::getTable('storages'). " on storage_id = image_storage_id
  WHERE image_user_id IS NULL
  ORDER BY image_date DESC LIMIT ".$max_url_limit." OFFSET ".$iurl_offset."");
  }
  }

  }
  
  if($list["list_id"] == "albums" and $count_albums > 0) {

  for ($m=1; $m<= $album_sitemap_count; $m++) {

  $aurl_offset = $max_url_limit*($m-1);
  if($list["list_slug"] == "albums".$m) {  
  $q = $DB->query("SELECT album_id FROM " . CHV\DB::getTable('albums'). " LEFT JOIN " . CHV\DB::getTable('users'). " on user_id = album_user_id WHERE album_privacy = 'public' AND album_password IS NULL AND NOT album_image_count = 0 AND user_is_private = '0' ORDER BY album_id DESC LIMIT ".$max_url_limit." OFFSET ".$aurl_offset."");
  }
  }  

  }
  if($list["list_id"] == "users" and $count_users > 0) {

  for ($n=1; $n<= $user_sitemap_count; $n++) {
  $uurl_offset = $max_url_limit*($n-1);
  if($list["list_slug"] == "users".$n) {  
  $q = $DB->query("SELECT user_username FROM " . CHV\DB::getTable('users'). " WHERE user_is_private = '0' ORDER BY user_id DESC LIMIT ".$max_url_limit." OFFSET ".$uurl_offset."");
  }
  }
  }

  $images = $DB->fetchAll();
  //Inner xml elements
  /////////////////////////////////////////////////////////////
  foreach($images as $image) {

  if($list["list_id"] == "albums" and $count_albums > 0) {

  // Every album gets its own URL
  $cc = $xml2->addChild("url");
  $cc->addChild("loc", $handler->base_url.$site_album_route."/".CHV\encodeID($image["album_id"], "encode") );  

  }
  
  if($list["list_id"] == "users" and $count_users > 0) {

  if ($site_user_route == "1") {
  $user_base_url = $handler->base_url;
  } else {
  $user_base_url = $handler->base_url.'user/';
  }
  
  // Every user gets their own URL
  $cc = $xml2->addChild("url");
  $cc->addChild("loc", $user_base_url.$image["user_username"]);  

  }
  
  if($list["list_id"] == "images" and $count_images > 0) {  

  $folder = "";

  switch ($image["image_storage_mode"]){
  case "datefolder":
  $folder = $image["year"]."/".$image["month"]."/".$image["day"]."/";
  break;

  default:
  $folder = "";
  break;
  }
  
  // Every image gets its own URL
  $cc = $xml2->addChild("url");
  $cc->addChild("loc", $handler->base_url.$site_image_route."/".CHV\encodeID($image["image_id"], "encode") );
  
  if ($image["image_storage_id"] == NULL) {
  $image_base_url = $handler->base_url.$site_upload_image_route.'/';
  } else {
  $image_base_url = $image["storage_url"];
  }  

  $cc_image = $cc->addChild("xmlns:image:image");
  $cc_image->addChild("xmlns:image:loc", $image_base_url.$folder.$image["image_name"].".".$image["image_extension"]);
  $cc_image->addChild("xmlns:image:title", utf8_for_xml($image["image_title"]));
  if (strlen($image["image_description"]) > 3) {
  $cc_image->addChild("xmlns:image:caption", utf8_for_xml($image["image_description"]));
  }
  }

  }

  $dom = new DomDocument();
  $dom->loadXML($xml2->asXML());
  $dom->formatOutput = true;

  file_put_contents( $xml_local, $dom->saveXML(), LOCK_EX);
  }

  $dom = new DomDocument();
  $dom->loadXML($xml->asXML());
  $dom->formatOutput = true;

  if(file_put_contents("sitemap-index.xml", $dom->saveXML(), LOCK_EX) === false){
  die("Could not write sitemap-index.xml");
  }

  $handler::setVar('pre_doctitle', _s('XML Sitemaps'));

} catch(Exception $e) {
  G\exception_to_error($e);
}
};

?>

Template
(upload/add to app/themes/YOUR_THERE_NAME/views/xml-sitemap.php)
Using default one? then (upload/add to app/themes/Peafowl/views/xml-sitemap.php)

PHP:
<?php if(!defined('access') or !access) die('This file cannot be directly accessed.'); ?>
<?php G\Render\include_theme_header(); ?>

<div class="content-width">
  <div class="page-not-found">
  <h1>XML Sitemaps</h1>
  <h4><a href="<?php echo G\get_base_url()."/sitemap-index.xml";?>">Index</a></h4>
  <br />

  <h5>Child Sitemaps</h5>
  <br />

  <div>
  <ul>
  <?php
  $cat = get_lists();
  foreach($cat as $key){
  echo "<li><a href=\"".G\get_base_url()."/".get_sitemapsFolder().$key["list_slug"].".xml"."\">".$key["list_name"]."</a></li>";
  }
  ?>
  </ul>
  </div>
  </div>
</div>

<?php G\Render\include_theme_footer(); ?>

<?php if(isset($_REQUEST["deleted"])) { ?>
<script>PF.fn.growl.call("<?php echo (G\get_route_name() == 'user' ? _s('The user has been deleted') : _s('The content has been deleted.')); ?>"); </script>
<?php } ?>

Add cron job
(The below one runs two times a day at 6th and 18th hr)
Code:
0 6,18 * * *   wget -O /dev/null -o /dev/null http://www.domain.tld/xml-sitemap

(Do not forget to submit (or change) sitemap in webmaster section)

Thats it
 
Last edited:

bee

Well-Known Member
And if you don't (want to) use the Google Webmastertools create an file and name it "runme.php" in your root folder:

PHP:
function myCurl($url) {
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_exec($ch);
  $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  curl_close($ch);
  return $httpCode;
}

$sitemapUrl = "https://www.your-domain.tld/sitemap-index.xml"; // or 'http://' if you don't use SSL

$urlG = "http://www.google.com/webmasters/sitemaps/ping?sitemap=".$sitemapUrl;
$urlB = "http://www.bing.com/webmaster/ping.aspx?siteMap=".$sitemapUrl;
myCurl($urlG);
myCurl($urlB);

and create an cron for this file to execute it once a day.

This will ping your sitemap to Google and Bing.

You must have cURL activated on your server!
 

Che

Network license
Thank U 4 the script!

But now, if you have consent screen enabled - there is a problem with the cron and wget (it doesn't work), remember it ...
Some time i used something like this in my cron (yep, it isn't great option - but it works)

Code:
elinks -auto-submit https://your-domain.tld/xml-sitemap

but now I just disable consent screen, so ...
 

Che

Network license
About 1M pics and 700 users on the site.
32 core (16 real + hyper threading).
Usually I have something about 20 LA (+- 2).

After last chevereto update sitemap script (from this topic) add 10LA (up to 100% load) every start of the cron :(
Couple of days I've tried to understand WTF but rm -f is the command which is the best solution at the moment.
No sitemap = No problem :)

Screen:

Woiqdg6.png


p.s. Sorry 4 my English, it is not my native.
 

sprindesk

Core license
V3 Beta tester
Thank
This is basically improved version of this one

Changes:

1) Includes all public images
2) Added "caption" element
3) Excluded images of private profiles
4) Added albums sitemap (only public ones which are not password protected or from private profiles)
5) Added users sitemap (only public profiles)

Info:

This generates a sitemap-index.xml in root and images1.xml, images2.xml, etc... , albums1.xml, etc... , users1.xml, etc... in "xml-sitemaps" folder

Optional edits:

Line 4 to change sitemaps folder to something other then "xml-sitemaps"
Line 5 to change maximum number of urls to be included in each sitemap

Files

Route (upload/add to app/routes/route.xml-sitemap.php)

PHP:
<?php
$route = function($handler) {
try {
  $sitemapsFolder = "xml-sitemaps/"; //Child sitemaps folder(Optional change)
  $max_url_limit = 10000; // 50k is maximum  https://support.google.com/webmasters/answer/183668?hl=en

  //DO NOT CHANGE
  //////////////////////////////////////////////////////////
  $absSitemapsFolder = getcwd()."/".$sitemapsFolder;
  $handler::$vars['sitemapsFolder'] = $sitemapsFolder;

  // Basic things
  if( !file_exists($absSitemapsFolder)){
  if(!mkdir($absSitemapsFolder))
  throw new Exception("Can not create ".$sitemapsFolder);

  if(!is_readable($absSitemapsFolder) or !is_writeable($absSitemapsFolder))
  throw new Exception("Can not read/write to ".$sitemapsFolder. ". Check permissions.");
  }
  // lastmod
  $objDateTime  =  new DateTime('NOW');
  $dateTime  = $objDateTime->format(DATE_W3C);

  // Get paths
  $site_upload_image_route = CHV\getSetting('upload_image_path');
  $site_album_route = CHV\getSetting('route_album');
  $site_image_route = CHV\getSetting('route_image');
  $site_user_route = CHV\getSetting('user_routing');

  // To get no of child sitemaps in each one
  /////////////////////////////////////////////////////////////////////////////////////////////////

  // Count no of images and then round off to higher number.
  $count_images = CHV\DB::queryFetchSingle("SELECT COUNT(*) as total FROM " . CHV\DB::getTable('images'). "")['total'];
  if ($count_images > 0) {
  $image_sitemap_count = ceil($count_images/$max_url_limit);
  for ($i=1; $i<= $image_sitemap_count; $i++) {
  $lists[] = array("list_id" => images, "list_name" => "Images ".$i, "list_slug" => "images".$i);
  }
  }

  // Count no of albums and then round off to higher number.
  $count_albums = CHV\DB::queryFetchSingle("SELECT COUNT(*) as total FROM " . CHV\DB::getTable('albums'). " WHERE album_privacy = 'public' AND album_password IS NULL AND NOT album_image_count = 0")['total'];
  if ($count_albums > 0) {
  $album_sitemap_count = ceil($count_albums/$max_url_limit);
  for ($j=1; $j<= $album_sitemap_count; $j++) {
  $lists[] = array("list_id" => albums, "list_name" => "Albums ".$j, "list_slug" => "albums".$j);
  }
  }

  // Count no of users and then round off to higher number.
  $count_users = CHV\DB::queryFetchSingle("SELECT COUNT(*) as total FROM " . CHV\DB::getTable('users'). " WHERE user_is_private = '0'")['total'];
  if ($count_users > 0) {
  $user_sitemap_count = ceil($count_users/$max_url_limit);
  for ($k=1; $k<= $user_sitemap_count; $k++) {
  $lists[] = array("list_id" => users, "list_name" => "Users ".$k, "list_slug" => "users".$k);
  }
  }

  $handler::$vars['lists'] = $lists;
 
  //Strip away the unwanted chars
  function utf8_for_xml($string)
  {
  return preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string);
  }
 

  // Create index sitemap on root dir
  //////////////////////////////////////////////////////////////////////////////////////
  $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" />');


  foreach($lists as $list) {
  $c = $xml->addChild("sitemap");

  $xml_url  = $handler->base_url.$sitemapsFolder.$list["list_slug"].".xml";
  $xml_local  = $sitemapsFolder.$list["list_slug"].".xml";

  $c->addChild("loc", $xml_url);
  $c->addChild("lastmod", $dateTime );


  // Lets create a sitemaps
  /////////////////////////////////////////////////////////////////////////////////
  $xml2 = new SimpleXMLElement('<?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 = CHV\DB::getInstance();

  if($list["list_id"] == "images" and $count_images > 0) {

  for ($l=1; $l<= $image_sitemap_count; $l++) {

  $iurl_offset = $max_url_limit*($l-1);
  if($list["list_slug"] == "images".$l) {
  $q = $DB->query("SELECT image_id, image_title, image_description, DATE_FORMAT(image_date, '%Y') as year, DATE_FORMAT(image_date, '%m') as month, DATE_FORMAT(image_date, '%d') as day, image_storage_mode, image_storage_id, image_date, image_name, image_extension, storage_url FROM " . CHV\DB::getTable('images'). "
  LEFT JOIN " . CHV\DB::getTable('storages'). " on storage_id = image_storage_id
  LEFT JOIN " . CHV\DB::getTable('users'). " on user_id = image_user_id
  WHERE user_is_private = '0' AND image_user_id IS NOT NULL
  UNION
  SELECT image_id, image_title, image_description, DATE_FORMAT(image_date, '%Y') as year, DATE_FORMAT(image_date, '%m') as month, DATE_FORMAT(image_date, '%d') as day, image_storage_mode, image_storage_id, image_date, image_name, image_extension, storage_url FROM " . CHV\DB::getTable('images'). "
  LEFT JOIN " . CHV\DB::getTable('storages'). " on storage_id = image_storage_id
  WHERE image_user_id IS NULL
  ORDER BY image_date DESC LIMIT ".$max_url_limit." OFFSET ".$iurl_offset."");
  }
  }

  }
 
  if($list["list_id"] == "albums" and $count_albums > 0) {

  for ($m=1; $m<= $album_sitemap_count; $m++) {

  $aurl_offset = $max_url_limit*($m-1);
  if($list["list_slug"] == "albums".$m) { 
  $q = $DB->query("SELECT album_id FROM " . CHV\DB::getTable('albums'). " LEFT JOIN " . CHV\DB::getTable('users'). " on user_id = album_user_id WHERE album_privacy = 'public' AND album_password IS NULL AND NOT album_image_count = 0 AND user_is_private = '0' ORDER BY album_id DESC LIMIT ".$max_url_limit." OFFSET ".$aurl_offset."");
  }
  } 

  }
  if($list["list_id"] == "users" and $count_users > 0) {

  for ($n=1; $n<= $user_sitemap_count; $n++) {
  $uurl_offset = $max_url_limit*($n-1);
  if($list["list_slug"] == "users".$n) { 
  $q = $DB->query("SELECT user_username FROM " . CHV\DB::getTable('users'). " WHERE user_is_private = '0' ORDER BY user_id DESC LIMIT ".$max_url_limit." OFFSET ".$uurl_offset."");
  }
  }
  }

  $images = $DB->fetchAll();
  //Inner xml elements
  /////////////////////////////////////////////////////////////
  foreach($images as $image) {

  if($list["list_id"] == "albums" and $count_albums > 0) {

  // Every album gets its own URL
  $cc = $xml2->addChild("url");
  $cc->addChild("loc", $handler->base_url.$site_album_route."/".CHV\encodeID($image["album_id"], "encode") ); 

  }
 
  if($list["list_id"] == "users" and $count_users > 0) {

  if ($site_user_route == "1") {
  $user_base_url = $handler->base_url;
  } else {
  $user_base_url = $handler->base_url.'user/';
  }
 
  // Every user gets their own URL
  $cc = $xml2->addChild("url");
  $cc->addChild("loc", $user_base_url.$image["user_username"]); 

  }
 
  if($list["list_id"] == "images" and $count_images > 0) { 

  $folder = "";

  switch ($image["image_storage_mode"]){
  case "datefolder":
  $folder = $image["year"]."/".$image["month"]."/".$image["day"]."/";
  break;

  default:
  $folder = "";
  break;
  }
 
  // Every image gets its own URL
  $cc = $xml2->addChild("url");
  $cc->addChild("loc", $handler->base_url.$site_image_route."/".CHV\encodeID($image["image_id"], "encode") );
 
  if ($image["image_storage_id"] == NULL) {
  $image_base_url = $handler->base_url.$site_upload_image_route.'/';
  } else {
  $image_base_url = $image["storage_url"];
  } 

  $cc_image = $cc->addChild("xmlns:image:image");
  $cc_image->addChild("xmlns:image:loc", $image_base_url.$folder.$image["image_name"].".".$image["image_extension"]);
  $cc_image->addChild("xmlns:image:title", utf8_for_xml($image["image_title"]));
  if (strlen($image["image_description"]) > 3) {
  $cc_image->addChild("xmlns:image:caption", utf8_for_xml($image["image_description"]));
  }
  }

  }

  $dom = new DomDocument();
  $dom->loadXML($xml2->asXML());
  $dom->formatOutput = true;

  file_put_contents( $xml_local, $dom->saveXML(), LOCK_EX);
  }

  $dom = new DomDocument();
  $dom->loadXML($xml->asXML());
  $dom->formatOutput = true;

  if(file_put_contents("sitemap-index.xml", $dom->saveXML(), LOCK_EX) === false){
  die("Could not write sitemap-index.xml");
  }

  $handler::setVar('pre_doctitle', _s('XML Sitemaps'));

} catch(Exception $e) {
  G\exception_to_error($e);
}
};

?>

Template
(upload/add to app/themes/YOUR_THERE_NAME/views/xml-sitemap.php)
Using default one? then (upload/add to app/themes/Peafowl/views/xml-sitemap.php)

PHP:
<?php if(!defined('access') or !access) die('This file cannot be directly accessed.'); ?>
<?php G\Render\include_theme_header(); ?>

<div class="content-width">
  <div class="page-not-found">
  <h1>XML Sitemaps</h1>
  <h4><a href="<?php echo G\get_base_url()."/sitemap-index.xml";?>">Index</a></h4>
  <br />

  <h5>Child Sitemaps</h5>
  <br />

  <div>
  <ul>
  <?php
  $cat = get_lists();
  foreach($cat as $key){
  echo "<li><a href=\"".G\get_base_url()."/".get_sitemapsFolder().$key["list_slug"].".xml"."\">".$key["list_name"]."</a></li>";
  }
  ?>
  </ul>
  </div>
  </div>
</div>

<?php G\Render\include_theme_footer(); ?>

<?php if(isset($_REQUEST["deleted"])) { ?>
<script>PF.fn.growl.call("<?php echo (G\get_route_name() == 'user' ? _s('The user has been deleted') : _s('The content has been deleted.')); ?>"); </script>
<?php } ?>

Add cron job
(The below one runs two times a day at 6th and 18th hr)
Code:
0 6,18 * * *   wget -O /dev/null -o /dev/null http://www.domain.tld/xml-sitemap

(Do not forget to submit (or change) sitemap in webmaster section)

Thats it
Thanks a lot. Do you have codes for RSS too?
 

mkerala

Network license
V3 Beta tester
Big Chevereto
There seems to be bug in below code. So had to comment out for this to work.

Code:
 if (strlen($image["image_description"]) > 3) {
  $cc_image->addChild("xmlns:image:caption", utf8_for_xml($image["image_description"]));
  }
 

JakeSully

Network license
V3 Beta tester
This script is giving 500 internal server error now on newer chevereto version.

Could some 1 post a fix to make it work on newer versions?
 

loggableim

Core license
V3 Beta tester
This script is giving 500 internal server error now on newer chevereto version.

Could some 1 post a fix to make it work on newer versions?
true, i just realised I too get error 500. Maybe time to implement sitemapping feature as a feature?
 
Top