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.

 <?php
 
/**
 * Create Site map
 *
 * @category  Model
 * @author    Md. Sirajus Salayhin <salayhin@gmail.com>
 *
 */
 
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 articles.id 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="http://www.yourdomain.com" sitemap-generator-version="3.2.6" -->
<!-- generated-on="October 13, 2011 05:29" -->';
        $str .= '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
 
        for ($i = 0; $i < count($content); $i++) {
 
            $str .= '<url>';
            $str .= '<loc>http://www.yourdomain.com/article.php?id=' . $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);
        fclose($fh);
    }
}

Add custom style for your sitemap:

 <?xml version = "1.0" encoding = "UTF-8"?>
<xsl:stylesheet version="2.0"
                xmlns:html="http://www.w3.org/TR/REC-html40"
                xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <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;
                }
            </style>
        </head>
        <body>
        <h1>XML Sitemap</h1>
 
        <div id="intro">
            <p>
                articleofweek.com
            </p>
        </div>
        <div id="content">
            <table cellpadding="5">
                <tr style="border-bottom:1px black solid;">
                    <th>URL</th>
                    <th>Priority</th>
                    <th>Change Frequency</th>
                    <th>LastChange (GMT)</th>
                </tr>
                <xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
                <xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
                <xsl:for-each select="sitemap:urlset/sitemap:url">
                    <tr>
                        <xsl:if test="position() mod 2 != 1">
                            <xsl:attribute name="class">high</xsl:attribute>
                        </xsl:if>
                        <td>
                            <xsl:variable name="itemURL">
                                <xsl:value-of select="sitemap:loc"/>
                            </xsl:variable>
                            <a href="{$itemURL}">
                                <xsl:value-of select="sitemap:loc"/>
                            </a>
                        </td>
                        <td>
                            <xsl:value-of select="concat(sitemap:priority*100,'%')"/>
                        </td>
                        <td>
                            <xsl:value-of
                                select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
                        </td>
                        <td>
                            <xsl:value-of
                                select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
                        </td>
                    </tr>
                </xsl:for-each>
            </table>
        </div>
        <div id="footer">
 
        </div>
        </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

Happy coding 🙂

Advertisements

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

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

Connecting to %s