In November 2009, I met
www.opencart.com and was very pleased with this CMS built in compliance with the basic principles of MVC. It's just a great system whose code can be easily adapted to your needs. System files are divided into folders controller, model, view, language.

Brilliant and simple. So simple that in a matter of hours I understood how the system works and was already able to adapt several controller files to fit my needs. As a CMS, this system is better not to be considered in principle! Everything is very poor and sad. But the platform for commercial activities is very decent. The main slogan of the site is an online store with minimal development effort.
An important advantage for me is the high speed of page generation. A simple code divided into model, view, controller. Design templates are in folders with clear structure. A simple system compared to magento commerce in which something is not very easy to change.
And now there are some details that may be of interest to those who are interested in OpenCard. I publish info, which in my opinion can be useful and that the most important is based not on theoretical experience, but on the example of use in a particular project.
')
It is easy enough to make changes to the code.
Here, for example, you see a block with a market price and savings when buying on this page:
www.toolsonline.ru/toolsets/allinone/nab.14.12.116 it is displayed only for products of the brand machine import. To make this block it was necessary to add some variables to the file controller of the product responsible for generating the card. I can’t say that it’s very usable and I needed to change PHP files via FTP. But the logic is so transparent that I am sure that in the future I will not get confused in what I have already done or will do later. The block is displayed only for one specific manufacturer. The logic is in a separate controller file. The representation of the block in the design template file, where PHP and HTML are in the mix. Templates in opencart is the most primitive possible, but this has its own strength! Which you understand after you work with someone else's design patterns on xslt. I added changes to two php files and got the result I needed.
Upload to Yandex.Market in 3 days
I wrote a code for unloading goods online store in the format Yandex ML. This is very easy to do based on the file available in the system for exporting goods to the Google Base format. It is really easy to do.
A lot of interesting aspects of this format opened up to me when coordinating uploading parameters with the Yandex.Market manager before it approved the final version. I made changes to the upload 4 times. The admin area of ​​Yandex.Market was very helpful, where you can check the validity of the upload. Yandex proxies did a good file checking utility. I implemented the task of integrating an online store into Yandex.Market in just 3 days and was very proud of it for the next 3 days =) And I implemented the model vendor.model and made it so that in the admin area you can choose the minimum price of goods starting from which the goods are unloaded into file.
For those who do not know exactly how it is unloaded:
Products are automatically uploaded in the YML file on Yandex.Market. The file is downloaded, processed, and published approximately every 5 hours. Yandex.Market randomly polls links to the site’s products at intervals of 1 minute. If the site is unavailable, it is removed from the publication automatically. According to this, if you click on the goods in the search for Yandex.Market, then each click will cost the site owner at least 3 rubles. The stupidity of the YML format is that XML is only accepted in windows-1251, and not in UTF-8. The lion's share of HTML Entity is not supported. The reason for this strange support is incomprehensible to me.
Work with images
Look at the additional pictures in the product description:
www.toolsonline.ru/toolsets/allinone/nab.14.12.105 they are displayed in 275x275 pixels. A click on the picture opens a picture in the size of 800x800. A water mark is displayed on top of the picture. Scaling of images, the imposition of a protective watermark'a in OpenCart built-in by default. It is necessary only to figure out where the necessary library generates images of the required size and to add a few lines of code to the image output library. The watermark output is implemented, but it must be included in one of the helper methods in the PHP file.
A product can not have fields for individual properties and as a result, in principle, filters cannot be implemented by properties, as in Virtuemart and other engines, but there is a very nice and simple WYSIWYG (I don’t know what it is called), you can add an unlimited number of add. pictures for the goods. A lot of built-in tools to control the price of the goods. You can add options that affect the total price. Each product can be placed simultaneously in several sections of the catalog.
CNC problems
This CMS has a number of shortcomings that must be corrected! A lot of errors with CNC, I understand that this feature has appeared since version 1.3.x and has not been debugged yet. One product can be viewed as a seo-url from the root of the site
www.toolsonline.ru/cs-tk56pmq or in the directory structure:
www.toolsonline.ru/toolsets/unisets/cs-tk56pmq ie several ways to the same product, which in my opinion is not good. The total number of pages is more, but the weight of each page from the point of view of a search engine should be less, because they have the same content is given. In addition to the option of SEO links, there are parallel links with parameters, which is also annoying. Here is the link
www.toolsonline.ru/index.php?route=information/contact and a beautiful link / contacts / I could not do it in a simple way.
Problem with code 404
The second important problem is that Daniel the architect of this very CMS does not in principle give a 404 error for non-existent pages, i.e. the text “page not found” will be displayed, but the HTTP 200 OK code will be transmitted for the page. The search engine will think that the page exists, and it is not. Slag from the index of the search engine will not be removed. I solved this problem, but I'm surprised why there is no solution in the Opencart community on the official site
forum.opencart.com . I am there under my usual nickname jfima and have already posted there a couple of my solutions for this and other problems. I would say that the community is young and fragile and there are few wise people there.
Total
In general, OpenCart is well suited for online commerce, if you focus on the option with minimal investment in development efforts. My level is enough to add something for this CMS on their own, which means that this system will be available to many freelancers. A simple framework that can be easily customized for the needs of the project.