{"id":196712,"date":"2013-10-14T23:07:02","date_gmt":"2013-10-14T19:07:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=196712"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=196712","title":{"rendered":"<span class=\"post_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u0433\u0430 \u043d\u0430 CleverStyle CMS<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0414\u0430\u0432\u043d\u043e \u0443\u0434\u0438\u0432\u043b\u044f\u044e\u0441\u044c, \u043a\u0430\u043a, \u0431\u044b\u0432\u0430\u0435\u0442, \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043f\u0440\u0430\u0432\u0430 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043b\u043e\u0445\u0438\u0435, \u043d\u043e \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u043c\u0438 \u044f \u0438\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443. \u0410 \u0432\u0441\u0451 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443: \u0438\u0445 \u0446\u0435\u043b\u044c \u2014 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442. \u041d\u043e, \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c\u0443 \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u043f\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442, \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0437\u0430\u0434\u0430\u0447\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u0433\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435 Zend Framework 2, <a href=\"http:\/\/habrahabr.ru\/post\/192522\/\">\u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b<\/a> <a href=\"http:\/\/habrahabr.ru\/users\/rrromka\/\" class=\"user_link\">rrromka<\/a>, \u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 CleverStyle CMS.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438<\/h4>\n<p>  \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 CleverStyle CMS \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0443\u0436\u0435 3 \u0433\u043e\u0434\u0430. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u0437-\u0437\u0430 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0442\u043e\u0433\u043e, \u0441 \u0447\u0435\u043c \u044f \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0435\u0434\u0435\u0442\u0441\u044f \u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 CMS (\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442). \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u043e\u043c \u0432\u0438\u0434\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439, \u0430 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u2014 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u0441\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043b\u044e\u0431\u044b\u043c \u043d\u0443\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041d\u0443 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u2014 \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0445\u0430\u0431\u0440\u0430\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443 \u0437\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u043a\u0440\u0438\u0442\u0438\u043a\u0443 <a href=\"http:\/\/habrahabr.ru\/post\/186056\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>: \u0432\u044b \u043f\u043e\u043c\u043e\u0433\u043b\u0438 \u043c\u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u0432\u0437\u0433\u043b\u044f\u0434\u044b \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438, \u0441\u0442\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0438\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c CleverStyle CMS \u0432 \u043b\u0443\u0447\u0448\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443.<\/p>\n<h4>\u041e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u0435\u043d \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0411\u0414 \u0441 \u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u0430\u043c\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<br \/>  \u0414\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d composer \u0438\u043b\u0438 \u0435\u0449\u0451 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0434\u0430\u0436\u0435 \u0430\u0440\u0445\u0438\u0432\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. \u0411\u0440\u043e\u0441\u0430\u0435\u0442\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0435 \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0442\u0430\u043a\u043e\u0435 \u043e\u043a\u043e\u0448\u043a\u043e:<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/a55\/446\/037\/a55446037d979561e4501c48b97fce91.png\" alt=\"image\"\/><br \/>  \u0417\u0430\u043f\u043e\u043b\u043d\u0438\u0432 \u0432\u0441\u0435 \u043f\u043e\u043b\u044f, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0414\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u0441\u0430\u043c \u0441\u0435\u0431\u044f \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u0442, \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u043e \u0438 \u0443\u0434\u0430\u043b\u0438\u0442 \u0441\u0430\u043c \u0441\u0435\u0431\u044f \u0432 \u0446\u0435\u043b\u044f\u0445 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0423\u0436\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u044d\u0442\u043e\u0433\u043e \u044d\u0442\u0430\u043f\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443, \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0442\u044b\u0441\u044f\u0447 \u043c\u0435\u043b\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e ftp\/ssh.<\/p>\n<h4>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f<\/h4>\n<p>  \u0421\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0432 <a href=\"https:\/\/github.com\/nazar-pc\/CleverStyle-CMS\/wiki\">wiki<\/a>, \u043d\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u043f\u043e \u0445\u043e\u0434\u0443 \u0441\u0442\u0430\u0442\u044c\u0438.<br \/>  \u0421\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0441 \u043a\u043b\u0430\u0441\u0441\u0430 Posts, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u043d\u0430\u0434 \u0411\u0414 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u043e\u0441\u0442\u0430\u043c\u0438. \u0422\u0430\u043a \u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, API, \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0442\u0430-\u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0434\u0432\u0438\u0436\u043a\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c\u044b\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/tree\/master\/components\/modules\/MyBlog\">components\/modules\/MyBlog<\/a> \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<h4>\u0411\u0414<\/h4>\n<p>  \u041f\u043e\u0441\u0442 \u0432 \u0431\u043b\u043e\u0433\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u0430\u0432\u0442\u043e\u0440\u0430 \u0438 \u0434\u0430\u0442\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f. \u041a\u0430\u043a \u043f\u0440\u0438\u0432\u0435\u0440\u0436\u0435\u043d\u0435\u0446 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u043b\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432 PhpMyAdmin \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e:<\/p>\n<pre><code class=\"sql\">CREATE TABLE IF NOT EXISTS `[prefix]myblog_posts` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,   `user` int(10) unsigned NOT NULL,   `title` varchar(1024) NOT NULL,   `text` text NOT NULL,   `date` bigint(20) unsigned NOT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; <\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0437\u0430\u043c\u0435\u043d\u0435\u043d \u043d\u0430 <code>[prefix]<\/code> \u0434\u043b\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, CMS \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u0430\u043c\u0430.<br \/>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/meta\/install_db\/posts\/MySQLi.sql\">components\/modules\/MyBlog\/meta\/install_db\/posts\/MySQLi.sql<\/a> \u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0443\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 SQL. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432 \u0411\u0414. \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/meta\/uninstall_db\/posts\/MySQLi.sql\">components\/modules\/MyBlog\/meta\/uninstall_db\/posts\/MySQLi.sql<\/a>:<\/p>\n<pre><code class=\"sql\">DROP TABLE `[prefix]myblog_posts`; <\/code><\/pre>\n<p>  MySQLi \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u043a\u0430 \u0411\u0414, \u043e\u043d \u043f\u043e\u043a\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439,<br \/>  posts \u2014 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0411\u0414 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439, \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432 MySQL\/MariaDB, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u2014 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432 PostgreSQL).<br \/>  \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 posts \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u0432 <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/meta\/db.json\">components\/modules\/MyBlog\/meta\/db.json<\/a>:<\/p>\n<pre><code class=\"javascript\">[ \t&quot;posts&quot; ] <\/code><\/pre>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0441 \u0411\u0414 \u0432\u0441\u0451. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0443\u0434\u0430\u043b\u044f\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<h4>\u041a\u043b\u0430\u0441\u0441 Posts<\/h4>\n<p>  \u041a\u043b\u0430\u0441\u0441 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/Posts.php\">components\/modules\/MyBlog\/Posts.php<\/a> \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d cs\\modules\\MyBlog \u2014 \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 CMS \u043d\u0430\u0439\u0442\u0438 \u0435\u0433\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">namespace\tcs\\modules\\MyBlog; use\t\t\tcs\\Config, \t\t\tcs\\Cache\\Prefix, \t\t\tcs\\DB\\Accessor, \t\t\tcs\\Language, \t\t\tcs\\User, \t\t\tcs\\Singleton;  \/**  * Class Posts for posts manipulation  *  * @method static \\cs\\modules\\MyBlog\\Posts instance($check = false)  *\/ class Posts extends Accessor { \tuse Singleton;  \t\/** \t * Cache object instance \t * \t * @var Prefix \t *\/ \tprotected $cache;  \tprotected function construct () { \t\t\/** \t\t * Save instance of cache object with prefix MyBlog (will be added to every item) \t\t *\/ \t\t$this-&gt;cache\t= new Prefix('MyBlog'); \t} \t\/** \t * Required by abstract Accessor class \t * \t * @return int\tDatabase index \t *\/ \tprotected function cdb () { \t\treturn Config::instance()-&gt;module('MyBlog')-&gt;db('posts'); \t} \t\/** \t * Get post \t * \t * @param int|int[]\t\t$id \t * \t * @return array|bool \t *\/ \tfunction get ($id) { \t\tif (is_array($id)) { \t\t\tforeach ($id as &$i) { \t\t\t\t$i\t= $this-&gt;get($i); \t\t\t} \t\t\treturn $id; \t\t} \t\t$id\t= (int)$id; \t\t\/** \t\t * Try to get item from cache, if not found - get it from database and save in cache \t\t *\/ \t\treturn $this-&gt;cache-&gt;get(&quot;posts\/$id&quot;, function () use ($id) { \t\t\tif ($data = $this-&gt;db()-&gt;qf([\t\/\/Readable database, Query, Fetch \t\t\t\t&quot;SELECT \t\t\t\t\t`id`, \t\t\t\t\t`user`, \t\t\t\t\t`title`, \t\t\t\t\t`text`, \t\t\t\t\t`date` \t\t\t\tFROM `[prefix]myblog_posts` \t\t\t\tWHERE `id` = '%d' \t\t\t\tLIMIT 1&quot;, \t\t\t\t$id \t\t\t])) { \t\t\t\t$L\t\t\t\t\t= Language::instance(); \t\t\t\t$data['datetime']\t= $L-&gt;to_locale(date($L-&gt;_datetime_long, $data['date'])); \t\t\t\t$data['username']\t= User::instance()-&gt;username($data['user']); \t\t\t} \t\t\treturn $data; \t\t}); \t} \t\/** \t * Add post \t * \t * @param string\t$title \t * @param string\t$text \t * \t * @return bool|int\t\t\tId of created post or &lt;b&gt;false&lt;\/b&gt; on failure \t *\/ \tfunction add ($title, $text) { \t\t$user\t= User::instance()-&gt;id;\t\/\/User id \t\t$title\t= xap($title);\t\t\t\/\/XSS filter \t\t$text\t= xap($text, true);\t\t\/\/XSS filter, allow html tags \t\t$date\t= TIME;\t\t\t\t\t\/\/Current timestamp \t\tif ($this-&gt;db_prime()-&gt;q(\t\t\/\/Writable database, Query \t\t\t&quot;INSERT INTO `[prefix]myblog_posts` \t\t\t\t( \t\t\t\t\t`user`, \t\t\t\t\t`title`, \t\t\t\t\t`text`, \t\t\t\t\t`date` \t\t\t\t) VALUES ( \t\t\t\t\t'%d', \t\t\t\t\t'%s', \t\t\t\t\t'%s', \t\t\t\t\t'%d' \t\t\t\t)&quot;, \t\t\t$user, \t\t\t$title, \t\t\t$text, \t\t\t$date \t\t)) { \t\t\t\/** \t\t\t * Delete total count of posts \t\t\t *\/ \t\t\tunset($this-&gt;cache-&gt;total_count); \t\t\treturn $this-&gt;db_prime()-&gt;id(); \t\t} \t\treturn false; \t} \t\/** \t * Edit post \t * \t * @param int\t\t$id \t * @param string\t$title \t * @param string\t$text \t * \t * @return bool \t *\/ \tfunction set ($id, $title, $text) { \t\t$id\t\t= (int)$id; \t\t$title\t= xap($title);\t\t\t\/\/XSS filter \t\t$text\t= xap($text, true);\t\t\/\/XSS filter, allow html tags \t\tif ($this-&gt;db_prime()-&gt;q(\t\t\/\/Writable database, Query \t\t\t&quot;UPDATE `[prefix]myblog_posts` \t\t\tSET \t\t\t\t`title`\t= '%s', \t\t\t\t`text`\t= '%s' \t\t\tWHERE `id` = '%d' \t\t\tLIMIT 1&quot;, \t\t\t$title, \t\t\t$text, \t\t\t$id \t\t)) { \t\t\t\/** \t\t\t * Delete cached item if any \t\t\t *\/ \t\t\tunset($this-&gt;cache-&gt;{&quot;posts\/$id&quot;}); \t\t\treturn true; \t\t} \t\treturn false; \t} \t\/** \t * Delete post \t * \t * @param int\t$id \t * \t * @return bool \t *\/ \tfunction del ($id) { \t\t$id\t= (int)$id; \t\tif ($this-&gt;db_prime()-&gt;q( \t\t\t&quot;DELETE FROM `[prefix]myblog_posts` \t\t\tWHERE `id` = '%d' \t\t\tLIMIT 1&quot; \t\t)) { \t\t\t\/** \t\t\t * Delete cached item if any, and total count of posts \t\t\t *\/ \t\t\tunset( \t\t\t\t$this-&gt;cache-&gt;{&quot;posts\/$id&quot;}, \t\t\t\t$this-&gt;cache-&gt;total_count \t\t\t); \t\t\treturn true; \t\t} \t\treturn false; \t} \t\/** \t * Get posts \t * \t * @param $page \t * \t * @return int[] \t *\/ \tfunction posts ($page = 1) { \t\t$from\t= ($page - 1) * 10 ?: 0; \t\treturn $this-&gt;db()-&gt;qfas(\t\/\/Readable database, Query, Fetch, Single, Array \t\t\t&quot;SELECT `id` \t\t\tFROM `[prefix]myblog_posts` \t\t\tORDER BY `id` DESC \t\t\tLIMIT $from, 10&quot; \t\t) ?: []; \t} \t\/** \t * Get total count of posts \t * \t * @return int \t *\/ \tfunction total_count () { \t\treturn $this-&gt;cache-&gt;get('total_count', function () { \t\t\treturn $this-&gt;db()-&gt;qfs(\t\/\/Readable database, Query, Fetch, Single \t\t\t\t&quot;SELECT COUNT(`id`) \t\t\t\tFROM `[prefix]myblog_posts`&quot; \t\t\t) ?: 0; \t\t}); \t} } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041a\u043b\u0430\u0441\u0441 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u043d\u0430\u0434 \u0411\u0414 \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0441\u0442\u043e\u0432 \u0438 \u0438\u0445 \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430. \u042d\u0442\u043e \u043a\u043b\u0430\u0441\u0441 <a href=\"http:\/\/ru.wikipedia.org\/wiki\/\u041e\u0434\u0438\u043d\u043e\u0447\u043a\u0430_(\u0448\u0430\u0431\u043b\u043e\u043d_\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f)\">\u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0430<\/a>, \u0438 \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:  <\/p>\n<ul>\n<li>get<\/li>\n<li>add<\/li>\n<li>set<\/li>\n<li>del<\/li>\n<li>posts<\/li>\n<li>total_count<\/li>\n<\/ul>\n<p>  \u0421\u0430\u043c \u043a\u043b\u0430\u0441\u0441 \u043d\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0411\u0414 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0447\u0442\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0437\u0430\u043f\u0438\u0441\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u043e \u043d\u0435 \u0432\u0430\u0436\u043d\u043e, \u043d\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0435\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0411\u0414 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438, \u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f; \u044d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0441 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043e\u0439  <\/div>\n<\/div>\n<p>  \u041a\u043e\u0434 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f IDE.<\/p>\n<h4>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/h4>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f json \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u044f. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/index.json\">components\/modules\/MyBlog\/index.json<\/a> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0448\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438:<\/p>\n<pre><code class=\"javascript\">{ \t&quot;list&quot;\t: [], \t&quot;post&quot;\t: [ \t\t&quot;view&quot;, \t\t&quot;add&quot;, \t\t&quot;edit&quot;, \t\t&quot;delete&quot; \t] } <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0443\u0442\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<ul>\n<li>MyBlog\/list<\/li>\n<li>MyBlog\/list\/{page}<\/li>\n<li>MyBlog\/post\/add<\/li>\n<li>MyBlog\/post\/view\/{id}<\/li>\n<\/ul>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0444\u0430\u0439\u043b\u043e\u0432:  <\/p>\n<ul>\n<li>list.php<\/li>\n<li>post\/add.php<\/li>\n<li>post\/delete.php<\/li>\n<li>post\/edit.php<\/li>\n<li>post\/view.php<\/li>\n<\/ul>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u044b\u0448\u0435 \u2014 CMS \u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445.<br \/>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/list.php\">list.php<\/a>:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">namespace\tcs\\modules\\MyBlog; use\t\t\tcs\\Config, \t\t\tcs\\Page, \t\t\th; $rc\t\t\t\t= Config::instance()-&gt;route; $page\t\t\t= 1; if (isset($rc[1]) && $rc[1]) { \t$page\t= (int)$rc[1]; } $Page\t\t\t= Page::instance(); $Posts\t\t\t= Posts::instance(); $total_count\t= $Posts-&gt;total_count(); $Page-&gt;content( \th::{'a.cs-button-compact'}( \t\th::icon('plus').' \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0441\u0442', \t\t[ \t\t\t'href'\t=&gt; 'MyBlog\/post\/add' \t\t] \t) ); if (!$total_count) { \t$Page-&gt;content( \t\th::{'p.cs-center.uk-text-info'}('\u041f\u043e\u043a\u0430 \u043d\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u0432') \t); \treturn; } $Page-&gt;title('\u041c\u043e\u0439 \u0431\u043b\u043e\u0433'); if ($page &gt; 1) { \t$Page-&gt;title(&quot;\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 $page&quot;); } $Page-&gt;content( \th::{'section article.cs-myblog-posts'}( \t\th::{'h1 a[href=MyBlog\/post\/$i[id]]'}('$i[title]'). \t\th::div('$i[text]'). \t\th::footer('$i[datetime], $i[username]'), \t\t[ \t\t\t'insert'\t=&gt; $Posts-&gt;get($Posts-&gt;posts($page)) \t\t] \t). \t( \t\t$total_count &gt; 10 ? h::{'div.cs-center'}(pages($page, ceil($total_count \/ 10), function ($page) { \t\t\treturn $page &lt; 2 ? 'MyBlog' : &quot;MyBlog\/list\/$page&quot;; \t\t})) : '' \t) ); <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u0443 \u043d\u0430\u0441 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u043c\u043e\u0434\u0443\u043b\u044f.<br \/>  <code>Config::instance()-&gt;route<\/code> \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0443\u0442\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f <code>MyBlog\/list\/3<\/code> \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043c\u0430\u0441\u0441\u0438\u0432 <code>['list', 3]<\/code>. \u0412 \u0446\u0435\u043b\u043e\u043c, \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0432\u044b\u0448\u0435 \u0444\u0430\u0439\u043b\u044b \u044f\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f + \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<h4>API<\/h4>\n<p>  \u0414\u0430, \u0432\u043d\u0435\u0448\u043d\u0438\u0439 API \u043c\u044b \u0432 \u0441\u0430\u043c\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u043c, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0435\u0433\u043e (\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f). \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u043f\u043e\u0441\u0442\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u0431\u0435\u0437 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b). \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0432 <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/tree\/master\/components\/modules\/MyBlog\/api\">components\/modules\/MyBlog\/api<\/a> \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u043e\u0432:  <\/p>\n<ul>\n<li>index.delete.php<\/li>\n<li>index.get.php<\/li>\n<li>index.post.php<\/li>\n<li>index.put.php<\/li>\n<\/ul>\n<p>  \u0414\u0443\u043c\u0430\u044e, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e \u0441\u0435\u0431\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0412 \u0441\u0430\u043c\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 index.json \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u2014 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u0447\u043a\u0443 index \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 DELETE\/GET\/POST\/PUT \u0438 CMS \u043d\u0430\u0439\u0434\u0435\u0442 \u044d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u0441\u0430\u043c\u0430. \u0421\u0443\u0444\u0444\u0438\u043a\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 API \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438 \u043f\u0440\u0438 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0441 index.json. \u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a API:  <\/p>\n<blockquote><p>POST api\/MyBlog<br \/>  {<br \/>   \u00abtitle\u00bb: \u00abBlog post title\u00bb,<br \/>   \u00abtext\u00bb: \u00abBlog post content\u00bb<br \/>  }<\/p><\/blockquote>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c JSON, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c Content-type: application\/json.<br \/>  \u0412 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u0434\u0435\u0442 \u043b\u0438\u0431\u043e:  <\/p>\n<blockquote><p>201 Created<br \/>  \u2026<br \/>  {<br \/>   \u00abid\u00bb: \u00ab5\u00bb<br \/>  }<\/p><\/blockquote>\n<p>  \u041b\u0438\u0431\u043e \u043a\u043e\u0434 \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435.<br \/>  \u0412\u043e\u0442 \u0444\u0430\u0439\u043b <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/api\/index.post.php\">index.post.php<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044d\u0442\u0438\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"php\">namespace\tcs\\modules\\MyBlog; use\t\t\tcs\\Page; if (!isset($_POST['title'], $_POST['text'])) { \terror_code(400); \treturn; } if ($post = Posts::instance()-&gt;add($_POST['title'], $_POST['text'])) { \tcode_header(201); \tPage::instance()-&gt;json([ \t\t'id'\t=&gt; $post \t]); } else { \terror_code(500); } <\/code><\/pre>\n<p>  <code>Page::instance()-&gt;json()<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u043e\u043d\u0438 \u0435\u0441\u0442\u044c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u044b), \u0430 \u043c\u0435\u0442\u043e\u0434 \u0443\u0436\u0435 \u0441\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u0442 JSON \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438. \u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043d\u0430 \u0441\u0447\u0451\u0442 <code>error_code()<\/code>, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u2014 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<h4>\u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a<\/h4>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0444\u0430\u0439\u043b <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/meta.json\">components\/modules\/MyBlog\/meta.json<\/a> \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439:<\/p>\n<pre><code class=\"javascript\">{ \t&quot;package&quot;\t\t\t\t: &quot;MyBlog&quot;, \t&quot;category&quot;\t\t\t\t: &quot;modules&quot;, \t&quot;version&quot;\t\t\t\t: &quot;0.0.2&quot;, \t&quot;description&quot;\t\t\t: &quot;Simple demo blog module&quot;, \t&quot;author&quot;\t\t\t\t: &quot;Nazar Mokrynskyi&quot;, \t&quot;website&quot;\t\t\t\t: &quot;cleverstyle.org\/cms&quot;, \t&quot;license&quot;\t\t\t\t: &quot;MIT License&quot;, \t&quot;db_support&quot;\t\t\t: [ \t\t&quot;MySQLi&quot; \t], \t&quot;provide&quot;\t\t\t\t: &quot;myblog&quot;, \t&quot;optional&quot;\t\t\t\t: [ \t\t&quot;editor&quot; \t], \t&quot;languages&quot;\t\t\t\t: [ \t\t&quot;\u0420\u0443\u0441\u0441\u043a\u0438\u0439&quot; \t] } <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u2014 \u0434\u043e\u0431\u0430\u0432\u0438\u043c <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/license.txt\">components\/modules\/MyBlog\/license.txt<\/a>, \u0430 \u0442\u0430\u043a \u0436\u0435 <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/prepare.php\">components\/modules\/MyBlog\/prepare.php<\/a> \u0438 <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\/blob\/master\/components\/modules\/MyBlog\/languages\/\u0420\u0443\u0441\u0441\u043a\u0438\u0439.json\">components\/modules\/MyBlog\/languages\/\u0420\u0443\u0441\u0441\u043a\u0438\u0439.json<\/a> \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0441\u0442\u0430 \u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f.<br \/>  \u041d\u0443 \u0432\u043e\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e \u2014 \u0431\u0435\u0440\u0435\u043c \u0438\u0437 <a href=\"https:\/\/github.com\/nazar-pc\/CleverStyle-CMS\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f CleverStyle CMS<\/a> \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0435\u0431\u0435 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0441\u0430\u0439\u0442\u0430:  <\/p>\n<ul>\n<li>build<\/li>\n<li>install<\/li>\n<li>build.php<\/li>\n<li>install.php<\/li>\n<\/ul>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 .htaccess \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u0447\u0435\u043a (\u0447\u0442\u043e\u0431\u044b \u0434\u0432\u0438\u0436\u043e\u043a \u043d\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u043b \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443):  <\/p>\n<blockquote><p>&lt;Files build.php&gt;<br \/>   RewriteEngine Off<br \/>  &lt;\/Files&gt;  <\/p><\/blockquote>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 <code>build.php<\/code>, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c Module, \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c MyBlog, \u043a\u043b\u0438\u043a\u0430\u0435\u043c Build.<br \/>  \u0412 \u043a\u043e\u0440\u043d\u0435 \u0441\u0430\u0439\u0442\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0444\u0430\u0439\u043b <code>MyBlog_0.0.2.phar.php<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043f\u0438\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<h4>\u0427\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u0441\u0434\u0435\u043b\u0430\u0442\u044c<\/h4>\n<p>  \u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u0430 \u0441\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0441\u0442\u043e\u0432:  <\/p>\n<ul>\n<li>\u0441\u043e\u0437\u0434\u0430\u0442\u044c components\/modules\/MyBlog\/includes\/.htaccess<br \/> <br \/>\n<blockquote><p>Allow from all<br \/>  RewriteEngine Off  <\/p><\/blockquote>\n<p>  <\/li>\n<li>\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 components\/modules\/MyBlog\/includes\/css \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u0442\u0438\u043b\u0435\u0439, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u0445 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442 (\u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e JavaScript \u0432 components\/modules\/MyBlog\/includes\/js) \u0438\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0444\u0430\u0439\u043b\u044b \u0432 production \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u0438 \u0441\u0436\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e gzip, \u0430 \u0432 css \u0444\u0430\u0439\u043b\u0430\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0447\u0438\u0449\u0430\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0438 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 css \u0441\u0442\u0438\u043b\u0438, \u0448\u0440\u0438\u0444\u0442\u044b, \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u0441\u0451 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435<\/div>\n<\/div>\n<p>  <\/li>\n<\/ul>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u043e\u0437\u0434\u0430\u043d <a href=\"https:\/\/github.com\/nazar-pc\/MyBlog\">\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/a><br \/>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0449\u0435 \u043d\u0435\u043a\u0443\u0434\u0430, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e \u0434\u0443\u0448\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435.<br \/>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c \u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043a\u0440\u0438\u0442\u0438\u043a\u0435.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/196712\/\"> http:\/\/habrahabr.ru\/post\/196712\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0414\u0430\u0432\u043d\u043e \u0443\u0434\u0438\u0432\u043b\u044f\u044e\u0441\u044c, \u043a\u0430\u043a, \u0431\u044b\u0432\u0430\u0435\u0442, \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043f\u0440\u0430\u0432\u0430 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043f\u043b\u043e\u0445\u0438\u0435, \u043d\u043e \u0438 \u0445\u043e\u0440\u043e\u0448\u0438\u043c\u0438 \u044f \u0438\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443. \u0410 \u0432\u0441\u0451 \u0432\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443: \u0438\u0445 \u0446\u0435\u043b\u044c \u2014 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442. \u041d\u043e, \u043f\u043e \u043c\u043e\u0435\u043c\u0443 \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c\u0443 \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043c\u043d\u0435\u043d\u0438\u044e, \u0441 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u043f\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442, \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u2014 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0437\u0430\u0434\u0430\u0447\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0431\u043b\u043e\u0433\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0435 Zend Framework 2, <a href=\"http:\/\/habrahabr.ru\/post\/192522\/\">\u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b<\/a> <a href=\"http:\/\/habrahabr.ru\/users\/rrromka\/\" class=\"user_link\">rrromka<\/a>, \u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 CleverStyle CMS.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-196712","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/196712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=196712"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/196712\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=196712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=196712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=196712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}