|This article does not cite any sources. (September 2011) (Learn how and when to remove this template message)|
3.7.0 / March 18, 2011
TinyButStrong is a web template system written in the PHP language. Its library for the attention of PHP developers. As a template system, its goal is to help to code by separating the business algorithms (Business logic) from the construction of the user presentation. The short name for TinyButStrong is TBS.
The first version of TinyButStrong appeared in January 2002. Its first goal was to merge emails. In the middle 2002, it was able to merge dynamic web pages. The name of TinyButStrong comes from the intention to be simple to use while being handy for several levels of developers. TinyButStrong was always content in a single PHP file.
The TinyButStrong Template Engine claims to merge Natural Templates, i.e. templates that respect the format of the final document to produce. It is possible to build an HTML template that is W3C compliant, and it is possible to build it using a WYSIWYG tool. It is also possible to build an OpenOffice Writer template using OpenOffice.org.
This ability to operate within an environment where website designers use WYSIWYG tools is crucial for end users during website development. It enables them to utilize separate vendors - one for their 'look & feel' designers and other(s) for their programming requirements. Obviously, this extends the lifecycle as their ability to change vendors with much less difficulty in replacing specific skill sets is enhanced substantially.
The TinyButStrong engine can only deals with template that are text sources. Thus, it can merge contents like HTML pages, email, XML, or RSS, but it cannot merge templates such as PDF. The core system contains few features dedicated to HTML templates.
TinyButStrong can be extended to merge OpenOffice and Microsoft Office documents. This is possible because such documents are in fact XML contents embed in a zip archive. Building such documents with TinyButStrong requires a plug-in called OpenTBS.
- Merge data items (by replacing located tags)
- Merge data records (extending or deleting blocks)
- Formatting items using native numeric or date formats, or using custom functions.
- Conditional expressions for items and blocks
- Merge data record directly with SQL statements (several Databases and data Sources are supported in native, other can be add using plug-ins).
- Sub-blocks, serialized blocs, sub-templates,
- Events to be cached by PHP functions
- Caching pages
- Native database query debugging console
An HTML template with TinyButStrong tags might look like this:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html> <head> <title>[onshow.title]</title> </head> <body> [onshow.message] </body> </html>
The business logic to use the TinyButStrong template above could be as follows:
<? include_once('tbs_class.php'); $TBS = new clsTinyButStrong; $TBS->LoadTemplate('template.htm'); $title = 'Example Page'; $message = 'Hello'; $TBS->Show();
Natural Templates are templates that respect the format of the final document to produce. This can be done by TinyButStrong because:
- the syntax of TinyButStrong tags does not interfere with the syntax of the template format
- both field and block tags can be defined in the visual part of the template
Relative syntax for blocks
Here is an example of the TinyButStrong standard syntax for a block that should multiply the rows of an HTML table. This syntax interferes with the HTML structure.
<table> <tr> <td>Id</td> <td>Name</td> </tr> [block1;block=begin] <tr> <td>[block1.id]</td> <td>[block1.name]</td> </tr> [block2;block=end] </table>
Here is an example of the TinyButStrong relative syntax for the same block. This syntax doesn't interfere with the HTML structure.
<table> <tr> <td>Id</td> <td>Name</td> </tr> <tr> <td>[block1.id]</td> <td>[block1.name;block=tr]</td> </tr> </table>
Relative syntax for fields
Here is an example of the TinyButStrong standard syntax for a field that should change the value of an HTML attribute. This syntax interferes with the HTML structure.
<div class="[onshow.new_value]"> Some text here </div>
Here is an example of the TinyButStrong relative syntax for the same field. This syntax doesn't interferes with the HTML structure.
<div class="style1"> Some text here [onshow.new_value;att=div#class] </div>
- TinyButStrong: a Template Engine really WYSIWYG (French Magazine)