I just wanted to contribute towards Custom Templates:
http://www.concrete5.org/documentation/general-topics/custom-templa...
I know this probably has been discussed at length on the forums, but I didn't see it in the Help documentation, so I just wanted to write it here.
Concrete5 enables many approaches to customizing the exact look and feel of your blocks.
In addition to the settings provided by each block's edit dialog, you can control display by using CSS styles, the Design dialog or by using a custom template.
By far, the most common customization you use will likely be global CSS styles. By favoring tag-based styles, you can style many block types without having to assign CSS classes. Many block types also include unique class declarations, so you can fine tune styles for each block type individually.
When it becomes necessary to style a specific block instance even further, try clicking the block, selecting Design and configuring your unique styles or CSS class declarations there.
However, it is not always possible or practical to style your blocks using CSS alone. This is where custom templates come in.
Some block types, such as the Auto Nav block, include custom templates by default. Most block types, however, do not include any custom templates, but it is very easy to create your own.
Be aware that custom templates may need to be updated if the block has been improved or changed since the template has first been created. This is important to remember, but it should not dissuade you from using them when it's right.
For any block, duplicate it's path in the root directory of your concrete installation. For example, to create a template for the Auto Nav block, which is located at "/concrete/blocks/autonav", create a directory at "/blocks/autonav". You can exercise this same approach for add-ons from the Marketplace as well. To create a template for the Stickies add-on, which would be located at "/packages/stickies/blocks/stickies", create a directory at "/blocks/stickies".
Once you have created your duplicate directory, add an additional folder called "templates". For an Auto Nav template, the final path should be "/blocks/autonav/templates".
Next, duplicate "view.php" from the block you are creating a template for. Again, for an Auto Nav template, you would copy "/concrete/blocks/autonav/view.php" and paste it into "/blocks/autonav/templates/view.php"
Finally, you have two choices when it comes to making the name of your template unique. You may either rename your new copy of "view.php" to whatever you like (although lowercase and underscores are preferred), such as "my_custom_template.php", or you may create a new directory, placing the file in a location like "/blocks/autonav/templates/my_custom_template/view.php". Either will work fine -- it ultimately depends on which you prefer, and whether you will need any additional supporting files to create your custom template.
Once the proper directory structure has been created, and you have your copy of the original "view.php" file from the block, there are only two things left to do.
The first is to edit or modify your new file however you wish. Change the HTML structure, rearrange tags, comment out things you don't need ... the PHP file will need to work once your done, but if you're at this point you probably are generally familiar with PHP, Javascript and HTML. If this step is difficult, be sure you are using a colorized code editor which understands these languages, to make it easier to recognize code errors.
The second is to choose your new template. While editing a page in Concrete, click on the correct block, select "Custom Template" then select your template from the list.
Custom Templates are very easy to implement once you get the hang of it. Copy, paste, then edit as much as you like. This is a very powerful feature in Concrete5, but don't abuse it. Don't use a template when you could easily do the same with CSS -- it makes it easy to upgrade your add-ons or Concrete install to the latest version.
Hope this helps!