Hi All,

Over the course of last year I rebuilt my employer's website from
scratch using CakePHP. It is a site for a futures trading firm with
lots of interesting tools for sorting and combining data that were
remarkably fun and easy to build with CakePHP. I'm now a total convert
to the cult of Cake.

Fast forward to last December, when I left that job for a job at a
university. I'm now in charge of my school's CMS, which houses about
30 "sites" and was built over the course of 5 or 6 years by a
succession of undergrad work study students. It works OK, but is ugly
and inflexible and kludgy and every day that I have to work with it it
steals another piece of my soul. So I'm going to embark on a rewrite
in CakePHP.

Here is my problem though: I don't want to impact my users' sites,
meaning I want to keep their URLs intact and continue to use the same
underlying database containing sites and pages (where a record in the
"page" table has a URI, a parent id/URI, page content, an optional
controller and template, and lots of other fields. Since the site page
hierarchies can be arbitrarily complex, the URLs can be very long and
don't fit the usual /controller/action/param1/param2 convention that's
easy to work with in CakePHP.

Instead, the URLs would be something like this:
http://www.school.university.edu/program/about/people/faculty

Where the "faculty" page could have some static content at the top --
static in the sense that it lives in a database and can be edited by a
CMS editor -- and then a custom controller that looks in a separate
table for a list of faculty at that program and assigns them to the
template.

So the main issue I'm facing is, how to map that /program/about/people/
faculty URI to the "faculty" page which is a child of the "people"
page which is a child of the "about" page which is a child of the
"program" page. I'm not looking for specific code here, just some
general approaches. The two obvious approaches that I could see are:

1. map everything to a custom pages controller that figures out which
page to display, and then decides if there is a custom controller/
action to call and then calls it
2. in routes.php, figure out the specific page being asked for by
splitting up the URI path and recursively working through the
database, and then if that page has a controller/action pair call it
and if not call the pages_controller; and in app_controller always get
the content for the specific page record. The question here would be
-- how to have routes.php pass the page ID to app_controller?

Assuming I had a model for the Pages table, are there any Model
methods I could use to figure out the page ID given the URL path?
(findAllThreaded() maybe? just now sure how exactly I'd use it here)

Any input would be most appreciated.

Thanks,
Matthew


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to