Review Webasyst Blog Engine

    One of the first applications that we developed based on the Webasyst framework was the Blog application , which allows you to conduct personal, collective and corporate (closed by authorization) blogs. It is a blog, because with the example of this application it was very convenient to implement many basic concepts in the framework: frontend, design editor, plugins, sitemap, etc. In addition, then we ourselves had to open a blog on the site. The application is free (LGPL), runs on the basis of PHP / MySQL / Smarty / jQuery. Demo : frontend , backend (enter any login and password to enter the demo) Download : in the archive (3.8 MB; the archive already includes the Webasyst framework) or on GitHub




    (the application itself is located in wa-apps / blog /)

    Under the cat is a detailed overview of the application and many screenshots.

    Installation


    The system requirements are “classic”: PHP 5.2+ , MySQL 4.1+ , mbstring, iconv, json, curl, gd / imagick extensions — it is installed on almost any shared hosting.

    The application is part of the Webasyst framework . If you download the application from the link above, the framework will be installed immediately with the “Blog” application. If there is no “Blog” in the basic delivery, then it can be easily installed through the built-in “Installer” application, which is always included in the basic structure of the framework (“Installer” allows you to install updates and new applications with one click).

    Installation takes place in several steps: copying files to the server via FTP and then entering the settings for connecting to MySQL via the web interface. Nothing unusual.Instructions . (If you don’t feel like installing a script, you can try the application in the Webasyst cloud .)

    Login to the backend:



    Backend


    At the first start, the application meets the user:


    The backend interface is built around a list of posts.



    The main division of posts is on blogs. Blogs are independent streams of posts and can be open - posts are automatically published on the site, and closed - posts are available only to backend users. Blog access is configured by user and user group. Each blog can be assigned a color, which makes maintaining a large number of independent blogs quite convenient. The screenshot above shows an example of a common feed for three blogs at once, two of which (yellow and red) are closed - a small lock icon is displayed next to the title of posts belonging to these blogs.



    A post can only be on one blog. Additionally, you can assign tags and categories to each post (for this you need to install free plugins). Everywhere on the lists is lazy loading.

    Design


    By default, the default theme for the frontend is connected, which looks minimalistic:


    Default can be easily changed to any other design theme directly in the design editor in the backend: you select a design theme, it is downloaded from the Webasyst website and installed.



    While there are few basic themes, but all topics - with a clean valid layout ( demo validator ), automatically adapt to the user's device (desktop, tablet, mobile), plus micro-layout of posts and comments according to Schema.org standards is used in all basic design themes .

    Smarty template engine is used. Localization is based on gettext. The showcase design can be edited directly in the browser in the application backend. Via the web interface, you can edit all the front-end templates: HTML / Smarty, CSS, and JavaScript (jQuery).



    There are various Smarty helpers that help in any design template to receive data from the Blog application or other applications. For example, using the design, $wa->shop->products('tag/бестселлер')you can get from Shop-Script 5 (an application for creating online stores) a list of products with the "best seller" tag and display them, say, in the sidebar of the blog (sidebar.html template):



    Similarly, you can extract data from other applications : $wa->photos->photos(‘tag/каникулы’), $wa->shop->cart()->total(),$wa->blog->blogs()etc. The list of supported helpers can always be found in the cheat sheet here in the design editor.



    Frontend


    Subscribing to a blog in frontend is RSS, for closed blogs in the backend by email.

    For the CNC addresses of front-end records, you can use one of several options: only the record address or the record address along with the year, month, day.



    Based on one application, you can maintain several independent blogs on different sites. For each frontend of the application (and there may be as many as you like on different domains), you can pin a separate blog. Example: on the framework website we conduct blogs in English (webasyst .com / blog /) and Russian (webasyst .ru / blog /) in a single stream, posts are published on different domains and look independent in appearance.



    In the front end, too, lazy loading is everywhere. From the point of view of SEO, everything is OK: if there is no JavaScript support, then a page navigator is displayed instead of lazy loading, so that all posts are indexed normally.

    Also, the application automatically creates and updates a blog’s website map ( example website map in a demo).

    Post writing


    There are three editing modes for writing posts:
    - WYSIWYG , where without it: using the elRTE editor,
    - HTML : based on the Ace editor,
    - Markdown : you need to install a free plug-in.

    For posts, you can edit meta tags, title, tags, categories (plugin), the planned publication date and arbitrary key-value parameters, the values ​​of which are then transferred to the design template.



    If you enable the option in the application settings'can_use_smarty' => true, in the body of the post it will also be possible to fully use Smarty. This is convenient for working with data from other applications, for example, when you need to get a dynamic list of photos from the Photos application according to some rule: tag, rating, album, etc.

    Comments


    The application has a tree-like structure of comments: branching and the ability to respond to comments are similar in appearance to comments on the Habré.



    In the framework right out of the box there are OAuth -authorization adapters for popular services, so in the settings (in the web interface) you can easily connect authorization via Google, Facebook, Vkontakte and other services.

    Discipline


    The calendar of publications in the backend clearly displays the posts: already published and planned for publication in the future. It is easy to see when a lot of posts are planned, and when not. As our own blogging experience shows, the calendar, planned publication dates, and reminders are one of the most practical features of the application, which really helps to maintain a more disciplined blog.



    You can turn on reminders for upcoming recordings, and the application will “knock” the author of the application by email every day until the recording is either published or deleted.



    Delayed posting is also supported: you charge the date and time, and the post will be published automatically (for this you need to configure the cron scheduler).



    Plugins


    Several useful plugins are available for free download, for example:

    - the Trollface plugin, which allows you to mark individual commentators with the trollface,
    - the Markdown plugin already mentioned above,
    - the import plugin from WordPress and LJ,
    - the plugin for filtering posts by category and tag,
    - Akismet antispam,
    - The rest of the plugins can be viewed here .



    Own plugins are also easy to develop. The application has many hooks to which you can attach your functionality. All existing plugins can be used as an example to develop their own plugins.

    API


    The proposal provides 13 external API methods for reading and writing data.

    blog

    • blog.blog.add
    • blog.blog.getInfo
    • blog.blog.getList
    • blog.blog.update

    post

    • blog.post.add
    • blog.post.comments.add
    • blog.post.comments.delete
    • blog.post.comments.getInfo
    • blog.post.comments.getTree
    • blog.post.delete
    • blog.post.getInfo
    • blog.post.search
    • blog.post.update

    Documentation on API methods of the application (with a sandbox): http://www.webasyst.ru/developers/docs/api/explorer/blog/

    WordPress, other engines and why another bike


    Based on the Webasyst framework, we mainly make applications for teamwork and business, and the main focus today in Webasyst is online shopping. We created the Blog application not to compete with WordPress and other blog engines, but, firstly, because it technically helped us a lot in developing the framework, and secondly, we wanted it possible and pleasant to blog based on the framework , and therefore set the task to create a convenient, balanced tool, focused excluded on blogging. In general, the framework extends its functionality to a full-fledged universal CMS, but only in conjunction with other applications.

    The “Blog” application will be useful for those who are tired of their blog engine, for those who want to have many other tools in the backend of their site in addition to the blog: a photo gallery, an online store and generally non-usual CMS tools like to-do lists, a directory contacts, mail, tasks, etc. There are many such tools in the Webasyst framework, and we are constantly releasing more and more interesting applications.

    The “Blog” is especially good in conjunction with the “ Photo ” application : after uploading photos to the “Photo” you can export them to the blog one at a time or at once in a bundle. Also, many of our customers use the “Blog” to publish news from their online stores based on Shop-Script 5 .

    Links to some sample blogs:http://www.webasyst.ru/store/app/blog/examples/

    To developers


    If you are interested in the “Blog” application, we will be glad to receive your pull requests on Github and applications for placement of plugins and design themes in the Webasyst store - recently we opened our own store of applications, plugins and design themes in which independent developers can publish their own development on a paid or free basis. Terms of publication are published here . We will be glad to cooperate and jointly develop the platform!

    GitHub: https://github.com/webasyst/webasyst-framework (the application itself is located in wa-apps / blog /)
    License: LGPL (the application is free)

    Also popular now: