TomatoCMS support multilingual site. English is default language. But it is easy for you to customize or make a new language for your site. This article will help you if you want to make a language pack.
TomatoCMS 2.0.1 provides Install Wizard which allows you to install TomatoCMS more easy than before. This article will help you go through the steps of Install Wizard.
After releasing TomatoCMS 2.0 version, we received many feedbacks. Most of users had problems with configuration and didn't know how to make TomatoCMS run correctly, especially when users put TomatoCMS on sub-directory of web root folder. And there was not install wizard at that time.
Now, after hard working days, we released the 2.0.1 version which provide Install Wizard, improve comme...
Do the TomatoCMS support browsing by mobile devices? Yes!
TomatoCMS already have MobileAgent plugin and mobile template for this purpose. Try it online by going to http://demo.tomatocms.com by your mobile phone. The plugin support most mobile devices/br...
A few days ago, one of readers asked me for a live demo which user can switch the template and skin. That is good idea. And now, it is available on our live demo. The limit is that you only see the effect at the homepage, but it is not big problem.
In previous article, I wrote a post shows you how to deploy a widget. Each widget consist of at least 5 files, two of them are Widget.php, show.phtml which play the role as controller and view layer of MVC. That is not enough. In some case, you will need a view helper. Fortunately, TomatoCMS architecture allow you to do this ...
Layout Editor is most interesting feature of TomatoCMS. This tool is very visual and powerful.
You can build and preview layout of page easily.
After releasing TomatoCMS, some developers informed me that they could not deploy on localhost. So, I decide to post new guide which shows you step by step to do this. This guide was implemented on Windows operating system with Apache 2.2.1, PHP 5.2.10, MySQL 5.0.83.
Widget is most important part of TomatoCMS. All web pages build by TomatoCMS was composed by widgets. This article describe structure of widget files as well as how to develop a widget from scratch.
TomatoCMS introduce a concept: each webpage was composed by collection of widgets. We also provide a tool called Layout Editor which have ability of drag/drop/preview a layout. This article will explain in details what widget is, how to use Layout Editor tool to customize the layout of page.
This guide will help you how to post new article as well as upload, insert images into the content of article
There is nothing visual than photos. Today, I post some screenshots that present most key features of TomatoCMS (click on image to view the full size).
TomatoCMS support multilingual site. English is default language. But it is easy for you to customize or make a new language for your site. This article will help you if you want to make a language pack.
TomatoCMS is modularized. Each module consists of many widgets which are located in the ModuleDirectory/widgets directory. Language file for module is located in app/modules/Name_Of_Module/languages directory, meanwhile, language file for widget is located in the same directory as widget.
Following figure illustrates where the languages files of news module are.

Languages directory of module
In above figure, (1) indicates the path and (2) indicates the list of available language files for news module.
Language file have to be named as lang.xx_YY.ini where XX is language code and YY is country code. You can find the list of language codes here and country codes here.
So, if you want to create a French language pack for news module, you have to create file named lang.fr_FR.ini in app/modules/news/languages directory.
The language file is simple text file grouped by some sections. Don't care about the section at this time, I will explain it later. Each line below the section has the format of key=value:
[about] about_news_description = "Manage articles" dashboard_list_articles = "List of most recently articles" dashboard_add_article = "Write new article" dashboard_list_hot_articles = "Hot articles" permisson_article = "Manage articles" permisson_article_activate = "Activate article" permisson_article_add = "Add new article" permisson_article_delete = "Delete article" permisson_article_edit = "Edit article" permisson_article_hot = "Manage hot articles" permisson_article_list = "View the list of articles" [article] article_category_latest_articles = "Latest articles" article_category_previous_page = "Previous page" article_category_posted_by = "Posted by %s at %s" article_category_posted_in = "in %s" article_category_next_page = "Next page" article_category_read_more = "Read more" article_details_posted_by = "Posted by %s at %s"
Don't edit the key, it is used to identify the language properties in source code. Now, you can edit the value manually.
Also, you have to keep the characters like %s or %d in the value, it will be replaced with values taken from the database or some dynamic things.
In order to create language files for widgets, performs similar steps.
For example, creating a French language for category widget from news module includes steps:
- Copy lang.en_US.ini file in the widget directory (app/modules/news/widgets/category),
- Paste it in this directory and rename to lang.fr_FR.ini,
- Update the value of language keys in lang.fr_FR.ini file.

Creating new language file for widget
To apply or test new language, you have to do only one action: change the language setting in TomatoCMS configuration file.
Open app/config/app.ini file and change the value for lang setting to your language code, fr_FR, for example:
[web] lang="fr_FR"
Yes. You don't have to create and edit file manually. TomatoCMS provides language editor that allows you to create and update language file easily.
In backend, go to Custom >> Language menu. This page shows all available languages for modules and its widgets.

List of available languages for modules and widgets
(1): Select module
(2): If you want to create language for widget, select the widget that belong to the module you have just selected. If you don't select the widget, this form will create language file for module.
(3): Enter the language code in format of xx_YY. In the above figure, fr_FR means that we are going to create French language pack for news module.
(4): Press Create button to jump to page that allows you to update language file.
(5): List of available languages for each widgets. Click on the language name to go to the updating language page.
You will be redirected to the updating language file like follow:

You can update language file in backend
(1): As I said earlier, the language file was grouped by one or more sections. You can click on the name of section to show or hide all language items that belong to the section.
This is one of reasons why we need section in language file. It is easy for developers to develop and maintain language file. (What happen if the language file consist of too many items? It is not easy for you to find an item, isn't it?)
(2): Click on value that associates with the key of language item to update its value. For canceling, press the Esc key.
(3): If you want to remove the item, press Remove link
(4): You can add new item to given section or create new section.
No, at this version and maybe in the future, TomatoCMS does not support any fomats of language files like XML, CSV but ini.
TomatoCMS uses Zend_Translate component. Although Zend_Translate supports various formats including INI, XML, ... but we choose INI because of two reasons:
- The INI file is simple,
- And processing INI file is simpler and quicker than XML one. It makes our site run quicker.
There is nothing wrong here :)
For improving performance of loading and processing language file, TomatoCMS caches language data if it detects the cache was enabled. In this case, you have to clear the cache.
Go to menu Custom >> Cache in backend:

Cache management
(1): The cache type you are using. In this case, our site caches data to files, so it uses Zend_Cache_Backend_File as backend caching.
(2): All language items was tagged Zend_Translate. You can click on tag label to show or hide all cached items which associates with the tag.
(3), (4): You can click on Delete link to delete all cached items of given tag or certain item.
(5): Click on Clear link if you want to empty the cache.
I though that the language editor should allows user to upload new language from local computer. It is useful if user downloaded language files from other site. This maybe comes in TomatoCMS 2.0.2 version.
Now, it is great if you translate TomatoCMS into your language. And there will have many TomatoCMS download versions that include certain language package. Lets us know if you are goting to do this.
Waiting for your translation!
TomatoCMS 2.0.1 provides Install Wizard which allows you to install TomatoCMS more easy than before. This article will help you go through the steps of Install Wizard.
I assume that you downloaded TomatoCMS and unzipped it into a folder named tomatocms in your web root directory. In localhost, the full path of folder is <Your_Apache_Installed_Directory>/tomatocms.
Now, go to http://yourdomain.com/tomatocms/install.php
At the first step, Install Wizard will check the requirements of your server. TomatoCMS requires PHP 5.2.0 or newer and following PHP extensions:
gd, json, mbstring, mysql, pdo, pdo_mysql, simplexml, xml, xmlreader.

In addition, a few files/directories have to be writable.

If your server does not meet two conditions above, the Next button won't be visible.
Otherwise, click on Next button to go to next step.
IMPORTANT NOTE: You have to create the database before performing this step.
I assume that you created database named tomato_cms and granted all permissions to the user which have user name of tomato and identify by password 123456.

(1): The host name or IP of your MySQL server
(2): The port which your web server use to connect to database server.
You should leave two settings as default.
(3), (4): The user name and password to access the database.
(5): Database name. As I said above, this database have to be created firstly.
Now, jumps to next section which will ask you for your website information.

(1): The URL of your website. If you puts TomatoCMS in web root directory, the URL will be http://localhost or http://YourDomain
Leave it as default.
(2): Name of your site
(3): Select language for your site. TomatoCMS support multilingual site, but there are two languages which was built in, there are English and Vietnamese.
(4): Select template for your site. TomatoCMS support template/skin architecture, it means you can upload and install other template later.
By default, TomatoCMS built two templates which are for news site and bloggers.
(5): Select the skin. At this version, there is only one skin for each template.
(6): Enter the keyword of your site. If you want to many keywords, lets separate them by a comma. This will be taken for meta keyword tag of your site.
(7): Enter description about your site. Like keywords setting, value of this field will be taken for meta description tag.
The final settings are related to date time.

(1): Select your timezone.
(2), (3): Enter your date and date time formats. You can find all PHP date time settings here.
Press the Next button to go to next step.
Final step is coming.
YOU HAVE TO PRESS THE CONFIRM BUTTON AT THIS STEP to complete installing TomatoCMS.
After pressing this button, you can go to the administration section via address: http://Your URL/admin/
The default username and password are admin (Don't forget to change this password).
Although this step is not required, but we recommend you to perform this step to avoid most popular issues when you manage your site in backend section.
The sample data, is collection of SQL queries, which can be imported from your MySQL client tool like phpMyAdmin. This file is tomatocms_sample_db.sql located in install folder.
I installed the TomatoCMS successfully, but when logged in to backend and try to access some other admin sections via top menu, I always received the error which showed that some resource was not found like
Resource 'core:cache' not found
What should I do?
Install Wizard, in fact, will install the database schema and minimum data which ensure your website run correctly. If you want to run other functions in backend, due to permission system, you have to create resource first.
In backend section, go to User >> Privilege menu.
Clicks on Add links to create resource and [+] buttons to create actions associated with resource.
Repeats this untill all resources and actions created.

This error does not occur if you imported sample data (described in step 4 above).
It's inconvenient so we will fix this in next version.
If you have trouble with installing TomatoCMS, leave your errors in the comment or drop an email on core@tomatocms.com
Thanks you so much.
After releasing TomatoCMS 2.0 version, we received many feedbacks. Most of users had problems with configuration and didn't know how to make TomatoCMS run correctly, especially when users put TomatoCMS on sub-directory of web root folder. And there was not install wizard at that time.
Now, after hard working days, we released the 2.0.1 version which provide Install Wizard, improve comment system and many fixed bugs.
Now, Install Wizard only take three steps to install TomatoCMS. You can install it in root web directory or its sub-directory.

- Support nested, unlimitted level comments:

- Shows avatar of commenters:

- Allows users to use some simple HTML tags in comment:

- User can reply any comment in thread:

- Administrator can apply hooks for filtering the content of comments.
Below is two examples which was built already in TomatoCMS. The first one replaces special characters with emotion icons as follow:

And the second one formats comment in pre-defined programming language style which is very useful for programmers' blogs:

- Prevents spams:
At this version, we made an attempt at preventing spams by using the service provided by Akismet.
To use this, you have to register an free Akismet API key. (We will post new article about this)
In backend, user will receive the message that informs new version is available if any.

Beside the new features listed above, this version fixed many critical bugs.
The most important issue is that all links was changed to absolute links instead of relative links like before. That mean the website work correctly if users put TomatoCMS into sub-directory of web root directory.
We also display the error message if your PHP version does not meet requirements:

Lets download and reports bugs.
Thanks you so much!
iTomato = I Tomato. This widget provide visitors the ability of customizing pages on your website. At this initial version, your visitors can drag and drop the widgets to desired position on page. Try it on home page of TomatoCMS Demo.
It does not take much time to activate this feature. Like installing other widgets, you have to use Layout Editor tool to insert this widget to page.
We recommend you insert this widget to full row container at the bottom of page as follow (Assume that you want to insert this widget on your home page):
Go to menu Extends >> Template and click on the List of pages link associated with current template
At new page which list all pages on current template, click on the Edit Layout link associated with Home page
Now, you are on Layout Editor page. Click on plus link (+) next to 12 cols container to insert the full row container to the bottom of page.

- Click on the Widget tab
- Click on the core module
- Drag the iTomato widget and drop it to the 12 columns container you have just created above.

- Press Save button to save the layout.
Now, refresh your home page. Moves your mouse to head section of each widgets and try drag and drop the widgets to other position on page. Refresh the browser and you will see that the widgets has been updated their positions.

Some features the iTomato widget should have:
- It should provide the Reset button that allow visitor to reset the layout of page. At this time, the only way to reset the layout is that you have to clear the cookie of your web browser.
- Visitor can remove the widgets from page. Of course, some widgets don't allow visitor to do this.
- Visitor can do some settings to each widgets. For example, visitor can set the number of video clips that will be displayed.
Do the TomatoCMS support browsing by mobile devices? Yes!
TomatoCMS already have MobileAgent plugin and mobile template for this purpose. Try it online by going to http://demo.tomatocms.com by your mobile phone. The plugin support most mobile devices/browsers including iPhone, Nokia, Samsung, Sony, Palm, PocketPC, ...
To install this plugin, go to Extend >> Plugin menu in administrator section. This page list all plugins on the system.
Go to row that display information of mobileagent plugin and click on Install link:

Now, go to your website by browser of your mobile phone to see the result:

NOTE:
1) You can try this plugin on your Firefox browser by installing User Agent Switcher plugin. This Firefox plugin allow you to view the website on various agents including iPhone, search engine bots, ... It also provides the list of agents that you can import to.
The above screenshot was captured on my Firefox which was installed User Agent Switcher 0.7.2 and the iPhone 3.0 agent was activated.
2) If you can not see the different when visits our demo by PC and mobile devices, leave in comment your mobile name/manufacture as well as its browser name. So we will add it to the list of supported browsers later.

