<p>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.</p>

<p>Edit: Any advice on marketing do's and don't's would also be appreciated.</p>

[{'answer_id': 76894, 'author': 'toluju', 'author_id': 12457, 'author_profile': 'https://Stackoverflow.com/users/12457', 'pm_score': 0, 'selected': False, 'text': '<p>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 <a href="http://www.cmsmadesimple.org/" rel="nofollow noreferrer">CMS made simple</a>. 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.</p>\n'}, {'answer_id': 76899, 'author': 'Leigh Caldwell', 'author_id': 3267, 'author_profile': 'https://Stackoverflow.com/users/3267', 'pm_score': 3, 'selected': False, 'text': "<p>In building a few iterations of CMSs, some of the key things turned out to be:</p>\n\n<ul>\n<li>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</li>\n<li>Allowing people to add new pages and easily create a menu/tab structure or cross-link between pages</li>\n<li>Determining how to fit content into a template and/or allowing users to develop the templates themselves</li>\n<li>Figuring out how (and whether) to let people paste content from Microsoft Word - converting magic quotes, emdashes and the weirdish Wordish HTML</li>\n<li>Including a spellchecking feature (though Firefox has something built-in and iespell may do the job for IE)</li>\n</ul>\n\n<p>Some less critical but useful capabilities are:\n  - Ability to dynamically create readable and SEO-friendly URLs (the StackOverflow way is not bad)\n  - Ability to show earlier versions of content after it's modified\n  - Ability to have a sandbox for content to let it be proofread or checked before release\n  - Handling of multiple languages and non-English/non-ASCII characters</p>\n"}, {'answer_id': 76915, 'author': 'ahockley', 'author_id': 8209, 'author_profile': 'https://Stackoverflow.com/users/8209', 'pm_score': 2, 'selected': False, 'text': '<p>If you ask 100 different CMS users about the most important thing about their CMS, you\'ll probably get 80+ different answers.</p>\n\n<p>The biggest roadblock is probably going to be people asking you why you built a new CMS from scratch.\n If you don\'t know the answer to that question, I\'m not sure why you\'re going down this path.</p>\n\n<p>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.</p>\n'}, {'answer_id': 76916, 'author': 'Carl Camera', 'author_id': 12804, 'author_profile': 'https://Stackoverflow.com/users/12804', 'pm_score': 2, 'selected': False, 'text': '<p>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. </p>\n\n<p>but if i were to start over (and i might) here\'s the advice i would give myself:</p>\n\n<ol>\n<li>scrub everything <em>everything</em> <strong>everything</strong> entered from the user</li>\n<li>user administration is a product differentiator.  bonus points for being able to handle someone copy/pasting from WORD.</li>\n<li>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.</li>\n<li>many folks are absolutely fanatic about clean urls.</li>\n</ol>\n'}, {'answer_id': 78554, 'author': 'Gaurav', 'author_id': 13492, 'author_profile': 'https://Stackoverflow.com/users/13492', 'pm_score': 1, 'selected': False, 'text': '<p>From marketing point of view:</p>\n\n<p>1) Make it template<em>able</em>.</p>\n\n<p>2) Make CMS SEF and have SEOed URLs.</p>\n'}, {'answer_id': 81056, 'author': 'Slavo', 'author_id': 1801, 'author_profile': 'https://Stackoverflow.com/users/1801', 'pm_score': 3, 'selected': True, 'text': "<p>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.<br>\n1. Extensible - provide a clean and robust API so that a programmer can do most things through code, instead of using the UI<br>\n2. Easy page creation and editing - use templates, have several URLs for a single page, provide options for URL rewriting<br>\n3. Make it component-based. Allow users to add custom functionality. Make it easy for someone to add his code to do something<br>\n4. Make it SEO-friendly. This includes metadata, again URL rewriting, good sitemap, etc.</p>\n\n<p>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.</p>\n\n<p>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.</p>\n"}, {'answer_id': 3608145, 'author': 'Richard', 'author_id': 435821, 'author_profile': 'https://Stackoverflow.com/users/435821', 'pm_score': -1, 'selected': False, 'text': '<p>Just use Drupal.</p>\n\n<p>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.</p>\n\n<p>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....</p>\n'}, {'answer_id': 6295933, 'author': 'DLo', 'author_id': 749298, 'author_profile': 'https://Stackoverflow.com/users/749298', 'pm_score': 1, 'selected': False, 'text': '<p>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.</p>\n\n<p>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.</p>\n'}]
['https://Stackoverflow.com/questions/76689', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/13281/']