Rapid Application Development with Open Source Software

Next: Propagate updates on RSS UP: TOC

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:

/usr/local/www/logikfabrik.com/cakephp/app/Model/Sitemap.php
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);
   $outfile->open('w');

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

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

   $outfile->write('');
   $outfile->close();

}
}

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/logikfabrik.com/cakephp/app/Console/Command/LShell.php

The content of LShell.php is as follow

Sitemap->crtsitemap(); 
        $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/logikfabrik.com/cakephp/app/Console/cake.php \
l createsitemapdesktop -app /usr/local/www/logikfabrik.com/cakephp/app

the shell gives this output:

Welcome to CakePHP v2.6.2 Console
---------------------------------------------------------------
App : app
Path: /usr/local/www/logikfabrik.com/cakephp/app/
---------------------------------------------------------------

Lets check the sitemap.xml file:

cat /usr/local/www/logikfabrik.com/cakephp/app/webroot/sitemap.xml 



http://www.logikfabrik.com/books/1/Rapid Application Development with Open Source Software
monthly
1.0


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

vi /usr/local/www/logikfabrik.com/cakephp/app/webroot/robots.txt

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

# url to the sitemap file:
Sitemap: http://www.logikfabrik.com/sitemap.xml

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

Next: Propagate updates on RSS UP: TOC