Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I am aware of full-blown content management systems (CMS) such as SugarCRM and TikiWiki... where content is typically stored in a database... and edited through the same interface as it is published. While I like many of the features, the product is clearly aimed at enterprise-wide use rather than to be public-facing.
What I'd like to establish are potential alternatives that fill the space between full-blown CMS and hand-coded bespoke site. I like the way that I can add modules to my CMS... allowing me to quickly introduce new functionality, and I'd like an analogous feature in a system for public web-content. Modules I know I'd like include moderated comments; web-form-to-email gateway; menus/tabs... in future, perhaps mapping or diaries or RSS integration - etc.
Where my requirements differ from a CMS, I don't need (or want) most content to be editable through the main site... and, somehow, I do want to be able to preview how updates will be presented to the public rather than to make live changes. For these purposes, in contrast to those where a typical CMS would be ideal, presentation is of paramount importance - and trumps any desire to immediately disseminate information.
I realise that this is a very high-level question... (suggestions of additional tags welcome) - I mentioned PHP only as - ideally - I'm looking for an open source solution and a PHP deployment is an easy option.
What are my options?
I don't need (or want) most content to be editable through the main site...
So you don't need (or want) a CMS.
You need to code the thing that you want yourself. You can, however, get help from existing tools. There are lot of API, frameworks, microframeworks... that can help you to do such things.
At first, do you accept to write your code with MVC. If not, the only tool I know is CakePHP.
If yes :
I noticed you wanted :
I like the way that I can add modules to my CMS... allowing me to quickly introduce new functionality, and I'd like an analogous feature in a system for public web-content.
So a framework with an easy "plug-n-play like" architecture would be fun. My experience with Symfony makes me say it is good for you.
for Symfony you have lots of bundles already written. Have a look at KNPBundles and FriendOfSymfony Bundles. FOSUserBundle, KnpBlogBundle are well known
But I also see that :
A framework might well be what I want... Zend is one possibility - though it is lower-level than I had hoped for.
So I can tell you about Silex, a microframework that is based on Symfony core (so it is a high level with no greedy extension) and its bundles architecture.
I also heard about hoa_project (because I follow its creator on twitter) but never used it so I can't tell you more.
The requirements you list are, in fact, those of a CMS. Correct me if I'm wrong, but you want:
Content-oriented modules (article, comment, moderation, web forms etc.)
WYSIWYG preview prior to publish
The ability to create (or re-use) modules
A high degree of control over the presentation layer.
What you don't want is:
"in-page" editing of content
There are many PHP content management systems which meet these requirements; I'm personally familiar with CMS Made Simple which has pretty much all the above. Drupal is a more fully featured (and complex) option which also offers this. Wordpress is a big favourite with those who need to build nice-looking sites in a hurry.
All these CMS solutions are focused at producing public-facing websites, rather than intranet knowledge sharing applications (they're pretty useless at that). Drupal provides workflow which allows you to manage the content publication workflow. The key thing they provide which is non-trivial to build from scratch is a way of providing "WYSIWYG" previews of content.
The major drawback with these options in my view is that they are great for content driven sites, but if you want to integrate functionality into the application, or tinker with the layout, you have to work through the CMS layer which wants to control the user interface; this can become a little tiresome.
This question is the sort that can spark religious wars. Since you aren't asking a coding or programming question, it can't be answered with fact, only with opinion.
In my experience, Symfony has always done well as a framework, following MVC architecture. As with any framework, developing a site using Symfony requires greater commitment and a lot more programming than would be required with a CMS.
I see you want a preview option. While you could do that yourself with Symfony, you might want to take advantage of that functionality within Drupal instead, using its workflow module. Of course, using Drupal's roles, you can make certain pages (or types of page) unavailable for modification.
There are many many ways to implement your requirements. The more research you do, the less likely you'll be to have to backtrack and re-write things.
UPDATE:
The best resources for learning Symfony are found on Symfony.com. Visit the Documentation section. "The Book" is a general resource on All Things Symfony, and I believe it's the most authoritative and complete resource you'll find.** I find it clear and well-written. "The Cookbook" contains examples and strategies for particular types of applications, and is more useful once you're comfortable using Symfony.
** When you're selecting books from Symfony.com, on the right-hand side of the page, you'll see a Select box saying "2.0 version". While 2.0 is the latest "release" of Symfony, you might want to change this to "master version", which will include references to features to be included in the upcoming 2.1 release. Symfony releases tend to be pretty radically different from previous version, so it will be good to develop for what will be "release" by the time you finish your project.
Each of the books can be downloaded as a PDF. All the books from Sensio Labs (creators of Symfony) are licensed under Creative Commons.
As for add-on software, Sensio has released a number of add-ons (called "bundles" in Symfony-speak). These are documented on the same site, but third-party bundles, of which there are many, have documentation generally provided by their authors. You can find a library of open source bundles at http://knpbundles.com/.
As for Drupal, I must admit that I generally implement things in Drupal more than Symfony these days. With command-line management using drush, it's extremely easy to keep up-to-date, and the Drupal software and module maintainers are friendly and easy to find in IRC (on FreeNode). Drupal has a HUGELY extensive collection of online documentation. It can be a bit daunting, actually, but things tend to be pretty well organized. There are a number of books that have been published on Drupal, and may be listed at http://drupal.org/books ... but I haven't ready any, so I can't make specific recommendations.
Without knowing more about your requirements, I can only recommend both Drupal and Symfony. :)
You are almost describing CodeIgniter. See this the video demonstrations and decide if this is what you need. CodeIgniter is not a CMS but rather a framework in which you can easily build a CMS that suits your exact needs.
I would like to add Yii (http://www.yiiframework.com/). A great framework with all sorts of lighten-your-programming features. A preview feature is not on-board, but not hard to add (http://www.yiiframework.com/doc/blog/1.0/en/post.create#implementing-preview-feature).
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
My friend photographer asked me to develop a portfolio web site, and I'm wondering if a content management system (CMS) should be used for this purpose? The website contains a minimum of dynamic stuff, mostly just photo galleries and a "Contacts" page.
I have some experience in development using PHP frameworks (Yii and CI), so it makes me wonder what is the most effortless and effective way to do develop this:
a) use some kind of CMS (will take time and effort to learn and
customize CMS to fit my needs)
b) develop a website from scratch using MVC framework (need to write
more code, but more control over the development flow)
Any tips from people experienced in developing those kind of websites is much appriciated. Thanks.
I think the biggest benefit of using a CMS is that, once you've put the site together for them, you should be able to hand control of the site completely to your friend because a CMS will already have all of the admin interfaces worked out for (in your case) adding pictures and making other small changes to the site.
Even if you are good friends, the last thing that you want is an email every month just to add some more pictures to the site. Rolling your own admin interface is certainly possible, but it will take more time and will most likely not have as many options as most major CMS's will provide.
Save yourself a lot of time and headache. There are some good CMS solutions for photography portfolio and they are pretty easy to learn. And your friend needs only standard, basic functionality (galleries, static pages and contact form), so there's no need to customize the code, only templates.
CMS platforms I would recommend:
Wordpress http://wordpress.org
ZenPhoto http://zenphoto.org
Building a website with a solid CMS has lots of benefits, e.g. saves time, gives you all required tools, those CMSs are well tested, secure and stable (not all but WP and ZP definitely are), they provide SEO tools and SEO-ready code (if you choose or create proper theme/template) etc. And with both of these CMS platforms it's really easy to upgrade without any pain.
c) A mostly static site that only uses server-side code where absolutely required.
If he is a photographer it's not a good way to use any auto-resizers that are built-in in many popular CMS, e.g. And you're right learning these CMS won't give you flexibility for further upgrades of the site (which cannot be avoided). So as a developer I always avoid Joomla and any like it. I don't have sufficient clearness and flexiblity with them, this is voice of my experience.
If you use Yii, I can offer you flexible extension exactly for your skills and situation:
AutoAdmin CMS framework for Yii
With it you can just design a database as you want, program front-end as you want (you're a programmer, aren't you?), and configure your back-end panel very quickly - exactly for your DB structure.
Or of course you may search something like it. Using Yii with extensions gives you a standartized site, which can be easily upgraded in future. Instead of Joomla-like systems which will always be oriented on customers of in-box solutions (with all following negative for skilled developers).
With mvc frameworks you get URLs that reflect your controller and action structure. This is not 100% what you want for search engine optimization. You could write your own URL dispatcher of course, if you know how to do it. Frameworks are best suited for web applications and not websites.
So better use a cms. I heard that contao (formerly Typolight) should have most functions built in and should be easy to learn ( in a day or so )
I dont CMS is necessary here, but if you want to you can try using wordpress and install a built in theme something that suits photography.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I just got done reading this thread...
https://stackoverflow.com/questions/588888/best-cms-for-a-corporate-web-presence
Which was the closest thing I could find on the web. I too am looking to redesign a website for a corporation. I am the marketing director, not a developer.
I have researched this subject in many places. I won't say everywhere. I have read:
http://sunlightlabs.com/blog/2009/content-management-systems-just-dont-work/ and
http://www.webdesignish.com/the-best-web-development-frameworks.html
and dabbled at www.cmsmatrix.org and www.bestwebframeworks.com under the PHP area. I have read at least a few dozen articles from various places, some of them including the providers websites or forums.
I have read nearly as much as I can in the time I gave myself.. so with a little knowledge on all these areas I want to reach out to a community that has more experience.
Background: Manufacturer website, one location, no branches. One marketing/IT guy. Utilizes dreamweaver for all web editing needs. Knows ultra-basic html only for text and image placement and editing. I need to be pointed in the direction of a cost-effective design solution with either a framework or combination thereof, or a CMS that can give me what I need. The best example of what I want the site to look like would be a cross between tripplite dot com and logitech dot com, with some elements from a site like sonicwall dot com. I need an animated menu system but with images, so size customization is necessary. Simple animations for rollovers and click reactions so that users can tell when they have selected something. Page content does not change often, with most edits being to PDF documents. At present, I name all major documents (such as a 2011 catalog) with the same filename, and simply replace the document with the latest version via FTP. Nearly every other page will be a static page with static text and images. I might request polish on all other pages after the development is complete. Our site might end up being somewhere around 50 pages after this redesign.
It has been suggested to me to have the site designed in Wordpress by a pro, but everything I HAD read before reading the first-mentioned thread posted here said that I shouldnt use it because of content and bug issues. I believe that wordpress can provide a robust and feature rich corporate website that isn't just another blog or news site... I have seen a few examples like networksolutions dot com.
Project 1 is a redesign and new look. Project 2-9 goes through a parts library with thumbnails, build-to-quote system similar to a shopping cart but with no payments (and no PCI compliance), an e-page flip type catalog revision, and login portals with per user/entity content such as order history, order documentation/records and open-order production status and shipping information. We want it all. But where to go?
I have so far looked at for a CMS:
Wordpress, Drupal, Radiant CMS, concrete5 (and spoke with Franz a tad), and synType CMS.
To go the framework route with PHP:
yii, codeigniter, akelos, symfony, prado, cakephp and solarphp
The other ones I have heard many developers praising were jquery, dojo and django but im not sure yet if they are utilized in any other solutions that I listed.
Tomorrow I will be going through the definitions and such at bestwebframeworks to better learn about the once I had chosen and pit them against one another.
I would really appreciate any help in evaluating which platform would best suit me based on the information that I have provided above. Feel free to ask any other questions that may help narrow the list.
Thank you all in advance.
Before determining how to proceed, you need to as a few important questions -
Is your company in business to make money?
Do you ever expect potential customers to view your website?
Are you a trained designer with experience in usability and best practices?
Can you write maintainable, scalable, and standards compliant code?
Chances are, you should seriously consider hiring a professional for the job. A business website is often the first point of contact with a potential client and first impressions are hard to fix. If your site looks like your 8th grade nephew designed it with a full plate of mystery meat navigation and cross browser compatibility issues, you are likely going to lose clients before you even get a chance to talk to them.
There are likely a multitude of additional features and functions that your website could perform if you knew about them. A reputable professional would be able to assess the needs of your business and recommend website functionality to match. As they say, you don't know what you don't know.
My recommendation would be to beg and plead for a budget to get a website built by someone who knows what they are doing. A well built website will have tremendous ROI and pay for itself easily.
It looks like your needs are primarily front-end, I would recommend a JavaScript framework, like ExtJS or jQuery, I really like ExtJS. Then you could pair it up with some kind of python, ruby, php CMS back-end. Right now I am developing my website www.coffeedig.com (currently still in development) in ExtJS with a Django back-end. I picked ExtJS cause I have a lot of experience in it. I picked Django even though I had very little experience in python but python seemed like the best language to me. I all depends on your needs and your developers skills/experience though. Locally at my work we have about 3 to 1 ratio of developers to architects. It takes a lot of time to maintain and develop a CMS from scratch. So I would recommended against that. I wish I knew more on how large your development team was but personally I would give them a list and have them try the frameworks out and see what feels right to them. Also documentation and community support are two very important things.
Oh. I can see from your post your are trying hard to find a proper solution for your needs.
Since you will probably not be implementing / deploying the solution yourself, I can assure you that whatever option you choose, it is the developpers putting together the project that will make the difference. You can have competent developpers on your team, but if they have to use a tool they are not familiar with, the result may be deceiving.
The choice you need to make from what I read in your post is if you want to use a framework, where developpers will be implementing from the ground-up, or using a pre-built application ready made for content management (CMS) that can be tailored to your needs.
All the popular languages offer a multitude of frameworks that have all been tried and tested.
PHP has Zend Framework, Drupal, Symfony, and many, many more.
Python has Rails, Zope, Pylon, Django, etc.
All these could be viable choices, the main question is still, do you need an application with specific needs and business processes integrated that would be better suited with a framework to ease develppment, or do you simply need to have an easy way to show your products online and have an easy way to create and organise content? I suggest you not re-invent the wheel, if your needs are just for regular web-publishing, a content management system would reduce your costs.
Look around and search for demos of the solutions your are interested in, test-drive before you make a choice. And be sure to have a competent ressource available for the solution you choose, because in the end it is the developping teams competence with the product that will dictate the success of the result.
By the way, JQuery is a great library but is not what you are looking for, chances are it will be integrated in whatever platform / framework you choose! :)
My 2 cents, good-luck!
Frankly, it sounds to me that you have a mostly static website, with occasional PDF updates.
At the same time it doesn't sound like you have the skills to craft your web site by hand.
You also seem to have some familiarity with Dreamweaver, which a pretty scary powerful piece of software.
If it were me, I'd hire a solid Dreamweaver web designer that simply leverages DW for your site, and basically keep it static. With enough CSS and possibly JS work, the pages will remain static pages, and if you need to do minor updates, you're likely capable enough to do that on your own. Then simply sync up the site from your local copy.
The advantage of this is simplicity. Simplicity for you, simplicity for possibly future contractors, etc. If you're not planning on a lot of "interactive" features that require server side support, then keeping the site as static and simple as practical is a smart move.
Uploading a PDF takes simple training, not a CMS. And Dreamweaver should be more than capable front end to manage much of that for you.
Addenda:
I understand about your future plans, but those later phases are night and day beyond Phase 1. This first phase, this cosmetic and functional redesign, is essentially a marketing and branding phase. The skill set needed to implement it is quite different from Phases 2-9.
You can talk with your front end designer about the later phases, in terms of overall presentation, but the person implementing your front end will likely be quite different from the person implementing the back end.
Once you have finished with the Phase 1, the back end integration will be able to leverage the assets created when developing the later phases. None of this initial work will be "wasted". But you have the benefit of being able to move forward with your current toolset and releasing it early, while Phase 2+ are spec'd, developed, tested, and later deployed.
A CMS toolset, at this point in the process, is really a distraction.
In the end, the choice of toolset is really secondary to the person or team that you select to complete the other phases. It is good to be aware of the tool market, and the choices and their assorted advantages/disadvantages, but in the end what is going to matter most is the user interface that you as de facto maintainer are going to be interacting with day by day, and the ongoing maintenance of this system.
If you were buying a delivery truck, you no doubt would be selecting one based on a combination of how it fits your needs and overall cost of ownership versus shopping around to dealers "You know, I really like Volvos". You'll likely not care so much about how the engine works, or the truck is designed. As long as it starts and turns and stops like it's supposed to, with the costs you expected to pay, you'd likely be happy with it.
If you have a favorite, then fine. Likely whatever you pick isn't going to matter much in the end, assuming it's reasonably mainstream. If you don't have a favorite, then it's not particularly important. And if you don't have a favorite, it's not important at all for Phase 1.
But like a truck, it's more important to have a good mechanic. If you have a mechanic that likes Fords and is well experienced with them, you might want to seriously look at a Ford. Trucks are easy to find. Good mechanics, not so much.
Right now, Phase 1, it's about layout, color, and image. Things mechanics and programmers are notoriously bad at. Get this done now, with the right people, using tools you know since you have to support it short to mid-term.
Then look for some good people you trust to work with on the backend. They can use what you have done in Phase 1, and make it work with whatever tools they'll be using to do what, in the end, is most important to you.
Check out silverstripe, an amazing CMS probably better than most, most people just don't know about it. Amazingly easy to template and super easy to extend. It's also very powerful like unto Drupal. http://www.silverstripe.org/
Update:
Sorry guys didn't mean to make it seem like an ad. And no I am not affiliated with silverstripe I just really like it.
I'm looking to build a online store. However, the first question, past the idea of the store, is the platform. I've previously worked with Java and PHP and am quite comfortable with PHP. So my first considerations were Drupal or maybe CodeIgniter (which I have heard lots of good things about)
On discussions with friends, they suggested Django. But I have no experience with Python or Django.
So my question is, is CI better or Drupal? And further, if not either of them, is Django better in terms of ease of development and extensibility?
Request you to not make this a php vs python battle as I'm looking for advice here. Thanks
Edit: More information about the project:
The Project is intended to create a web-store for certain products which aren't currently sold online. The store will have high-resolution images of the products and other associated details. A few other special features related to the products will be added on in time so they aren't that important.
Another clarification: I understand that Drupal is a CMS and not a framework per so. The only reason I compared it to CI was due to the base platform - php. Perhaps the better comparison would have been Joomla vs Django (but I'm not sure as I do not know enough about either, yet)
Choosing a framework for a project you already know what will be the purpose will only slow your development down. If your project's main goal is to be an online store, then pick your choice among the many projects already implemented for you with payment gateways, shipping options, product management, etc. A framework may offer all that too, but will not be ready-to-use out of the box and you will have to bind everything together yourself. My personal opinion is that frameworks are good candidate when you need an highly customized web application that you will write from scratch, that will not only do e-Commerce but handle other specific business models too.
General purpose CMS such as Drupal, WordPress, etc. are good if you plan to extend your online store to also offer other options (i.g. forums, blogs, multimedia/interactive contents, etc.) If you choose to pick this avenue, I would suggest you download the source code of each CMS you retain and play with it for a while and pick the one you feel the most comfortable with, and which has a good user community. Because there's nothing worst than being stuck with someone else's broken code with no one to help you out.
For e-Commerce solutions, you can find many good projects here. If I may choose one to suggest, a solution that you may consider as it looks simple, it is written in PHP and has good reviews is OpenCart
A good one I have worked with is the Instinct e-Commerce plugin for WordPress. I don't necessarily like WordPress, but that plugin is fairly good and will have you get your online store up and running in no time. The plugin also enable you to code new custom payment gateways fairly easily (just one file to code...)
CI and Django are frameworks that help you build a web application from scratch, if you are willing to do this - go ahead and try it. There should be plenty of modules available that allow you to easily extend the framework.
Drupal however is a CMS, so it comes with multiple plugins already installed and is able to manage your content. You'd still need to develop the "store" functionality - payment, listings, etc. - yourself.
If the CMS fits you perfectly now and in the future then CMS, otherwise framework. The framework will allow you total liberty for the price of time spent on development
Have you read and heard about JOOMLA i think its very poweful CMS in php and has a lot of community support as well, In java LifeRay is a good option.
I'd only use a framework if the requirements can not be engineered into an existing cart CMS.
I'd use a CMS over a shopping cart if the commerce aspect was relatively trivial
I'm surprised you're not considering an off the shelf cart. Open Cart is pretty extensible, and Trading Eye has a nice CMS component.
I would generally advise to stick with a language you know for important projects, although I like Python as a language much more than PHP, and Django is a nice framework.
Drupal is not only a framwork, but also a CMS. You can build an online store with some modules (Ubercart), so I would recommend to try that and see if the stock solution fits to your needs.
I suggest you have a look at Drupal's repository of modules -- in particular those in the e-commerce group here: http://drupal.org/project/modules?filters=tid:104&solrsort=sis_project_release_usage%20desc
There's a ton of them that could really help to speed you along on this project.
If you know PHP and have a good grasp of HTML/CSS/JS, you should do OK in Drupal too.
Choose Django if you want to learn Python/Django and use them in your future projects. Django is cool and you'll have fun learning Python. And you'll be able to make an informed decision for your next project.
However, if you have a budget/timeframe or just want to make this project out of the door without needing to learn a new framework I'd suggest choosing a tool/language you're familiar with.
The Bricksett CMS will build the website for you but you can also modify it using PHP for additional functionality. Modify its CSS for a better look and feel. The layout is also simple yet it has a design distinct from other CMS.
A new addition to open-source CMS
Yahoo has something like a specialized CMS for online stores, called Yahoo Stores. They make it very easy to set up an online store, and provide other logistical services. You may want to take a look at that. Of course, they take a small percentage from your sales.
The debate is that I need a PHP Framework/Drupal with the flexibility to add custom features to a potentially large application (web and with an api).
However, with a framework, like Kohana, I see myself tackling and re-inventing the wheel with the simple stuff like account management and cms stuff. Account management and quick data collection, like fast form creation, are tedious in Kohana but appear incredible simple in Drupal. On the other hand, based on my limited Drupal experience, I doubt building rapid custom "features" and allowing users to create "groups" and to manage their own roles within those groups is something Drupal can easily accomplish.
To simplify, is Drupal capable of true Web Applications; where the application is a service and provides custom results to each user? Can it provide a dashboard-like interface for users to change their settings or preferences? Can it aggregate data from particular users to provide better results/info to others?
If so, please point me to some knowledge :-)
I'll admit right away I'm a big fan of Drupal and I have never used Kohana, so this post will be one-sided.
In the company I work for they use Drupal or Zend Framework for pretty much all projects (Drupal being in the majority). Many ZF-oriented people dislike Drupal as it's structure is so far from the object oriented ZF-stuff, and Drupal is "just an CMS". As I see it Drupal is more of a Framework than "just" a CMS, and the best part being that it is incredibly flexible: everything is possible.
And yes there is indeed a module for everything. To be more specific:
On the other hand, based on my limited Drupal experience, I doubt building rapid custom >"features" and allowing users to create "groups" and to manage their own roles within >those groups is something Drupal can easily accomplish.
I can only guess what you mean with rapid custom features, but imo it's easy to expand Drupal with your own modules. Most features are available as (free, community contributed) modules, and many advanced looking features can be easily created for example with the "views" and "cck"-modules.
http://drupal.org/project/cck
http://drupal.org/project/views
Creating groups:
"organic_groups" ( http://drupal.org/project/og)
"og_user_roles" ( http://drupal.org/project/og_user_roles )
These modules together are what you need to create groups that have group spefic roles (and roles having specific rights). There are probably other ways than using "og_user_roles", but I'm advertising it because I've made a few patches for it a few years ago. The problem is usually a bit too many options.
If you want to extend group specific options you could code your own module, but most likely you don't need to because there already is a module for it. For example, there are at least 120 modules that integrate somehow with the "organic_groups"-module:
http://drupal.org/taxonomy/term/90?page=19
To simplify, is Drupal capable of true Web Applications; where the application is a >service and provides custom results to each user? Can it provide a dashboard-like >interface for users to change their settings or preferences? Can it aggregate data from >particular users to provide better results/info to others?
In short, yes. There are so many ways to achieve something you described. But probably they would involve at least the excellent "views"-module. I think of views as some kind of ultimate abstraction SQL layer and UI for anyone. And there are over 300 modules that somehow integrate with Views... ( http://drupal.org/taxonomy/term/89?page=55 )
This sounds that Drupal is all about the modules.. and I know some of my collegues even dislike it for that, because you never get to code fun stuff because it's already been done. At least you can look at the module code and learn from that. Or laugh at it, there's lots of badly programmed modules around too.
When you get to coding modules, you'll probably need lots of time to get used to the Drupal API, Forms API, Module hooks, the Theme override system, and the endless options from contrib modules. But it's worth the trouble.
I find this site very usefull to find a module for some specific need. The site shows the same module info as Drupal.org, but also user feedback/ratings, to find the best option:
http://drupalmodules.com/
If it's unclear, my answer would be go with Drupal :)
PS: D7 should be out very soon. Some might wait for it instead of starting with D6. During D5 people would wait a long time before upgrading to D6 because of missing modules. I believe for D7 the most important modules will be available for D7 very fast. Some research at the moment (04.12.2010):
About 190 modules promise to have a Drupal 7 version the day D7 is released:
http://drupal.org/project/modules?solrsort=sort_title%20asc&text=d7cx&display=table
About 130 modules are already available for D7 (most are included in the previous link):
http://drupal.org/project/modules?filters=drupal_core:103&solrsort=sort_title%20asc&text=d7cx&display=table
EDIT: As a newbie I'm only allowed to post one link, so, I removed http:// from the drupal.org-links
I worked with both Drupal and Kohana.
In my insight it really depends what you want to do. If you are going to make a web application that needs to grow a lot and should be flexible for it's growth then I recommend using Kohana. Kohana is made to keep your codebase clean and supporting in DRY (Don't Repeat Yourself). While it likely doesn't have as many modules as Drupal it does have some Auth and ACL modules.
If you want to be done fast and you don't mind making your application out of others their modules Drupal will get your work done fast. But keep in mind that when you are going to extend you will most likely run into problems that come from modules you don't know. Also it takes a bit flexibility from you.
Ultimately it's your choice. But I recommend using a MVC framework if you are going to write it from scratch.
There is no impossible thing to accomplish. The question is do you want to work with someone else code and try to figure out how to dig inside and extend so it can fit your needs or you want to go with a light framework like Kohana or maybe CodeIgniter(my personal favorite) and drive your own car, although you might need to "invent" some of the wheels.
Go ahead and research what plugins are there to your framework of choice as there are a lot of frameworks providing very good solutions which can provide you with these wheels.
In my personal opinion the time you will spend studying Drupal will be equivalent to the time needed for you to create your basic CMS functionality, but the nerves you will use dealing with stuff out of your control like the core Drupal code will shift the scales in favor of Framework.
The fun stuff about Drupal is what the community calls jokingly rule #35: there is a module for it. Unless you want to do something really tricky, you will often find that the functionality has already been implemented and you just need to configure it.
I am new to both Drupal (7.12) & Kohana (3.2.0)... My experience thus far is that Kohana's documentation SUCKS (or at least, what I've seen of it). And if their website and/or forum is written in Kohana, it sucks as well (slooooow, with overlapping fields, etc.). Whereas with Drupal, it has been clean and so far, very efficient (as best I can tell thus far).
I guess I'm wondering if the comments thus far were focusing on Drupal 6.x and haven't taken into consideration the more recent innovations in Drupal. Any thoughts/comments? Thanks.
As a newbie web developer, I can tell you that you need to analyze the use cases for your web application very strictly. If you are able to cover at least 75% of the use cases you foresee, that's a good start.
With that done, you need to figure if Drupal/Joomla/CMS(x) will give you all of that and with another potential unknown 5-10% feature creep. If so, you maybe better off getting in with Drupal etc.
Else, I think CodeIgniter or Symfony are great PHP frameworks to jump in with. Both offer solid tutorials, video and otherwise, and a helpful community. Kohana, which I am working on, I think you should get into if you really understand PHP and its flaws and realize that speed will be a critical factor. Those are the two big strengths that KO3 brings to the table and you should really need them to use it.
Hope this helps.
I'm in the process of designing a PHP-based content management system for personal use and eventually to be distributed. I know there are a lot of CMS's already out there, but I really haven't found one that meets my all of my needs and I also would like to have the learning experience. Security is a large focus, as are extensibility and ease of use. For those of you out there who have built your own CMS, what advice can you offer? What features are essential for a core? What are must have add-ons? What did you wish you knew before starting? What's the biggest potential roadblock/problem? Any and all advice is welcome.
Edit: Any advice on marketing do's and don't's would also be appreciated.
In building a few iterations of CMSs, some of the key things turned out to be:
Having a good rich text editor - end-users really don't want to do HTML. Consensus seems to be that FCKEditor is the best - there have been a couple of questions on this here recently
Allowing people to add new pages and easily create a menu/tab structure or cross-link between pages
Determining how to fit content into a template and/or allowing users to develop the templates themselves
Figuring out how (and whether) to let people paste content from Microsoft Word - converting magic quotes, emdashes and the weirdish Wordish HTML
Including a spellchecking feature (though Firefox has something built-in and iespell may do the job for IE)
Some less critical but useful capabilities are:
- Ability to dynamically create readable and SEO-friendly URLs (the StackOverflow way is not bad)
- Ability to show earlier versions of content after it's modified
- Ability to have a sandbox for content to let it be proofread or checked before release
- Handling of multiple languages and non-English/non-ASCII characters
Well, building your own CMS actually implies that it is not an enterprise-level product. What this means is that you will not be able to actually implement all features that make CMS users happy. Not even most features. I want to clarify that by CMS I actually mean a platform for creating web applications or web sites, not a blogging platform or a scaled-down version. From personal experience I can tell you the things I want most in a CMS.
1. Extensible - provide a clean and robust API so that a programmer can do most things through code, instead of using the UI
2. Easy page creation and editing - use templates, have several URLs for a single page, provide options for URL rewriting
3. Make it component-based. Allow users to add custom functionality. Make it easy for someone to add his code to do something
4. Make it SEO-friendly. This includes metadata, again URL rewriting, good sitemap, etc.
Now there are these enterprise features that I also like, but i doubt you'll have the desire to dive into their implementation from the beginning. They include workflow (an approval process for content-creation, customizable), Built-in modules for common functionality (blogs, e-commerce, news), ability to write own modules, permissions for different users, built-in syndication, etc.
After all I speak from a developer's point of view and my opinion might not be mainstream, so you have to decide on your own in the end. Just as ahockley said - you have to know why you need to build your own CMS.
If you ask 100 different CMS users about the most important thing about their CMS, you'll probably get 80+ different answers.
The biggest roadblock is probably going to be people asking you why you built a new CMS from scratch.
If you don't know the answer to that question, I'm not sure why you're going down this path.
One thing to keep in mind is that for an internet CMS, folks are going to want integration points with many of the "usual" services. Leverage existing services such as photo sharing sites, Twitter, OpenID and the like before building your own proprietary solutions.
well i wrote a CMS for personal use and released it to the biggest chorus of chirping crickets ever! no biggie, though. i did learn a lot and i encourage you to move forward. my clients use it and like it and it's holding up fine.
but if i were to start over (and i might) here's the advice i would give myself:
scrub everything everything everything entered from the user
user administration is a product differentiator. bonus points for being able to handle someone copy/pasting from WORD.
extensibility. 90% of the comments i get are from developers who want to use the cms to host "some" of the website pages but not others. or they want to embed their custom scripts into the page among the content. my next cms will be as modular as i possibly can handle.
many folks are absolutely fanatic about clean urls.
From marketing point of view:
1) Make it templateable.
2) Make CMS SEF and have SEOed URLs.
If you need to build custom functionality where your CMS is really a window to the rest of your business layers, then use something like PyroCMS or FuelCMS which are based off of CodeIgniter framework.
Developers usually get lost in the weeds with Drupal and Joomla! / Wordpress quickly become spaghetti code-laced doozies over time. Its how much you have already drank from the Kool-aid punch bowl.
I know this isn't a direct answer to what you're looking for but if you haven't looked at it yet I'd recommend checking out CMS made simple. It has much less bloat than other CMS's and is fast and efficient. It's open source so it may be a good reference point for any questions you will run into.
Just use Drupal.
Out of the box it is very light and fast. You add modules for virtually everything, so that can be daunting but it is fantastic.
Its secure (NASA and The White House use it), its modular, its open-source, it is well supported, has a reputation for clean APIs, and has hundreds of modules from SEO to Wysiwyg....