Please note: This is an unpublished site and we are making changes - glitches still!!!

Tools you must have

Here we provide some hints to tools you might use. If you already have a set of tools you like you can omit the recommendations.

A Web server with PHP and MySQL.

This is probably something you already have. If you do not have one and have no idea where to get one and/or how to install one this tutorial is not for you. Please go back to the basics. As for versions we assume that the PHP version number is at least 5.x. now that version 4.x is resting in peace. This project has been written using Apache2 plus PHP 5.3 as the platform.
 
For those wishing to have a quick testing/development environment in Microsoft Windows we recommend WampServer. Apple users may like  Mamp. This tutorial presumes that the reader or developer has a working knowledge of related technologies (operating system, file system, database administration etc.) whatever the tools may be.
 
For those searching for a lightweight alternative to Apache2 we will include instructions for using SkoopCMS in a speedy combination of  nginx + PHP-FPM. More on that later. This is not mandatory, of course, it is just an alternative to Apache.
 
 
DirectAdminIf you are running a VPS or a dedicated server we feel no shame in advertising the administration tool we have been using for years: DirectAdmin. It is a lightweight, robust product that does most of what one normally needs when administering websites, users, databases, emails, cron jobs etc. It has a wonderful, friendly community as well. This is not mandatory but will make your life easier!

A decent editor

You should have a good editor, preferably one with UTF-8 character set support. ANSI will do if you are only producing text for the English-speaking audience. The nice thing about UTF-8 (apart from good internationalising support) is that you can use the repository of special characters like arrows or various special symbols. You might find them handy in many web applications.
 
 
We recommend the Eclipse framework because it does a wonderful job with projects. As for PHP in Eclipse you have a couple of alternatives to choose from:
For some reason we still keep using the PhpEclipse. You can, of course, choose to use any editor you like. Other tested UTF-8 capable editors include Notepad++ and the Java based Jedit. Oh, and Oracle (formerly Sun) NetBeans has pretty nice PHP/Smarty support as well. If you do not see a need to use UTF-8 in the foreseeable future you are free to use any editor that suits your taste. 

The Smarty Templating Engine

This is the engine we are using for our framework. You can get the engine from http://smarty.net. Have a look at it, please read the "getting started" documentation from the site and you will see that it is not that difficult to jump into it.
 
I can hear your question: why templates? Why Smarty? Okay. Let’s make it clear:
  • Smarty is mature, fast and well supported
  • Its memory footprint is very small - even compared with frameworks advertised as 'lightweight'
  • The templates are easy to read and write even for designers
  • The templates have built-in control flow logic (loops, "if-else" etc.) and an inheritance mechanism
  • There are lots of ready-made functions and plugins to choose from
  • Unlike in most template engines the templates are not interpreted – they are compiled to PHP
  • Compilation takes place automatically when a source template is changed and the result can be bytecode-cached
  • You can further tune performance further by caching the HTML results in a semi-static file
  • The engine is very, very stable and safe to use
  • The engine has a very nice plug-in API for our extensions
  • It is absolutely free
  • It is being actively developed, being at version 3.x at the time of writing this
If we chose to write a templating engine of our own we would only lose. Believe us - we almost a decade of experience. The compilation phase alone will make the difference. You will find zealots boasting about other engines but none of the ones we have tested comes even close the performance, stability and functionality of Smarty. Writing one's own templating system will very probably result in poor performance and the need for dozens of subtemplates whichin turn will lead to  CPU/memory problems. Why? The home-bakery ones have no built-in support for conditional or loop structures, for instance. Creating them using elementary subtemplates is a performance nightmare. On-the-fly parsing is a CPU intensive task as well. Please have a look at the "performance" discussion at the "Advanced" section.

Alternative Template Engine(s)

That said  there is viable alternative: The Open Power Templates look very much the same and about as good as Smarty. Go have a look at the technology and feel free to port this system to OPT :) 
 
Another promising one is called Twig by the Symfony MVC people but we have no plans to switch to it.
 
So far we will stick to Smarty because there are no good reasons to drop it.

jQuery

The jQuery Javascript library has become the Swiss army knife of DHTML and Ajax. It makes writing cross-browser functionality quicker, safer and more simple. Enough said? Well,  maybe the following line will serve as an example. It loads a random news ingress to your site news ticker that resides in a container called "ticker" (provided you have the back-end code ready):

$('#ticker').load('news/randomIngress.php');

I have no courage to even think of writing a more concise version :)

Some notes about the code you see

We are not providing a programming style tutorial. There are some things we have left out to save space – one of them is proper error handling. Instead of AdoDB, PDO or MySQLi we have used the old-fashioned MySQL approach most readers already know.

To keep the code more digestible the data fed into Smarty objects is kept simple. There are few true objects; we mostly use just scalar values and arrays. A lot more can be achieved if more intelligent objects are used. Once again - it is up to you to take the next step.

As for the conventions please have a look at the coding style page!