Beginner's Advice Request
Permalink
New to C5 and would like some input regarding perhaps the best approach to take on building a site given a particular scenario so that I can have some mental guidance in the way of an overview before I just jump in. It seems that it would be good to have some advice from sage developers in the way of a comprehensive way in which you'd tackle this, or even tips and gotchas.
Conceptually here's a quick first stab at a kind of a wireframe overview of the site structure to give you an idea:https://img.skitch.com/20110320-xm48m81jrd9bupqrhhgb2xj966.jpg...
I essentially have to list out a bunch of "items" (they are essentially a report page of each item) for the regular site users based upon searches / listings and for the backend admin, I have to have a custom mechanism for adding and editing them etc.
"Single pages" were suggested seemingly for the backend very briefly in passing by someone in IRC, however nothing else was mentioned.
The bottom line is that the admin portion of the site needs to be very much retained from the old design as they do not want the person editing listings to have to learn anything new in terms of managing the items in the database.
Finally, there is an existing mysql database that I'll need to be importing into this, so that will be something to consider as well once this get's fleshed out more.
Conceptually here's a quick first stab at a kind of a wireframe overview of the site structure to give you an idea:https://img.skitch.com/20110320-xm48m81jrd9bupqrhhgb2xj966.jpg...
I essentially have to list out a bunch of "items" (they are essentially a report page of each item) for the regular site users based upon searches / listings and for the backend admin, I have to have a custom mechanism for adding and editing them etc.
"Single pages" were suggested seemingly for the backend very briefly in passing by someone in IRC, however nothing else was mentioned.
The bottom line is that the admin portion of the site needs to be very much retained from the old design as they do not want the person editing listings to have to learn anything new in terms of managing the items in the database.
Finally, there is an existing mysql database that I'll need to be importing into this, so that will be something to consider as well once this get's fleshed out more.
Well I really appreciate your input Jordan. You've sent me back to my original thoughts and plans and reading through your discussions just confirm my feelings all along in this particular instance.
<sigh> I guess I'm back to my old love of RoR + Hobo (hobocentral.net). I think this combo would perhaps be what you'd consider Kohana, but perhaps even a little niftier.
I certainly wouldn't mind, though, something like kohana tied into c5. It sure would be nice to have that sort of flexibility that is provided with silverstripe, which in my mind seems like what ppl are considering building atop c5.
And that brings me to the question of perhaps maybe whether silverstripe would be a better choice for many of us with some more flexibility than what c5 is offering... Hmm. I've had some very successful projects built atop silverstripe, however I thought perhaps, from what I've seen, c5 has a strong community behind it. Unfortunately both seem equally lacking in training / documentation for beginners (although the SS book is rather good, albeit a version behind).
<sigh> I guess I'm back to my old love of RoR + Hobo (hobocentral.net). I think this combo would perhaps be what you'd consider Kohana, but perhaps even a little niftier.
I certainly wouldn't mind, though, something like kohana tied into c5. It sure would be nice to have that sort of flexibility that is provided with silverstripe, which in my mind seems like what ppl are considering building atop c5.
And that brings me to the question of perhaps maybe whether silverstripe would be a better choice for many of us with some more flexibility than what c5 is offering... Hmm. I've had some very successful projects built atop silverstripe, however I thought perhaps, from what I've seen, c5 has a strong community behind it. Unfortunately both seem equally lacking in training / documentation for beginners (although the SS book is rather good, albeit a version behind).
Hi,
If you're familiar with Rails, that's probably the best option for this project. Why the sigh? (I'm curious what it is about building sites like this in Rails that gives you hesitation -- it's unusual for Rails enthusiasts to be looking for a php solution).
If you do want some kind of php CMS for this, I would agree that Silverstripe is probably the best solution. Its underlying framework is *excellent* for these kinds of things, and very well thought out and well-architected. Unfortunately, as you know it doesn't seem to have much active development or much of a support community these days.
Concrete5's architecture is... better than most (i.e. wordpress, drupal, joomla), but still has its share of accumulation and inconsistencies. I think it's impossible to grow a system like this to a certain size without losing some architectural purity. Look at Silverstripe, for example -- it does provide a very clean system under the hood, but it really lacks a lot of the front-end features that make C5 so great out-of-the-box.
The thing I've come to really appreciate about C5, despite its inconsistencies (which, again, are nowhere near as bad as most of the other php cms's out there), is that it does a great job of letting you isolate and modularize things, so even if something in the core system is not working the way you want it to, it's fairly easy to extend or overwrite things without patching the system (and it's easy to see where you've modified things because you can just throw everything into packages).
All that being said, for a complicated setup like you're talking about, if you're not wanting to go the "everything revolves around pages" route, then yeah C5 is probably not worth the trouble that you'll have to go through to pound it into submission. It's really ideal for informational/marketing/portfolio sites, but not so much for custom applications (especially if you need to bring in legacy schemas and UI's).
-Jordan
If you're familiar with Rails, that's probably the best option for this project. Why the sigh? (I'm curious what it is about building sites like this in Rails that gives you hesitation -- it's unusual for Rails enthusiasts to be looking for a php solution).
If you do want some kind of php CMS for this, I would agree that Silverstripe is probably the best solution. Its underlying framework is *excellent* for these kinds of things, and very well thought out and well-architected. Unfortunately, as you know it doesn't seem to have much active development or much of a support community these days.
Concrete5's architecture is... better than most (i.e. wordpress, drupal, joomla), but still has its share of accumulation and inconsistencies. I think it's impossible to grow a system like this to a certain size without losing some architectural purity. Look at Silverstripe, for example -- it does provide a very clean system under the hood, but it really lacks a lot of the front-end features that make C5 so great out-of-the-box.
The thing I've come to really appreciate about C5, despite its inconsistencies (which, again, are nowhere near as bad as most of the other php cms's out there), is that it does a great job of letting you isolate and modularize things, so even if something in the core system is not working the way you want it to, it's fairly easy to extend or overwrite things without patching the system (and it's easy to see where you've modified things because you can just throw everything into packages).
All that being said, for a complicated setup like you're talking about, if you're not wanting to go the "everything revolves around pages" route, then yeah C5 is probably not worth the trouble that you'll have to go through to pound it into submission. It's really ideal for informational/marketing/portfolio sites, but not so much for custom applications (especially if you need to bring in legacy schemas and UI's).
-Jordan
Yeah, I can understand what you're saying there. My <sigh> was with regards to hoping that someone else may shed further light on things so as to "show me the way" with c5 on this path with something that perhaps would be an end all solution. Documentation and commentary wise I've never seen anything that explained much regarding the underpinnings in terms of what they were fully capable of and your threads have gone a long way at helping me to understand that better. Thanks.
Indeed I do like the 85% of the c5 approach with regards to the UI, I'm starting to really wonder if c5 is the right match for me. To be honest, I like the backend of SS much more than the dashboard of c5 and so the only thing really missing in my opinion from SS is the ability to edit inline / incontext on the user facing pages themselves. This would be rather easily rectified. The market place isn't bad to have, but not critical. But yes, there is a larger community and I think part of it is that SS has a marketing and community relationship problem. They are very focused on using the platform for their own projects, which is good, but they need to spend more time working out in the community and mobilizing efforts to get developer buy in. I think the c5 guys really have done a much better job at this seemingly unimportant task that is indeed the monumental thing for projects like this.
The more I'm I'm wondering if perhaps the Silverstripe 3release won't resolve some of these issues. Their UI looks to have real potential, but I still don't see an in context editing mechanism so far.
But yeah, probably for this project just a quick ror project would be the solution here. I really love DRYML from Hobo as it kicks all other template and design methods in the bootay (such as haml and built in view code). I just sure do wish I'd have found more in the way of depth for model and controller with c5.
Indeed I do like the 85% of the c5 approach with regards to the UI, I'm starting to really wonder if c5 is the right match for me. To be honest, I like the backend of SS much more than the dashboard of c5 and so the only thing really missing in my opinion from SS is the ability to edit inline / incontext on the user facing pages themselves. This would be rather easily rectified. The market place isn't bad to have, but not critical. But yes, there is a larger community and I think part of it is that SS has a marketing and community relationship problem. They are very focused on using the platform for their own projects, which is good, but they need to spend more time working out in the community and mobilizing efforts to get developer buy in. I think the c5 guys really have done a much better job at this seemingly unimportant task that is indeed the monumental thing for projects like this.
The more I'm I'm wondering if perhaps the Silverstripe 3release won't resolve some of these issues. Their UI looks to have real potential, but I still don't see an in context editing mechanism so far.
But yeah, probably for this project just a quick ror project would be the solution here. I really love DRYML from Hobo as it kicks all other template and design methods in the bootay (such as haml and built in view code). I just sure do wish I'd have found more in the way of depth for model and controller with c5.
The grand idea of C5 (to me, anyway), is that everything revolves around pages. So you don't have a database of items and manage those items in the backend, but rather you have a bunch of pages, each page representing an item, and you manage it in the front-end so you can leverage C5's in-context editing interface. Want to add an item? Add a page. Want to delete an item? Delete the page. Want to sort them? Sort the pages in the sitemap. Want to edit the data? Edit the page (you get version history with this as well, as long as you don't delete the page).
So if I didn't have to maintain the legacy stuff, what I would do is create 3 page types -- one for "item", one for "agent", and one for "location". Then I would create custom attributes for those pages for any data that isn't represented visually as content and needs to be queryable (e.g. item #, type, price, etc.). Then for the "Search Listing" page you would need to create a custom form (using a single_page), which could post to the "Result List" page, which could also be a single_page, and would utilize the PageList object to query the appropriate pages based on the submitted form values (looking up pages based on the attributes that were entered when the item page was created).
Obviously taking this approach is going to require a decent amount of learning on your part (how to make page attributes, how to make single_pages, how to use the PageList class) -- but if you're an experienced programmer they're not that difficult. Just takes some digging through the docs and forums, and also looking through the code that comes with the system (i.e. look at any of the dashboard pages or the register or login pages for examples of single_pages, look at the page_list block for how to use the PageList object, and creating custom attributes is really easy -- all done through the front-end).
That being said, if you want to maintain the legacy stuff, you're really talking about building out your own editing and display interface, and hence I don't really see where the benefit to concrete5 would be in that scenario -- you're probably better off using a framework like Kohana or CodeIgniter or Symfony (or Ruby on Rails or Python if you're into that sort of thing).
Hope that helps explain things.
-Jordan
PS - here's a boatload of links to other posts where I've blathered on about this kind of stuff. Might be of more help (maybe):
http://www.concrete5.org/community/forums/customizing_c5/using-a-sp...
http://www.concrete5.org/community/forums/customizing_c5/new-object...
http://www.concrete5.org/community/forums/chat/pageable-lists/...
http://stackoverflow.com/questions/5293068/few-questions-about-conc...
http://stackoverflow.com/questions/4085382/is-in-concrete5-analog-d...