KevinM1 Posted March 26, 2008 Share Posted March 26, 2008 I decided to cross-post my original message from the design forum to here in the hopes of getting as much input as possible. I hope this is okay. Original message is below. ----------------------------------------------------------- This will be my first attempt at using OOP to make a fully functional, real project. The law firm at which my brother works wants their site redone, and he suggested me. Unfortunately, most of my PHP experience is in the form of writing code that modifies/improves existing systems. I've never created one from scratch before. The firm's site already has a simple CMS. One that allows one of the secretaries to add a new lawyer bio and/or text for other pages, but not the ability to add items to the navigation menu or change any of the existing main graphics. I believe, however, that they can add images to the pages (such as a new laywer's photo). There doesn't appear to be too much in the way of database info. Most of the pages on the current site appear to be static, from what I can see. With the exception of the admin area - which is where the secretary goes to add/modify pages on the site - there's no membership to speak of. I'm thinking, for the public side of the site, to use a Front Controller. Would I need anything else? In particular, are there any other patterns I should think of (Registry, Command, etc)? The admin backend seems a bit more tricky. Obviously, there needs to be a simple login system, but I'm having trouble trying to see how to handle both the creation of new pages, and the editing of existing pages. In particular, how would I handle the text input? Simple textarea field? Embedded TinyMCE editor? Something else? What about a file naming scheme? Should I just use a numeric id (probably the easiest in terms of mapping the files to the database)? Something more user friendly? This is the part that will trip me up the most, so any input here would be greatly appreciated. Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/ Share on other sites More sharing options...
keeB Posted March 26, 2008 Share Posted March 26, 2008 Not using, say, Drupal for what reason? Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-501734 Share on other sites More sharing options...
Cobby Posted March 27, 2008 Share Posted March 27, 2008 If you want to make your own, I recommend learning Zend Framework. It takes a little getting used but its well worth the slog and once you get the basis of your application laid out the actually application is very easy to develop. Go to: http://framework.zend.com. It fully OOP and uses MVC. If you want to use an existing one, I would recommend CMS Made Simple over other CMSs. I have had experience with drupal and it just doesn't seem as friendly. If none of the above options above take your fancy, I would also recommend this read: http://www.phpit.net/article/simple-mvc-php5/ Cheers, Cobby Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-501986 Share on other sites More sharing options...
KevinM1 Posted March 27, 2008 Author Share Posted March 27, 2008 Not using, say, Drupal for what reason? Because I don't know what Drupal is? In any event, I'm trying to roll my own, so to speak. If you want to make your own, I recommend learning Zend Framework. It takes a little getting used but its well worth the slog and once you get the basis of your application laid out the actually application is very easy to develop. Go to: http://framework.zend.com. It fully OOP and uses MVC. If you want to use an existing one, I would recommend CMS Made Simple over other CMSs. I have had experience with drupal and it just doesn't seem as friendly. If none of the above options above take your fancy, I would also recommend this read: http://www.phpit.net/article/simple-mvc-php5/ Cheers, Cobby Thanks for the link to the phpit article. There's one thing, though: like I asked in my first post, how would I handle the creation/editing of new pages? The rest all seems more or less what I expected, especially after doing a quick browse through the Code Igniter framework, but allowing a user to create new content still eludes me, especially when trying to figure out how to handle any images that may be added/removed (number of images allowed and their positioning) and trying to come up with a decent file naming scheme for these user-created pages. Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-502082 Share on other sites More sharing options...
keeB Posted March 27, 2008 Share Posted March 27, 2008 I understand the programmer in you wants to 'roll their own.' It's perfectly natural. In fact, I don't think you'll have a problem making your own and meeting the firms expectations. The problem becomes when their expectations change, bugs are found, security issues found, etc. Basically, what I am saying is, it will take a lot longer to get your own (production ready) CMS up and running than it would to take an existing CMS that is quite extensible, learning the details of writing plug-ins, and filling in the gaps (if any.) I have a lot of experience with drupal (http://www.drupal.org) You should also look in to CMS made simple mentioned by Cobby (http://www.cmsmadesimple.org/) Just my 0.02 Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-502325 Share on other sites More sharing options...
Cobby Posted March 27, 2008 Share Posted March 27, 2008 Thanks for the link to the phpit article. There's one thing, though: like I asked in my first post, how would I handle the creation/editing of new pages? The rest all seems more or less what I expected, especially after doing a quick browse through the Code Igniter framework, but allowing a user to create new content still eludes me, especially when trying to figure out how to handle any images that may be added/removed (number of images allowed and their positioning) and trying to come up with a decent file naming scheme for these user-created pages. Since your so focused on making your own, which is good fun , I highly recommend Zend Framework. Zend Framework is quite easy, but its just there is soo much to learn. I would allow two weeks to learn it thoroughly. With Zend you will find several video tutorials on creating bootstrap, etc (just google) and make sure you look deeply at: Zend_Controller Modular Directory Structure Zend_Loader Zend_Zb Zend_Config / Zend_Log Zend_Auth / Zend_Layout Zend_View / Zend_Layout Zend_Form Integrating Smarty For modular directory structure, see here: http://framework.zend.com/manual/en/zend.controller.modular.html#zend.controller.modular.directories That's the bulk of the essential modules when developing a CMS. More info at http://framework.zend.com/manual/en/ In any case, actual page content should be stored in a database. Create a regex route that routes all requests ending in .html to your content controller. Then your content controller would retrieve the specified page (from the request) from the database, then render it in the content section of your template/layout. Editing would be a similar process, except a different url to route (like /admin/page/:pid) and have a little editor (either TinyMCE or FCKEditor) and when the form is submitted just update the record in the DB. Again, learn Zend Framework, especially if you will be creating other applications down the track. Cobby. Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-502621 Share on other sites More sharing options...
KevinM1 Posted March 27, 2008 Author Share Posted March 27, 2008 Thanks for the replies, both of you. I think the first step should be me trying my hand at some simple homegrown stuff. Trying to get a Registry to work, trying to get a Front Controller to work, that sort of thing. Then, off to a framework once I figure out how things should be put together. Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-502635 Share on other sites More sharing options...
Cobby Posted March 28, 2008 Share Posted March 28, 2008 A registry class isn't too difficult, look into the __set() and __get() magic methods and also have a look at implementing ArrayAccess. Another thing you might want to look is a class that handles global variables, namely the session. Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-502893 Share on other sites More sharing options...
Mastodont Posted March 30, 2008 Share Posted March 30, 2008 I think the first step should be me trying my hand at some simple homegrown stuff. ... once I figure out how things should be put together. At first, think over code flow - see http://codeigniter.com/user_guide/overview/appflow.html or other such diagrams. All begins with HTTP request, with URL - you must choose schema for it. I recommend to start with very small front controller, something as: initial_config(); if ($_POST) { // process form and redirect } else { // analyze URL, determine action and other parameters } Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-504656 Share on other sites More sharing options...
KevinM1 Posted April 1, 2008 Author Share Posted April 1, 2008 Hey, I just wanted to say thanks for linking me to that flow diagram. It's nice seeing the main participants in action. I actually have CodeIgniter 1.6.1, as a sort of study aid, but I hate the way their documentation works. The big thing, now, is to try to copy/steal (mwahaha) their segmented URL scheme. I like that infinitely better than the standard get links. Quote Link to comment https://forums.phpfreaks.com/topic/98023-simple-cmsthe-first-step-takening-cross-posted-from-the-design-subforum/#findComment-506890 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.