📜 ⬆️ ⬇️

Explay 3

Explay CMS 3 Good day,% username%! Now I will tell you about my CMS. This time it is a CMS, which is not suitable for a corporate site, there is no store module for it and it does not know how to work with 1C.

Explay CMS is a free social network management system. Basic features allow you to organize a full-fledged blog-social network or community.

About the engine


Development speed


The third version of Explay CMS is designed primarily for developers. For the good life of which, it was written something like a framework - the core. But unlike the usual framework, the kernel sets a rigid framework for the structure and writing of business logic, and also assumes 90% of the routine work. In order to understand what kind of “routine” we are talking about, it must be said that the ORM principle is used in the system, that is, roughly speaking, everything is based on working with objects. The kernel assumes the responsibility of fetching objects from the database and cache, saving and creating new objects. Thus, the developer does not require knowledge of SQL or the basics of working with the caching engine (looking ahead to say that he does not even need to know which template engine is used) and writing the module takes very little time.

Custom fields


The basis of the third version of Explay is the idea - to enable site developers to create their own fields for articles, users and everything else. In this regard, there are three fundamental terms: "object", "type of object" and "field". Each “object” is a representative of its “type”, and each type is described by “fields” (afterwards the properties of the object itself). As you understand, to create a new property, for example, for a user, it is enough to create a new field, and then this property / field will immediately be available in the profile editing form. If you go further, you can easily create new types of blog posts, for example, podcasts or polls. This topic is worth a separate article, so I will not go into it now.
')
The function of creating new fields is supposed to be introduced in the admin panel, but, unfortunately, it does not exist yet, it will definitely appear in version 3.1.

Formats


Perhaps I will omit the paragraph about OOP and MVC and go directly to the tasty - formats. Formats is a conceptual idea, the essence of which is that the site can give the content of the same page in different formats (HTML, XML or even YML). This idea occurred to me when I decided how to arrange RSS: I was too lazy to append modules and create new templates, and I came to the conclusion that the rss return must be somehow automated. Thanks to the ORM, this was not difficult; the engine already knew how to give the lists of objects returned by the module as an XML table, so all I had to do was logically connect the switching of formats between HTML, XML and RSS. Now, in order to “teach” the engine a new format, it is enough to describe it in a certain class and add one line to index.php.

All objects (articles, photos, users, etc.) can be obtained in XML format by adding in the address bar ".xml" - ready API for your site :)

Connection of modules and templates


There is no connection between the modules and templates (the template engine) - the module methods return “response objects” that are passed to the template engine, and the module itself decides what to do with the result of the module operation. By the way, based on the same “response objects”, the content is generated for any other formats.

However, if a module knows nothing about templates, then templates do the opposite — it is allowed to know the modules API. In this way, it is possible for templates to determine for themselves what data they need for a page.

By default, Explay CMS uses XSLT templates, but this does not mean that XSLT is the only option — you can use almost any other template engine, only for this you need to “train” the engine. I have plans to write a template engine in pure PHP.

Articles and comments in one list


Remember, in the old versions of Habrahabr, it was possible to view the comments and publications of the user in one list? I decided to implement this principle in the core of Explay CMS: now the developer can easily mix all possible types of objects - articles, comments, links, photos and many others.

“100 database queries per 100 comments”


Such a problem was, but it was successfully resolved, I apologize if I was frightened by someone in the January post . Here I also want to note good performance when working with enabled cache.

Other features of theses:



Opportunities


In fact, Explay CMS repeats the functionality of Habrahabr, but there was no copying of all goals, only the basic principles of organizing blogging were taken.

I will give a description of the main modules:

Blogs. The blog module implements almost the entire function, which should have a blog-social network:

Users and People.

Photo Gallery.

Post office.

Tape. Tape is a completely new module, analogue of the Vkontakte news, where the user can see the tape (log) of the actions of his friends. The following actions are logged: new publications, connecting to blogs, adding friends and photos.

Comments Unified comments system on Ajax, the ability to delete comments.

Update system


In my opinion, each CMS should have an update system. And its presence provides not only a convenient mechanism for updating the code and an item for the marketer, but also very important in the case of security updates. In the third version of Explay CMS, to update the system, it is enough to download the ZIP archive into the mini admin panel. Since updates are collected automatically, I think there will be no shortage of them.

By the way, all Explay CMS “assemblies” now builds a special script, so if you get a file whose value is difficult to determine, this is the work of the “compiler” :)

System requirements


- Apache
- PHP 5.2
- MySQL 5.0
- XSLT
- Multibyte String
- GD 2
- zlib
- Mod Rewrite

Download


The official download page , as well as SVN on Google Code.

Thanks for attention! Waiting for critics.

PS: Unfortunately, I do not have a server on which to run CMS, but there are no volunteer demo sites left. If anyone has the opportunity to make a demo site, I will be grateful.

UPD: explay.gengine-dev.net

Source: https://habr.com/ru/post/61963/


All Articles