Next Chapter: CakePHP 2 Model for RSS

Creating a desktop sitemap with CakePHP

2019-05-13 16:25:36.201097+00

In order to propagate our content to search engines we need sitemaps. We will have two different sitemaps: one for desktop browsers and another one for mobile browsers on smartphone. The link for both sitemaps might be different.

Let's start with the model file:

query('SELECT id, name,modified FROM bo_book');
   // generate the path to webroot
   $path = ROOT.DS.'app'.DS.'webroot';

   // create the file and open it for writing
   $outfile = new File($path.DS.'sitemap.xml', false, 0644);

   // write header
   $outfile->write('' . "\n");

   // loop through all books and write it to the file
   foreach($books as $b) {
      $outfile->write('' .$b['0']['id'] . '/' . $b['0']['name'] . ''."\n");



We would like to call the functionality for sitemap creation from the command line. Therefore we need in CakePHP a Shell. Shells are in the subdirectory .../Console/Command/ and must end with "Shell.php".

vi /usr/local/www/

The content of LShell.php is as follow

        $this->out(print_r($sm, true));
        $this->log(print_r($sm, true));

Use this command to run the shell:

/usr/local/bin/php -f /usr/local/www/ \
l createsitemapdesktop -app /usr/local/www/

the shell gives this output:

<pre> Welcome to CakePHP v2.6.2 Console --------------------------------------------------------------- App : app Path: /usr/local/www/ --------------------------------------------------------------- </pre>

Lets check the sitemap.xml file:

cat /usr/local/www/ 
<pre> <?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="" xmlns:xhtml=""> <url> <loc> Application Development with Open Source Software</loc> <changefreq>monthly</changefreq> <priority>1.0</priority> </url> </urlset> </pre>

To finish we need to talk to the search robots. We tell them the name of the sitemap file

vi /usr/local/www/

#ganze Website freigeben
User-agent: *
Disallow: /admin/

# url to the sitemap file:

Lastly we need to check if our sitemap is a valid xml file. Therefore we will use free online services such as

Tag: cakephp2

Previous Chapter: Building Controller Actions for Comments

Next Chapter: CakePHP 2 Model for RSS