Jesse,
Are you wanting to access static pages without seeing the word "pages"
in the URL?
You could edit app/config/routes.php to have lines like this in it:

Router::connect('/about', array('controller' => 'pages', 'action' =>
'display', 'about'));
Router::connect('/join', array('controller' => 'pages', 'action' =>
'display', 'join'));

Then if someone accesses your site with http://yoursite/about they see
the page at app/views/pages/about.php
An access using http://yoursite/join would display the join page at
app/views/pages/join.php

Are you using mod_rewrite in Apache?  Or am I completely missing your
intentions?
- Clark

On Jan 16, 10:19 am, Jesse <jesseainsk...@gmail.com> wrote:
> I know this comes up a lot. I've always fixed this before (1.1) with a
> core hack. I thought that as I moved my sites to 1.2 now I would come
> up with a little better solution.
>
> I'm not sure if this is the best solution but it works for me. I want
> others thoughts and opinions for this solution.
>
> THE BASICS:
> Use a class within the routes config to pull all files from the "view/
> pages" directory. Loop through this to account for directories and
> such. Store these in array (do a little hygiene). Then, loop through
> this array and create a custom route for each page.
>
> It works for me, but I am still thinking there is a better way of
> integrating this into cake. I'll provide the code I'm using on my dev
> box below. Any suggestions are welcome....
>
> /////Component that does all the work....... (should this not be a
> component?)
>
> <?php
>
> class PagesRoutesConfigComponent extends Object {
>     var $default_dir;
>     var $pages;
>     var $dirs;
>     var $deleted_dirs;
>
>     function __construct(){
>         $this->default_dir = '/users/jesseainskeep/sites/inskeep-
> photography/app/views/pages/';
>         $this->pages = array();
>         $this->dirs = array();
>         $this->deleted_dirs = array();
>
>         //run through default directory
>         $this->getPagesFromDir($this->default_dir);
>
>         //funny way or writing this... this populates the pages array
> and jumps through each directory it sees
>         $exit = true;
>         while ($exit){
>             //run through array...
>             foreach ($this->dirs as $key=>$value){
>                 $value = $value . "/";
>                 $this->getPagesFromDir($value);
>                 $this->deleted_dirs[] = $value;
>                 unset($this->dirs[$key]);
>             }
>
>             if (empty($this->dirs)){
>                 $exit = false;
>             }
>         }
>
>         //kill the full path attached to each "page"
>         foreach ($this->pages as $key=>$value){
>             $this->pages[$key] = str_replace($this->default_dir, '',
> $value);
>         }
>
>     }
>
>     function getPagesFromDir($sentDir){
>         $search = array('.ctp', '.thtml');
>         $replace = '';
>         if (is_dir($sentDir)) {
>         if ($dh = opendir($sentDir)) {
>             while (($file = readdir($dh)) !== false) {
>                 if (is_file($sentDir . $file)){
>                     $file = str_replace($search, $replace, $file);
>                     $this->pages[] = $sentDir . $file;
>                 }elseif(is_dir($sentDir . $file) && $file != "." &&
> $file != ".." ){
>                     $this->dirs[] = $sentDir . $file;
>                 }
>             }
>             closedir($dh);
>             }else{
>                 echo "Cannot open sent 'dir'!";
>             }
>         }else{
>             echo "Sent 'dir' not available!";
>
>         }
>     }
>
>     function printAll(){
>         echo "<h1>Pages</h1>";
>         print_r($this->pages);
>         echo "<br /><br />";
>
>         echo "<h1>Directories</h1>";
>         print_r($this->dirs);
>         echo "<br /><br />";
>
>         echo "<h1>Deleted Directories</h1>";
>         print_r($this->deleted_dirs);
>         echo "<br /><br />";
>     }
>
> }
>
> ?>
>
> ////Code in routes file...
> //read all files in pages directory and create custom route for each
> one
>     include_once('/users/jesseainskeep/sites/inskeep-photography/app/
> controllers/components/pages_routes_config.php');
>     $worker = new PagesRoutesConfigComponent();
>     foreach ($worker->pages as $page){
>         Router::connect($page, array('controller' => 'pages', 'action'
> => 'display', ltrim($page, '/')));
>
>     }
>
> As I said, this is my first stab and there will for sure need to be
> revisions (dynamically pulling Cake path, auto loading component vs.
> doing include, ect).
>
> This works good on my machine, but I'm sure there are problems.
> Suggestions welcome!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to