XML Sitemaps for Pligg

Update: There is be a new version of this module. Click here to get it.

I created a module that generates XML Sitemaps for Pligg ( the well known open source cms used for creating sites similar to digg.com ).

The module generates a sitemap index and sitemaps with all the stories in the database dynamically so nothing is stored on disk and you don't have to set a cron job to generate it.

The sitemaps are updated automatically when a new story is submitted. Because of the structure of the sitemap index and because it contains "lastmod" info, the search engines should only download the latest entries in the index so you shouldn't worry about the module putting too much load on your system.

There is also a "ping" function that will announce google, yahoo and ask.com every time a new story is submitted so that they know they have to download the sitemap. The ping function required a little patching to pligg source code to add some hooks ( only if you use 9.6, 9.7 should already have those hooks ). Here is the diff file in case you use pligg 0.9.6 : pligg submit hooks diff

The module was only tested on pligg 0.9.6, I haven't upgraded to 0.9.7 yet, so if you try this on 0.9.7 let me know how it works, any feedback is appreciated.

Download:

You can download Xml_Sitemaps module from here: xml_sitemaps-0.1.tar.gz and in case you want to verify it here is the md5 sum and the sha256 sum

the code is released under the same license as pligg, so feel free to use it, modify and share.

Installation:

This is pretty straight forward, you have to install this like any other pligg module, just put the .tar.gz file in the modules, un-archive it then go into pligg admin and activate it. If you use pligg 0.9.6 and you want to be able to ping the search engines don't forget to apply the submit hooks patch .

Configuration:

After installation you should be able to access the sitemap index like this : http://yourdomain.com/module.php?module=xml_sitemaps_show_sitemap or if you want the sitemap to look friendly ( btw ask.com will only accept a friendly sitemap ending in .xml ) , you just have to go into Admin->Configuration->XmlSitemaps and enable "Sitemap Friendly URL", and if you do that then you have to put the following lines in your .htaccess somewhere before the line "##### URL Method 2 ("Clean" URLs) Begin #####" :

  1. RewriteRule ^sitemapindex.xml module.php?module=xml_sitemaps_show_sitemap [L]
  2. RewriteRule ^sitemap-([a-zA-Z0-9]+).xml module.php?module=xml_sitemaps_show_sitemap&i=$1 [L]

Here is how the index looks on a site with sitemap friendly urls enabled: http://sapa.ro/sitemapindex.xml

There are other configuration options in there, you can set the maximum number of stories to put in a sitemap, and you can chose whether to ping any of the three search engines supported. You can also set your yahoo.com key in there if you want to ping yahoo.

That's it! Happy Sitemapping! and as always ... let me know how it works in the comments.

98 thoughts on “XML Sitemaps for Pligg

  1. Hi

    I am trying this in 9.7 and am getting the following error:

    Fatal error: Unknown function: clear_cache() in /home/delhirea/public_html/delhirealestate/modules/xml_sitemaps/xml_sitemaps_install.php on line 5

  2. I guess they removed or renamed that function. That was useful only when you enable/re enable the module. So you should be fine without it. Maybe just delete everything in the cache/ folder after you enable the module.

  3. Hey there, great tools, have one question though: I installed and activated the module but when I looked at the sitemap http://www.ebenta.com/module.php?module=xml_sitemaps_show_sitemap&i=0, i found out that the date shown was invalid. I am getting c on it. What is wrong with the installation? Is this by default the settings? How can I correct it to show the right date format (sample: 2005-02-21T18:00:15+00:00)? Any help is appreciated.

    Here is the url of my sitemap: http://www.ebenta.com/module.php?module=xml_sitemaps_show_sitemap

    Thanks.

  4. The problem is the php version that you use. Most likely you have php 4.x.
    The module uses the date function with the “c” format, which was added in php 5 .
    So either switch to php 5 or modify the module, and replace date(“c” with something like date(“Y-m-dTH:i:s” …
    Switching to php 5 is recommended since the php development team will drop support for php 4 soon

  5. Looks great! I ran into a couple of problems:
    1. It looks like it’s already been figured out: PHP5 is required
    2. xml_sitemaps_main.php:Line 88 should change UNIX_TIMESTAMPT to UNIX_TIMESTAMP
    3. xml_sitemaps_install.php:Line 22 should change ^sitemap-([0-9]+).xml to ^sitemap-([a-zA-Z0-9]+).xml
    4. Categories aren’t being escaped to their safe names. I have some categories with ampersands (&) that don’t display when following the sitemap link
    5. The site’s URLMethod configuration is being ignored. I’m using URLMethod 1 (non-clean URLS), but the sitemap generated uses clean URLs

  6. Hi

    I am trying this in 9.7 and am getting the following error:

    Fatal error: Unknown function: clear_cache() in /home/delhirea/public_html/delhirealestate/modules/xml_sitemaps/xml_sitemaps_install.php on line 5

  7. I am getting the following error when I go to my sitemap, is there a way to fix this ?

    Warning
    : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘select link_modified from linka_links where link_status!=’disca in
    /home/nzweblink/linka/libs/db.php
    on line
    207

    http://www.linka.co.nz/module.php?module=xml_sitemaps_show_sitemap&i=0

    1970-01-01T12:00:00+12:00

    http://www.linka.co.nz/sitemap-pages.xml

    1. It may be a problem with your php configuration options. Maybe you have magic_quotes_gpc enabled and the data may get double escaped…
      It would help if you could echo that sql before the error so that we have the whole sql query too look at and debug.

  8. look xml_sitemaps_main.php, at line 17 there should be this:
    $sql = “SELECT count(*) FROM “.table_links.” WHERE link_status!=’discard'”;
    look in the database and see if the link_status field exists…
    try to run this query :
    select link_modified from linka_links where link_status!=’discard’
    in phpmyadmin or the mysql client manually and see what result you get …

    1. when I run the sql query: SELECT link_modified FROM linka_links WHERE link_status != ‘discard’

      The result shows link_modified with a number below eg (20070712192533), running the query returns a normal result with no errors

      The link_status field does exist

  9. Please tell me solution for this error

    Warning
    : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘XmlSitemaps_Links_per_sitemap ) l’ at line 1 in
    /home/tagrin/public_html/libs/db.php
    on line
    233

    1. To what you wrote ok you have not set up the sitemap in the admin section
      Goto
      Pligg beta 9 Home » Admin » Configure Pligg Beta 9
      and if you do this it will remove all of the sql database problems like

      Warning
      : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘XmlSitemaps_Links_per_sitemap ) l’ at line 1 in
      /home/tagrin/public_html/libs/db.php
      on line
      233

      just a head up and im using the new one out Pligg_Beta_9.8.2

      hope this helps,
      Albert F A Matthews
      http://www.wedigg.co.uk

  10. It was reported before that this module has some problems on php 4 and this may be one of your problems. I also haven’t tested this on mysql 4 so that may be the other problem.

  11. I don’t currently have a host running php 4. And you should really upgrade anywany. The php development team announced a few months ago that they will drop support for php 4.

  12. you have to use the htaccess rules I described in this post.
    Also you might want to upgrade to php5 or stay tuned for an update of this plugin that may make this work on php 4 ( the last mod date doesn’t work on php 4 )

  13. Hi mihai..
    I cant install your sitemap module. What i do is: extract .tar file and upload to root modules folder. And i go to admin and Module Management. But the xml_sitemaps not show there. For your information i use pligg 9.8. its rite the step what i do?

    1. this problem may be related with the call to clear_cache function in xml_sitemaps_install.php. Editing that file and removing that call should let you install the module

      1. Many thank Mihai.. Your sitemap great working now. i just delete clear_cache in xml_sitemaps_install.php. Btw after install… did i must/need to add again clear_cache in xml_sitemaps_install.php ?

  14. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘XmlSitemaps_Links_per_sitemap ) l’ at line 1 in

    This error I am getting . Please tell me how can i rectify this . The php version is proper . Is it due to my sql version or what .

    Also as the number of postings are more than 5000 in case multiple files are created do we have to give write permissions in some files or what.

  15. Getting an error:

    Fatal error: Call to undefined function clear_cache() in /home/desitoob/public_html/modules/xml_sitemaps/xml_sitemaps_install.php on line 5

    Using Pigg v9.8

    Let me know. Thanks.

      1. Thank you ever so much Isaac,

        Seems to be a popular problem that onebut i read thru and go to your post and done what you said and bame all done and installed thanks

        great advice and thanks
        Mihai Secasiu PatchLog.com

        Warmest regards
        Albert F A Matthews

  16. Sorry, me again, because I got 2 errors on Google sitemap.

    I have enabled clean sitemap url and given this sitemap address to Google sitemap:
    http://www.MY-WEBSITE.com/sitemapindex.xml

    at http://www.MY-WEBSITE.com/sitemapindex.xml I have

    http://www.MY-WEBSITE.com/sitemap-0.xml
    2007-10-27T13:34:02-07:00

    http://www.MY-WEBSITE.com/sitemap-pages.xml

    The errors on Google sitemap are:

    http://www.MY-WEBSITE.com/sitemap-0.xml
    Nested indexing
    This URL refers to a Sitemap index, not a Sitemap. Please remove it and resubmit.

    http://www.MY-WEBSITE.com/sitemap-pages.xml
    Nested indexing
    This URL refers to a Sitemap index, not a Sitemap. Please remove it and resubmit.

    Please tell me if you see what is the problem.

    Thanks.

  17. Hi
    I get this error:

    Fatal error: Call to undefined function: clear_cache() in /home/content/r/u/b/ruberr2002/html/modules/xml_sitemaps/xml_sitemaps_install.php on line 5

    Please advise

  18. I run 9.6 pligg & get this message:
    Fatal error: Call to undefined function: clear_cache() in /home/content/r/u/b/ruberr2002/html/modules/xml_sitemaps/xml_sitemaps_install.php on line 5

    Please advise. Thanks

  19. Can you us some best practice thoughts on the number of links per sitemap? I have over 100,000 articles, and I want to index them all, is 50,000 a good number?

  20. Ohh, and did I mention how awesome this is? I was working on something similar to this all morning, and then I found your module, and saved me time. Thanks for the awesome mod, and the support!

  21. Hello,

    Everything is ok , xmlsitemap is running on my 9.8.2 pligg website.

    The only problem is that the sitemap I get is empty.

    Can you help?

    BR

  22. Hey BR,

    It looks like in the config you are using friendly URLs. Take off the friendly URLs and see if it works that way, chances are its working great. There are some mods that you need to do to make friendly URL’s work. but it all works perfectly. Its an awesome mod.

  23. Anyone know something about this error?

    Warning: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘select link_modified from pligg_links where link_status!=’disca in /homepages/28/d123456/htdocs/homepages/domain/libs/db.php on line 207

  24. I have got PHP5 installed, but either way this module has this error:

    Fatal error: Call to undefined function clear_cache() in /home/_______/public_html/modules/xml_sitemaps/xml_sitemaps_install.php on line 5

    I am running Pligg’s latest version.

  25. Please tell me whether my sitemap is correct or not.
    i have submitted to google without errors but no page is indexed by google.
    I am using URLMETHOD2 and copied the rewrite URLS to .htaccess.
    Please help me out.

    Thanks in advance

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.