ReadyScript - our look at CMS for online stores

    Recently, the e-commerce CMS market has replenished with a new product from ReadyScript lab. The system has a number of unique features, which we will discuss in this post.

    The platform has a large list of classic features, the most important of which are:
    • Full integration with 1C
    • Filtration, comparison of goods by characteristics
    • Support for complete sets of goods, reviews, ratings
    • Discount support
    • Support for various payment systems, delivery services
    • Email, SMS notifications
    • Related products (those in the basket are offered additionally)
    • Recommended products (those offered on the product card)
    • 1-Click Purchase, Pre-Order
    • Feedback Form Designer
    • Export of goods to trading floors Yandex.Market,
    • Import / export in CSV format
    • Multicurrency

    System architecture allows you to:
    • Manage multiple online stores from one admin panel (multisite)
    • Extend system functionality with modules
    • Update the platform from the developer’s servers in 1 click
    • Compose page content using predefined blocks
    • Edit any content directly on the site

    Of the distinguishing features:
    • Site constructor.
      To allow inexperienced users to edit the appearance of their online store, a tool called “Site Builder by Grid” is proposed, with which you can visually change the grid for any page of the site and place blocks in it (for example: authorization block, search block, menu block , etc.)

    • Functionality SEO generator.
      SEO-generator allows massively installing meta tags for products according to a given template. For example: Buy {title} at the price of {cost} in Moscow.

    • Personal account of users.
      Each user has a personal personal account from which you can pay for orders, or simply store funds on it. The store owner can charge or debit funds from the user's personal account. This feature is convenient, for example, for the sale of services, or for receiving an advance payment.

    • Multidimensional configuration of goods.
      They allow you to create several parameters for the product, which the buyer can choose when placing the product in the basket. If necessary, then for each combination of product parameters, you can set your own price, article, balance.

    Ergonomics of the control interface

    Designers approached the appearance like real sculptors - they cut off everything unnecessary. The interface of the administrative panel is very simple and elegant. The main page of the administrative panel is a desktop with very useful and informative widgets, they can be dragged and customized to your taste.


    The remaining sections of the administrative panel are very similar to each other, which allows you to work confidently with the entire system after understanding one section.


    In the administration panel, almost everything happens without reloading the page, which significantly speeds up the system. At the same time, it remains possible to click on any link with the middle mouse button, which will entail opening the desired content in a separate tab. This is convenient, for example, for editing several products at once.

    In general, the admin. The panel has everything you need to work with a lot of data:
    • bulk editing / deleting objects
    • setting the number of items displayed on one page
    • the ability to highlight elements on all pages at once
    • edit some parameters directly in the table
    • import / export of data in CSV format

    If you switch to the client part of the online store, you should pay attention to the implementation of the editing mode. In this mode, you can not only customize the blocks displayed on the site, but also directly delete, add and edit all content directly on the site. For example, by hovering over any product, category, comment, article, you can right-click and proceed to edit the selected object while on the same page.


    The product distribution package includes 4 templates, 3 of which:
    • adaptive for screens of mobile devices
    • made in 4 color variations
    • assembled on a grid (meaning that they can be edited using the Site Builder)


    To demonstrate the adaptability of new themes, the developer’s site has an online “tablet and smartphone emulator”, with which you can see how a particular template looks on different devices.

    We intentionally made one template not adaptive and not on the gs960 grid, so that beginning webmasters had a simple template for modification.

    CMS from the point of view of the developer

    The system architecture is based on the MVC model. The engine is divided into a framework and modules. The framework is built on the basis of PHP 5.3 and is object-oriented. It contains many classes that solve typical problems. The system uses the latest version of Smarty as a template engine. It is worth noting that the code in the system is documented in phpDoc format.

    The modules are well encapsulated and contain in their folder all the necessary data: models, controllers, templates, css files, js files, images, configuration files. A module can influence various processes in the system by processing events. All the "external" activity of the module is easily controlled, since in ReadyScript the subscription to events always occurs in one class (respectively in one file), in the module namespace.


    Everything in ReadyScript is imbued with ORM objects, by the way, they are built according to the ActiveRecord pattern.
    • Product, category, article, menu item - these are ORM objects with the storage type “database”
    • The configuration class of the module, system, site is also an ORM object with specific storage
    • The settings of block controllers (in some systems this is called components) should also be described in a class inherited from one of the descendants of the ORM class of objects

    Why is this done? The answer will become obvious if we understand the abstraction that was embedded in the "ORM objects."

    An ORM object in ReadyScript is an object that describes properties that can save and load itself from some abstract storage (it can be a database, but not only) and generate an HTML form for itself.

    It is important to note that at the time of the initialization of the ORM object (this happens once for one class of objects), the orm.init event is generated in the system. OBJECT_CLASS_NAME, which can be intercepted by any module. In the process of processing this event, you can change the composition of the properties of the ORM object. With this feature, any third-party module can easily add, for example, a new property to the product object, which will automatically appear in the product card in the admin panel.

    It is important to say that developers will never have to create any fields, indexes in the database manually, the system will do all this automatically based on the description of the ORM Object.


    The next thing you want to focus on is the routing subsystem. Each module describes its URL masks, which it is able to process with a specific front controller. In the templates, direct links to the internal pages of the site are not used anywhere, instead of them you can see something like the following:

    {$router->getUrl(‘catalog-front-product’, [id => 222])}

    The construction calls the getUrl method of the route manager, which returns the full path taking into account parameter substitution, in this case, the product with id = 222.
    This approach allows any third-party module to always form the correct links to the necessary pages of the site, as well as centrally change the entire addressing map on the site.

    View helpers

    The system provides several standard pages of the administrative panel:
    • Page with a list of objects (in the center - a table)
    • A page with a list of objects categorized. (categories on the left, objects on the right)
    • Page with tree objects (in the center - a tree)
    • Object editing page (in the center - the form)
    • A page with arbitrary content (in the center - an arbitrary template)

    The “helper” object (CrudCollection) is responsible for collecting these pages, which is ready to assemble any of the pages described above. The developer only needs to “load” the “helper” object with the necessary components in the controller.

    class CustomAdminController extends \RS\Controller\Admin\Crud
        function helperIndex()
            return new \RS\Controller\Admin\Helper\CrudCollection(
                $controller_object, //Объект текущего контроллера
                $api, //Объект модели
                $url_object, //Объект, содержащий все входящие данные от суперглобальных массивов...
                array( //Опции
                    'topToolbar' => new \RS\Html\Toolbar\Element(...), //Добавить верхнюю панель кнопок
                    'bottomToolbar' => new \RS\Html\Toolbar\Element(...), //Добавить нижнюю панель кнопок
                    'filter' => new \RS\Html\Filter\Control( ... ), //Добавить фильтр
                    'table' => new \RS\Html\Table\Element( ... ),   //Добавить таблицу
                    'paginator',                                    //Добавить пагинатор
                    'treeFilter' => new \RS\Html\Filter\Control( ... ), //Добавить фильтр для дерева категорий
                    'tree' => new \RS\HTML\Tree\Element(...),           //Добавить дерево категорий
                    'viewAs' => 'tableTree' //Страница с объектами, распределенными по категориям

    Image system

    The time has long passed when it was necessary to save every kilobyte on the hosting, limiting itself to the convenience of development. Now hosting with 5-8 gigabytes is no longer a luxury. And there’s no need to create all the thumbnails when uploading photos, just so as not to store the “bold original”.

    The ReadyScript image system just stores the “large” image on the server, and allows you to get the image of the desired size and type of scaling in the code or template at any time. Yes, of course, the system does not store the image that is loaded, it still compresses it to the “large” sizes specified in the settings, by default it is 1500x1500px. The link to the image is generated instantly, and the direct creation of a thumbnail occurs when the browser first opens the image.

    This approach significantly speeds up the process of creating a project and frees up hands for designers, because it is the design theme that now determines which images need to be shown to the user.

    This is only the tip of the iceberg from the concepts and technologies used in ReadyScript, however, we will examine the technical side in more detail in the following articles, so as not to violate the overview purpose of this article.

    Distribution method

    The ReadyScript platform is distributed as an open-source, boxed product in three editions.
    • Showcase
      Suitable for creating online catalogs. In this edition there is no "Shop" module, respectively, there is no basket on the site, but there is a "buy in 1 click" button.
    • Market
      Suitable for creating online stores without data exchange with 1C.
    • Hypermarket
      Maximum equipment, suitable for creating an online store with data exchange with 1C, and also includes an “affiliate module” that allows you to open an online store for partners with the product range of the main site. An affiliate site may have a separate domain, a separate price for goods, a separate template, separate groups of items, if the partner site does not need to sell the entire range.


    ReadyScript is a paid CMS, but has very flexible licensing terms, in particular:

    • On .local, .test development domains, the system can be used without restrictions, for free, forever
    • There is a 30-day trial period on the combat domain
    • Individual conditions for a paid license. By simply moving the slider, the user is prompted to select the appropriate license terms and cost. In fact, the user can choose: either pay a small monthly amount for the license, or buy the perpetual license once.

    The standard license (not important, temporary or perpetual) includes the right to use two sites (as part of a multisite).

    Among the additional licenses are offered:

    • License for an additional site
    • 1 year renewal subscription license
    • License to upgrade to a more complete version of the platform

    Such flexible licensing conditions allow you to start using the minimum edition of the platform and gradually increase the functionality, moving to more complete editions, as the online store grows.

    Official site -

    Also popular now: