Create sitemap for PHP project

For Search Engin Optimization you need to create site map for your website. Here is a simple class example to do that.

 * Create Site map
 * @category  Model
 * @author    Md. Sirajus Salayhin <>
class xmlSitemap
    public function generateXML()
        $xmlFile = "../sitemap.xml";
        $fh = fopen($xmlFile, 'w') or die("can't open file");
        $sql = "SELECT DISTINCT * ,DATE_FORMAT(date, '%Y-%m-%dT%H:%i:%s+00:00') AS new_date FROM articles
             WHERE articles.status =  0 ORDER BY DESC";
        $res = mysql_query($sql);
        while ($row = mysql_fetch_assoc($res)) {
            $content[] = $row;
        $str = '';
        $str .= '<?xml version="1.0" encoding="UTF-8"?>';
        $str .= '<?xml-stylesheet type="text/xsl" href="sitemap.xsl"?>
<!-- sitemap-generator-url="" sitemap-generator-version="3.2.6" -->
<!-- generated-on="October 13, 2011 05:29" -->';
        $str .= '<urlset xmlns:xsi="" xsi:schemaLocation="" xmlns="">';
        for ($i = 0; $i < count($content); $i++) {
            $str .= '<url>';
            $str .= '<loc>' . $content[$i]['id'] . '</loc>';
            $str .= '<lastmod>' . $content[$i]['new_date'] . '</lastmod>';
            $str .= '<changefreq>daily</changefreq>';
            $str .= '<priority>1.0</priority>';
            $str .= '</url>';
        $str .= '</urlset>';
        fwrite($fh, $str);

Add custom style for your sitemap:

 <?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version="2.0"
    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <html xmlns="">
            <title>XML Sitemap</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            <style type="text/css">
                body {
                    font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana;
                    font-size: 13px;
                #intro {
                    background-color: #CFEBF7;
                    border: 1px #2580B2 solid;
                    padding: 5px 13px 5px 13px;
                    margin: 10px;
                #intro p {
                    line-height: 16.8667px;
                td {
                    font-size: 11px;
                th {
                    text-align: left;
                    padding-right: 30px;
                    font-size: 11px;
                tr.high {
                    background-color: whitesmoke;
                #footer {
                    padding: 2px;
                    margin: 10px;
                    font-size: 8pt;
                    color: gray;
                #footer a {
                    color: gray;
                a {
                    color: black;
        <h1>XML Sitemap</h1>
        <div id="intro">
        <div id="content">
            <table cellpadding="5">
                <tr style="border-bottom:1px black solid;">
                    <th>Change Frequency</th>
                    <th>LastChange (GMT)</th>
                <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
                <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
                <xsl:for-each select="sitemap:urlset/sitemap:url">
                        <xsl:if test="position() mod 2 != 1">
                            <xsl:attribute name="class">high</xsl:attribute>
                            <xsl:variable name="itemURL">
                                <xsl:value-of select="sitemap:loc"/>
                            <a href="{$itemURL}">
                                <xsl:value-of select="sitemap:loc"/>
                            <xsl:value-of select="concat(sitemap:priority*100,'%')"/>
                                select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
                                select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
        <div id="footer">

Happy coding 🙂


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s