
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:
- Ability to tie any cache engine (Memcached and eAccelerator are in the base assembly)
- Localization
- Cron
- Delayed mail sending
- Automatically generated forms with validation
- Jevix
- Unified storage of settings
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:
- The ability to publish and edit articles and links
- Ability to delete posts
- Drafts
- Separation of blogs into public (thematic) and personal
- Ability to create blogs
- Voting for blogs and publications
- Blog Rating
- Ability to assign administrators and moderators of blogs
- Commenting publications
- Tag Cloud
- Separation of publications into groups: popular, all, thematic and personal
- RSS publications
Users and People.- Registration with and without confirmation e-mail
- Profile Settings
- Ability to download multiple avatars
- Change Password
- User Rating
- Ability to add to friends
- Search users
Photo Gallery.- Create Albums
- Upload multiple photos at once
- Photo editing
- Photo rating
- Commenting photos
- Cloud of photos
- RSS photos
Post office.- Notify users about new comments and incoming messages
- Messaging between users (internal mail)
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