First Steps in Creating a Concrete5 Website

Posted by admin on September 29, 2011

Concrete5's standard installation pretty much covers me with all the basic functionality I need to create a website without any major modifications.  This is in contrast to Drupal 6.  I have not used Drupal 7 enough to expand on the changes they have made, but from what I could tell, there were still some "standard" features not available at install.

That doesn't mean there aren't a few things I do to every install to make it ready for build-out.  This Blog post will be a living post, updated as I find new things to include as I dig deaper into the system and as I have more projects based on the CMS.

Enable Pretty URLs

Probably a no-brainer, but it's useful from the get go mainly to keep from typing the index.php... is just that much of a time-saver.  It is also good to find out right from the onset whether you're going to have any issues with pretty URLs.
Enable Pretty URLs via the dashboard.  Goto sitewide settings and in the linking box, select enable pretty urls and click save. 

Enable Pretty URLs Sitewide via site.php -

Some blocks (expecially the Date Navigation Block) don't use pretty URLs in their links even when enabled from the dashboard!  That's not good for SEO, you're giving Google duplicate content with different links.  Simply add the following code to your /config/site.php:

  1. define('URL_REWRITING_ALL',true);

Setup Version Comparison.

The file is typically found at: /public_html/concrete/libraries/3rdparty and the file is called and CHMOD to 755

Overide the HTML block

Overide the HTML block to remove the automated DIV enclosures.  I use the HTML block sometimes for plaintext, especially when the design already enclosed the block in a tag like I'll probably create a block called PlainText just for this purpose, although I'm experimenting with disabling some of TimyMCE's automated enclosures, and that may fix this need.
Currently the code looks like:

  1. <div id="HTMLBlock<?php echo intval($bID)?>" class="HTMLBlock">
  2. <?php echo $content; ?>
  3. </div>

And now - it looks like:

  1. <?php echo $content; ?>

Development to Production

Often I'm working on the site locally, or using a generic Concrete5 install to test a theme (usually with plenty of content already there).  Once installing a fresh install on the intended server, I make sure to change the Debug Level from Development and change it to Production.  The url is /index.php/dashboard/settings/set_developer/ (sitewide settings -> debug)

Tracking Statistics

I disable the tracking of statistics.  This causes extra MySQL queries, and I'll usually use Google Analytics anyways, so no need having more work than necessary.  It's accuracy is also something to debate about, so I like to disable it right away.  It can be found under sitewide settings. (index.php/dashboard/settings/)

Setup advanced permissions

This is something that is recommended to do before adding any content to the site.  I like to do this right after the fresh install.  Even if you aren't going to use an advanced permission model, its best to have it in place from the start.  You may come across a time when you need to have a block hidden to a ceartain user group.  It's nice to have that ability without worrying about any kind of access control issues down the road.

To setup advanced permissions, add

define('PERMISSIONS_MODEL', 'advanced');

to your Site.php file located in the config/ folder.

A common mistake is to not enclose it the existing PHP tags (or create its own) OR to have any whitespace after the last character.