{"id":338420,"date":"2022-09-15T21:00:21","date_gmt":"2022-09-15T21:00:21","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=338420"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=338420","title":{"rendered":"<span>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Joomla 4<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>Joomla 4 &#171;\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c&#187; \u043f\u0440\u0435\u0442\u0435\u0440\u043f\u0435\u043b\u0430 \u043d\u0435\u043c\u0430\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. \u0415\u0451 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442 \u0434\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0439, \u0432\u0432\u043e\u0434\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0432 \u044f\u0434\u0440\u043e CMS. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0431\u044b\u043b\u0430 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u043c\u0438 \u043d\u0430 \u0442\u0435\u043c\u0443 include, \u0442\u043e \u0432 Joomla 4 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043b\u043e\u0430\u0434\u0435\u0440, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u043a PSR-4. \u042f\u0434\u0440\u043e CMS \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u044b DI-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 <a href=\"https:\/\/github.com\/joomla\/joomla-cms\/discussions\/38407#discussioncomment-3472706\" rel=\"noopener noreferrer nofollow\">\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430.<\/a> \u042d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043b\u0435\u043a\u0443\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f Joomla 4 \u0441 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u041a \u0441\u043b\u043e\u0432\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, legacy \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043a\u0430\u043d\u043e\u043d\u0430\u043c Joomla 3 (\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0435 \u043d\u0430 Joomla 3, \u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043a\u0430\u043d\u043e\u043d\u0430\u043c Joomla 1.5) \u0435\u0449\u0451 \u0434\u043e\u043b\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 Joomla 4.<\/p>\n<h2>\u041e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u042f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Joomla, \u043d\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u044b\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u0421\u0442\u0430\u0442\u044c\u044f \u0438\u043c\u0435\u0435\u0442 \u0441\u0443\u0433\u0443\u0431\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440, \u0431\u0435\u0437 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043e\u0440\u0438\u044e \u041e\u041e\u041f \u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432 Joomla. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c &#8212; \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e &#171;\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438&#187;, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u044f \u0431\u0443\u0434\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f <strong>WT Yandex map items<\/strong> &#8212; <a href=\"https:\/\/web-tolk.ru\/dev\/joomla-modules\/wt-yandex-map-items.html\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 Joomla \u043d\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u043a\u0430\u0440\u0442\u044b<\/a> \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Joomla 4, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 namespace \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0432\u043e\u0438.<\/p>\n<h2>\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f Joomla 3 vs Joomla 4 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430<\/h2>\n<h3>\u0411\u044b\u043b\u043e (Joomla 3)<\/h3>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e47\/406\/386\/e474063868c70468bacfd4801a620536.png\" alt=\"\u0421\u0442\u0430\u0440\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f Joomla 3\" title=\"\u0421\u0442\u0430\u0440\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f Joomla 3\" width=\"282\" height=\"202\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e47\/406\/386\/e474063868c70468bacfd4801a620536.png\"\/><figcaption>\u0421\u0442\u0430\u0440\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f Joomla 3<\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c 3 \u0444\u0430\u0439\u043b\u0430: <\/p>\n<ul>\n<li>\n<p><strong>mod_wtyandexmapitems.xml<\/strong> &#8212; \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 Joomla (\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0438\u043c\u044f, \u0434\u0430\u0442\u0430, \u0432\u0435\u0440\u0441\u0438\u044f, \u0441\u0430\u0439\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0442.\u0434.), \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<li>\n<p><strong>mod_wtyandexmapitems.php<\/strong> &#8212; &#171;\u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430&#187; \u0432 \u043c\u043e\u0434\u0443\u043b\u044c. \u0421 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0412\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>tmpl\/default.php<\/strong> &#8212; \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f. \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f HTML-\u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u0412\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 HTML \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0432\u043a\u0443\u0441\u0443 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430. <br \/>\u042d\u0442\u043e\u0442 \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u0432\u043e\u0439 PHP-\u043a\u043e\u0434 \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 Joomla &#8212; mod_custom &#8212; &#171;HTML-\u043a\u043e\u0434&#187;.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/503\/071\/b07\/503071b07995cde75030feca1a6132a1.png\" alt=\"\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u0438\u043f\u0430 HTML-\u043a\u043e\u0434 \u0432 Joomla 3.\" title=\"\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u0438\u043f\u0430 HTML-\u043a\u043e\u0434 \u0432 Joomla 3.\" width=\"243\" height=\"99\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/503\/071\/b07\/503071b07995cde75030feca1a6132a1.png\"\/><figcaption>\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u0438\u043f\u0430 HTML-\u043a\u043e\u0434 \u0432 Joomla 3.<\/figcaption><\/figure>\n<h4>\u0425\u0435\u043b\u043f\u0435\u0440 (helper) \u043c\u043e\u0434\u0443\u043b\u044f Joomla<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u0435\u043b\u0430\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043c\u043e\u0434\u0443\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p>\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u0440\u0443\u0441\u0435\u043b\u044c \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438\u043b\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0438\u0437 \u0444\u043e\u0442\u043e-\u0433\u0430\u043b\u0435\u0440\u0435\u0438 <\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e ajax (ajax-\u043a\u043e\u0440\u0437\u0438\u043d\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443)<\/p>\n<\/li>\n<\/ul>\n<p>\u0442\u043e \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435 \u044d\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443, \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0445\u0435\u043b\u043f\u0435\u0440 \u043c\u043e\u0434\u0443\u043b\u044f. \u0412 Joomla 3 \u043e\u043d \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0441\u044f \u0432 \u0444\u0430\u0439\u043b helper.php, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c php-\u0444\u0430\u0439\u043b\u043e\u043c. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u0431\u044b\u043b\u043e \u0432 &#171;\u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430&#187; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>JLoader::register('ModWtyandexmapitemsHelper', __DIR__ . '\/helper.php');<\/code><\/p>\n<h3>\u0421\u0442\u0430\u043b\u043e (Joomla 4)<\/h3>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6b7\/541\/ea9\/6b7541ea9d6c05a1432ca0385705507b.png\" alt=\"\u041d\u043e\u0432\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f Joomla 4\" title=\"\u041d\u043e\u0432\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f Joomla 4\" width=\"371\" height=\"423\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6b7\/541\/ea9\/6b7541ea9d6c05a1432ca0385705507b.png\"\/><figcaption>\u041d\u043e\u0432\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f Joomla 4<\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0432 Joomla 4 \u043d\u0443\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b (\u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0440\u0430\u0434\u0438): <\/p>\n<h4>\u0424\u0430\u0439\u043b mod_wtyandexmapitems.xml<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 Joomla (\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0438\u043c\u044f, \u0434\u0430\u0442\u0430, \u0432\u0435\u0440\u0441\u0438\u044f, \u0441\u0430\u0439\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0442.\u0434.), \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439, <strong>\u0430 \u0442\u0430\u043a\u0436\u0435<\/strong> <strong>\u0437\u0430\u0434\u0430\u0451\u0442 Namespace \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/strong>. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5ec\/72c\/a31\/5ec72ca31b9d5acc0498f91ceb23c389.png\" alt=\"Namespace Joomla\\Module\\Wtyandexmapitems \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 modules\/mod_wtyandexmapitems\/src\" title=\"Namespace Joomla\\Module\\Wtyandexmapitems \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 modules\/mod_wtyandexmapitems\/src\" width=\"539\" height=\"81\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ec\/72c\/a31\/5ec72ca31b9d5acc0498f91ceb23c389.png\"\/><figcaption>Namespace Joomla\\Module\\Wtyandexmapitems \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 modules\/mod_wtyandexmapitems\/src<\/figcaption><\/figure>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?> &lt;extension type=\"module\" client=\"site\" method=\"upgrade\"> &lt;name>MOD_WTYANDEXMAPITEMS&lt;\/name> &lt;author>Sergey Tolkachyov&lt;\/author> &lt;creationDate>13\/09\/2022&lt;\/creationDate> &lt;copyright>(C) 2022 Sergey Tolkachyov.&lt;\/copyright> &lt;license>GNU General Public License version 2 or later&lt;\/license> &lt;authorEmail>info@web-tolk.ru&lt;\/authorEmail> &lt;authorUrl>https:\/\/web-tolk.ru&lt;\/authorUrl> &lt;version>1.0.0&lt;\/version> &lt;description>MOD_WTYANDEXMAPITEMS_DESC&lt;\/description> &lt;namespace path=\"src\">Joomla\\Module\\Wtyandexmapitems&lt;\/namespace> &lt;files> &lt;folder module=\"mod_wtyandexmapitems\">src&lt;\/folder> &lt;folder>language&lt;\/folder> &lt;folder>services&lt;\/folder> &lt;folder>tmpl&lt;\/folder> &lt;\/files> &lt;languages> &lt;language tag=\"en-GB\">language\/en-GB\/mod_wtyandexmapitems.ini&lt;\/language> &lt;language tag=\"en-GB\">language\/en-GB\/mod_wtyandexmapitems.sys.ini&lt;\/language> &lt;language tag=\"ru-RU\">language\/ru-RU\/mod_wtyandexmapitems.ini&lt;\/language> &lt;language tag=\"ru-RU\">language\/ru-RU\/mod_wtyandexmapitems.sys.ini&lt;\/language> &lt;\/languages> &lt;\/extension><\/code><\/pre>\n<p><strong>\u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/strong>, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>module=\"mod_wtyandexmapitems\"<\/code> \u0432 xml-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435. \u0415\u0441\u043b\u0438 \u0432 Joomla 3 \u044d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 &#171;\u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430&#187; (<code>&lt;filename module=\"mod_wtyandexmapitems\">mod_wtyandexmapitems.php&lt;\/filename><\/code>), \u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0430\u043f\u043a\u0438 <code>src<\/code> \u043c\u043e\u0434\u0443\u043b\u044f &#8212; <code>&lt;folder module=\"mod_wtyandexmapitems\">src&lt;\/folder><\/code>  .<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e <strong>\u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438<\/strong>: \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u044f\u0437\u044b\u043a\u0430 &#8212; &#171;ru-RU.mod_wtyandexmapitems.ini&#187;. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 &#171;ru-RU&#187;.<\/p>\n<h4>\u0424\u0430\u0439\u043b services\/provider.php<\/h4>\n<p>\u0424\u0430\u0439\u043b &#8212; \u0441\u0435\u0440\u0432\u0438\u0441-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0412\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041e\u043d \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Joomla, \u0447\u0442\u043e \u0412\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 namespace \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d.<\/p>\n<pre><code class=\"php\">&lt;?php \/**  * @package     WT Yandex Map items  *  * @copyright   (C) 2022 Sergey Tolkachyov  * @link https:\/\/web-tolk.ru  * @license     GNU General Public License version 2 or later  *\/  defined('_JEXEC') or die;  use Joomla\\CMS\\Extension\\Service\\Provider\\HelperFactory; use Joomla\\CMS\\Extension\\Service\\Provider\\Module; use Joomla\\CMS\\Extension\\Service\\Provider\\ModuleDispatcherFactory; use Joomla\\DI\\Container; use Joomla\\DI\\ServiceProviderInterface;  \/**  * The WT Yandex map items module service provider.  *  * @since  1.0.0  *\/ return new class implements ServiceProviderInterface { \/**  * Registers the service provider with a DI container.  *  * @param   Container  $container  The DI container.  *  * @return  void  *  * @since   4.0.0  *\/ public function register(Container $container) {            \/\/ \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 namespace \u043c\u043e\u0434\u0443\u043b\u044f $container->registerServiceProvider(new ModuleDispatcherFactory('\\\\Joomla\\\\Module\\\\Wtyandexmapitems'));         \/\/ Namespace \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u0445\u0435\u043b\u043f\u0435\u0440\u0430 $container->registerServiceProvider(new HelperFactory('\\\\Joomla\\\\Module\\\\Wtyandexmapitems\\\\Site\\\\Helper'));         \/\/ Namespace \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u0435\u0439 $container->registerServiceProvider(new HelperFactory('\\\\Joomla\\\\Module\\\\Wtyandexmapitems\\\\Site\\\\Fields')); $container->registerServiceProvider(new Module); } }; <\/code><\/pre>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f Joomla \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 PHP-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 SDK, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0430\u043f\u043a\u0435 <code>src<\/code> \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 Namespace, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0432\u0438\u0441-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0435, \u0434\u0430\u0431\u044b \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 Joomla \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043f\u0430\u043f\u043a\u0443 libraries \u0432 \u043a\u043e\u0440\u043d\u0435 \u0441\u0430\u0439\u0442\u0430, \u0430 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0438\u043c \u0443\u0436\u0435 \u043f\u043e namespace. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u0434\u043d\u043e \u0412\u0430\u0448\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0435\u0451 namespace \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d.<\/p>\n<p>\u0411\u0435\u0440\u0451\u043c \u043d\u0430 \u0437\u0430\u043c\u0435\u0442\u043a\u0443, \u0447\u0442\u043e \u0432 Namespace \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#171;\u043a\u043b\u0438\u0435\u043d\u0442&#187; \u043c\u043e\u0434\u0443\u043b\u044f &#8212; &#171;Site&#187; \u0438\u043b\u0438 &#171;Administrator&#187;.<\/p>\n<h4>\u0424\u0430\u0439\u043b src\/Dispatcher\/Dispatcher.php<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043c\u0430\u043a\u0435\u0442 (layout).<\/p>\n<pre><code class=\"php\">&lt;?php \/**  * @package     WT Yandex Map items  *  * @copyright   (C) 2022 Sergey Tolkachyov  * @link https:\/\/web-tolk.ru  * @license     GNU General Public License version 2 or later  *\/  namespace Joomla\\Module\\Wtyandexmapitems\\Site\\Dispatcher;  \\defined('JPATH_PLATFORM') or die;  use Joomla\\CMS\\Application\\CMSApplicationInterface; use Joomla\\CMS\\Dispatcher\\AbstractModuleDispatcher; use Joomla\\CMS\\Extension\\ModuleInterface; use Joomla\\Input\\Input; use Joomla\\Module\\Wtyandexmapitems\\Site\\Helper\\WtyandexmapitemsHelper; use Joomla\\Registry\\Registry;  \/**  * Dispatcher class for mod_wtyandexmapitems  *  * @since  1.0.0  *\/ class Dispatcher extends AbstractModuleDispatcher {  \/**  * The module extension. Used to fetch the module helper.  *  * @var   ModuleInterface|null  * @since 1.0.0  *\/ private $moduleExtension;   public function __construct(\\stdClass $module, CMSApplicationInterface $app, Input $input) { parent::__construct($module, $app, $input);  $this->moduleExtension = $this->app->bootModule('mod_wtyandexmapitems', 'site'); }  \/**  * Returns the layout data.  *  * @return  array  *  * @since   1.0.0  *\/ protected function getLayoutData() { $data = parent::getLayoutData();         \/\/ \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 Namespace $data['placemarks'] = (new WtyandexmapitemsHelper)->getPlacemarks($data['params'], $this->getApplication());                \/\/ \u0418\u041b\u0418         \/\/ \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 $this->moduleExtension,         \/\/ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430         $helper = $this->moduleExtension->getHelper('WtyandexmapitemsHelper');                  \/\/ \u0418\u041b\u0418         \/\/ \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430,         \/\/ \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044f \u043c\u043e\u0434\u0443\u043b\u044c \u0432 $this->moduleExtension.         \/\/ \u0422\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 $this->moduleExtension \u0432 __construct()  \u043d\u0435 \u043d\u0443\u0436\u043d\u0430.         $helper = $this->app->bootModule('mod_wtyandexmapitems', 'Site')->getHelper('WtyandexmapitemsHelper');                  $data['placemarks'] = $helper->getPlacemarks($data['params'], $this->getApplication());       return $data; } } <\/code><\/pre>\n<p>\u041e\u0441\u043e\u0431\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u043d\u0430\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>getLayoutData()<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0435\u0439 \u043c\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <code>$data<\/code>. \u041a\u043b\u044e\u0447 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <code>$data<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c \u0441 Model \u0432 MVC, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0438\u0445 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. <\/p>\n<p>\u0412 \u0445\u0435\u043b\u043f\u0435\u0440\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043d\u0430 \u0440\u0435\u043d\u0434\u0435\u0440 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e (\u043e\u0431\u0440\u0430\u0442\u0438\u0432\u0448\u0438\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 \u0445\u0435\u043b\u043f\u0435\u0440\u0430 &#8212; \u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430 \u0432 \u0445\u0435\u043b\u043f\u0435\u0440). \u0410 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u0432 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0435, \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <code>$data<\/code>. \u041f\u043e\u0434\u0445\u043e\u0434 \u043a \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0412\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0441\u0430\u043c\u0438, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u0434\u0432\u0443\u043c\u044f \u0444\u0430\u0439\u043b\u0430\u043c\u0438. <\/p>\n<h4>\u0424\u0430\u0439\u043b src\/Helper\/WtyandexmapitemsHelper.php<\/h4>\n<p>\u0425\u0435\u043b\u043f\u0435\u0440 \u043c\u043e\u0434\u0443\u043b\u044f. \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 = \u0438\u043c\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u0435\u0437 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u0430 &#171;mod_&#187; + Helper (\u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b). <\/p>\n<p>Namespace \u0445\u0435\u043b\u043f\u0435\u0440\u0430 <strong>&#8212; <\/strong><code>Joomla\\Module\\Wtyandexmapitems\\Site\\Helper<\/code>. \u0412\u043c\u0435\u0441\u0442\u043e &#171;Site&#187; \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c &#171;Administrator&#187;, \u0435\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432 Joomla 4. \u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0444\u0430\u0439\u043b\u0430. \u0412\u043d\u0443\u0442\u0440\u0438 &#8212; \u043d\u0443\u0436\u043d\u044b\u0435 \u0412\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<pre><code class=\"php\">&lt;?php \/**  * @package         WT Yandex Map items  *  * @copyright   (C) 2022 Sergey Tolkachyov  * @link            https:\/\/web-tolk.ru  * @license         GNU General Public License version 2 or later  *\/  namespace Joomla\\Module\\Wtyandexmapitems\\Site\\Helper;  use Joomla\\CMS\\Access\\Access; use Joomla\\CMS\\Component\\ComponentHelper; use Joomla\\CMS\\Factory; use Joomla\\CMS\\Helper\\ModuleHelper; use Joomla\\CMS\\HTML\\HTMLHelper; use Joomla\\CMS\\Language\\Text; use Joomla\\CMS\\Layout\\FileLayout; use Joomla\\CMS\\Router\\Route; use Joomla\\CMS\\Uri\\Uri; use Joomla\\Component\\Content\\Site\\Helper\\RouteHelper; use Joomla\\Component\\Fields\\Administrator\\Helper\\FieldsHelper; use Joomla\\Registry\\Registry;  \\defined('_JEXEC') or die;   \/**  * Helper for mod_wtyandexmapitems  *  * @since  1.0  *\/ class WtyandexmapitemsHelper { public function getPlacemarks($params, $app):array {          \/**           * \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435            *  src\/Dispatcher\/Dispatcher.php           *  \u0432 \u0441\u0442\u0440\u043e\u043a\u0435            *  $data['placemarks'] = (new WtyandexmapitemsHelper)->getPlacemarks($data['params'], $this->getApplication());           *\/     } }<\/code><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>getPlacemarks()<\/code> \u044f \u043f\u043e\u043b\u0443\u0447\u0430\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 Joomla 4, \u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u043e\u043b\u044f, \u0432\u044b\u0431\u0438\u0440\u0430\u044e (\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044f) \u043f\u043e\u043b\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0434\u043b\u044f \u042f\u043d\u0434\u0435\u043a\u0441 \u043a\u0430\u0440\u0442. <\/p>\n<h4>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 Ajax \u0432 \u043c\u043e\u0434\u0443\u043b\u044f\u0445 Joomla 4<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u0412\u0430\u0448\u0435\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e \u0435\u0441\u0442\u044c \u0447\u0442\u043e \u043e\u0442\u0434\u0430\u0442\u044c \u043f\u043e ajax \u043d\u0430 \u0444\u0440\u043e\u043d\u0442, \u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432 \u0445\u0435\u043b\u043f\u0435\u0440\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>getAjax()<\/code>.\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u043a\u0430\u0440\u0442\u044b \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0431\u043e\u043b\u0435\u0435 100 \u043c\u0435\u0442\u043e\u043a \u0441 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u0435\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e ajax.<\/p>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/docs.joomla.org\/Using_Joomla_Ajax_Interface\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Joomla \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e ajax<\/a> \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0445\u0435\u043b\u043f\u0435\u0440\u0430. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043c\u044f \u043c\u0435\u0442\u043e\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 &#171;Ajax&#187;: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>method=mySuperAwesomeMethodToTrigger<\/code> \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>mySuperAwesomeMethodToTriggerAjax<\/code> \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 ajax-\u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Joomla (<a href=\"https:\/\/habr.com\/ru\/post\/588651\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f-\u043c\u0430\u043d\u0443\u0430\u043b \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/a>). <\/p>\n<pre><code class=\"javascript\">Joomla.request({    url: window.location.origin + \"\/index.php?option=com_ajax&amp;module=wtyandexmapitems&amp;format=raw\", onSuccess: function (response, xhr){  if (response !== \"\"){ let placemarks = JSON.parse(response); console.log(placemarks); objectManager.add(placemarks); myMap' . $module->id . '.geoObjects.add(objectManager);    } } });  }<\/code><\/pre>\n<h4>\u0424\u0430\u0439\u043b tmpl\/default.php &#8212; \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0432 Joomla<\/h4>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f HTML-\u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u0412\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u0415\u0433\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0442\u0443 \u0436\u0435 \u043f\u0430\u043f\u043a\u0443 \u0438\u043b\u0438 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0412\u0430\u0448\u0438\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u043c (\u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435), \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 HTML, \u043d\u0435 \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u0441\u0435\u0431\u0435 \u0432 \u0441\u0430\u043c\u044b\u0445 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0445 \u0438\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f\u0445 \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043e\u043f\u0430\u0441\u0430\u044f\u0441\u044c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0412\u0430\u0448\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0442\u0451\u0440\u0442\u044b \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u0432\u0438\u0436\u043a\u0430.<\/p>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0430\u0445 \u043c\u0430\u043a\u0435\u0442\u043e\u0432 \u0432\u044b\u0432\u043e\u0434\u0430, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0446\u0438\u043a\u043b \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 foreach. <\/p>\n<p>\u0412 Joomla 3 \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e<\/p>\n<pre><code class=\"php\">\/\/ \u0424\u0430\u0439\u043b \"\u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430\" \u043c\u043e\u0434\u0443\u043b\u044f mod_menu.php \/\/ $list - \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 $list       = ModMenuHelper::getList($params);<\/code><\/pre>\n<pre><code>\/\/ \u0424\u0430\u0439\u043b tmpl\/default.php - \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u043e\u0434\u0443\u043b\u044f mod_menu \/\/ $list - \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043f\u0443\u043d\u043a\u0442\u0430\u043c\u0438 \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 foreach ($list as $i => &amp;$item){  \/\/ \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e HTML \u043c\u0435\u043d\u044e, \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 }<\/code><\/pre>\n<p>\u0412 Joomla 4 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0437\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437 \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u043d\u0435 \u0432 &#171;\u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430&#187; (\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u0442 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e), \u0430 \u0432 \u0444\u0430\u0439\u043b\u0435 <code>src\/Dispatcher\/Dispatcher.php<\/code>. <strong>\u0422\u0435 \u0441\u0430\u043c\u044b\u0435 <\/strong><code>$data['placemarks']<\/code><strong> \u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e <\/strong><code>$placemarks<\/code><strong>.<\/strong><\/p>\n<\/li>\n<li>\n<p>&#171;\u0440\u044f\u0434\u043e\u043c&#187; \u0441 \u0412\u0430\u0448\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435:<\/p>\n<ul>\n<li>\n<p><code>$module<\/code> &#8212; \u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u043e\u0434\u0443\u043b\u044f. \u041e\u0442\u0442\u0443\u0434\u0430 \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0437\u044f\u0442\u044c id \u043c\u043e\u0434\u0443\u043b\u044f (<code>$module->id<\/code>), \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043c\u043e\u0434\u0443\u043b\u044f, \u0435\u0433\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<li>\n<p><code>$app<\/code> &#8212; \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c <code>Joomla\\CMS\\Factory::getApplication()<\/code>. \u041e\u043d \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0434\u043b\u044f \u0412\u0430\u0448\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p><code>$input<\/code> &#8212; \u0442\u0430\u043a\u0436\u0435 \u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0440\u0430\u0437\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043e\u0431\u044a\u0435\u043a\u0442 Input (\u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c GET, POST \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, SERVER \u0438 \u0442.\u0434.), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u043d\u044c\u0448\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p><code>$params<\/code> &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044f. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0445 \u043a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435: <code>$params->get('param_name' , 'default_value_if_value_is_empty')<\/code>. \u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u0435\u0439 Joomla \u0432 xml-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p><code>$template<\/code> &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u0442\u0438\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430. \u0423 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 Joomla \u0435\u0441\u0442\u044c templateDetails.xml, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u0430: \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u044b, \u0448\u0440\u0438\u0444\u0442\u044b, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432 &lt;head> \u0438 &lt;body> \u0438 \u0432\u0441\u0451, \u0447\u0442\u043e \u0434\u0443\u0448\u0435 \u0443\u0433\u043e\u0434\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 \u0412\u044b \u0438\u043c\u0435\u0435\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0448\u0435\u0432\u0435\u043b\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0442\u0443\u0434\u0438\u0439\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b (JoomShaper Helix \u0438 \u0438\u0436\u0435 \u0441 \u043d\u0438\u043c\u0438) \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u0443\u0441\u0442\u043e.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>\u0421\u0432\u043e\u0438 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 Joomla \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f<\/h2>\n<p>\u041a\u0430\u043a \u0438 \u0432 Joomla 3, \u0432 Joomla 4, \u0435\u0441\u043b\u0438 \u0412\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 <a href=\"https:\/\/docs.joomla.org\/Standard_form_field_types\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u0435\u0439<\/a>, \u0443 \u0412\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439. \u042d\u0442\u043e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043f\u043e API \u0438 \u0442.\u0434. <\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Joomla. \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<h3>Joomla 3<\/h3>\n<p>\u0412 Joomla 3 \u0412\u0430\u043c \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0442\u0438\u043f \u043f\u043e\u043b\u044f \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>addfieldpath<\/code> \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443 <code>&lt;fieldset><\/code> \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e <code>&lt;field><\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/p>\n<pre><code class=\"xml\">&lt;field addfieldpath=\"modules\/mod_wtyandexmapitems\/fields\" type=\"moduleinfo\" name=\"moduleinfo\"\/><\/code><\/pre>\n<p>Php-\u0444\u0430\u0439\u043b \u043f\u043e\u043b\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c <code>modules\/mod_wtyandexmapitems\/fields<\/code>.<\/p>\n<h3>Joomla 4<\/h3>\n<p>\u0412 Joomla 4 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>addfieldpath<\/code>  \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>addfieldprefix<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c <strong>namespace \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044f<\/strong>. <\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/41e\/69b\/f55\/41e69bf5577c707c39985bdf4b66ae40.png\" alt=\"\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 \u0432 Joomla 4\" title=\"\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 \u0432 Joomla 4\" width=\"294\" height=\"204\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/41e\/69b\/f55\/41e69bf5577c707c39985bdf4b66ae40.png\"\/><figcaption>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043f\u043e\u043b\u0435\u0439 \u0432 Joomla 4<\/figcaption><\/figure>\n<p>\u041f\u043e\u043b\u044f \u043c\u044b \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0432 <code>src\/Fields<\/code>. \u0423 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u043b\u0435\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c namespace <code>namespace Joomla\\Module\\Wtyandexmapitems\\Site\\Fields<\/code>. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u043f\u043e\u043b\u044f, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0449\u0438\u0439 \u0442\u0438\u043f \u043f\u043e\u043b\u044f spacer (\u043f\u0440\u043e\u0431\u0435\u043b), \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u043b\u043e\u0433\u043e\u0442\u0438\u043f\u0430, \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f, \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442 \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<pre><code class=\"xml\">&lt;field type=\"moduleinfo\" addfieldprefix=\"Joomla\\Module\\Wtyandexmapitems\\Site\\Fields\" name=\"moduleinfo\"\/><\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c64\/82d\/5ec\/c6482d5ecfd17b24c041d06ebca4bde8.png\" alt=\"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f \u0432 Joomla 4\" title=\"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f \u0432 Joomla 4\" width=\"1048\" height=\"489\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c64\/82d\/5ec\/c6482d5ecfd17b24c041d06ebca4bde8.png\"\/><figcaption>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f \u0432 Joomla 4<\/figcaption><\/figure>\n<p>\u0410 \u0432\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Joomla 3. \u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0434\u0432\u0443\u0445\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 Joomla \u0441 CRM \u0411\u0438\u0442\u0440\u0438\u043a\u0441 24 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435, \u0438\u0437-\u043f\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d \u0432\u0435\u0431\u0445\u0443\u043a \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0411\u0438\u0442\u0440\u0438\u043a\u0441 24. \u0415\u0441\u043b\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f, \u0437\u043d\u0430\u0447\u0438\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u0432\u0435\u0440\u043d\u043e.<\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/302\/0a3\/b56\/3020a3b56cce048ae00ed4d327fbbdd2.png\" alt=\"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f \u0432 Joomla 3\" title=\"\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f \u0432 Joomla 3\" width=\"1006\" height=\"463\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/302\/0a3\/b56\/3020a3b56cce048ae00ed4d327fbbdd2.png\"\/><figcaption>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f \u0432 Joomla 3<\/figcaption><\/figure>\n<p>\u0410 \u0437\u0434\u0435\u0441\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0430\u0434\u0438\u0439 \u043b\u0438\u0434\u0430 (\u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u043a\u0438), \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0439 \u043f\u043e API \u0438\u0437 CRM \u0411\u0438\u0442\u0440\u0438\u043a\u0441 24. \u042d\u0442\u043e \u0442\u0430\u043a \u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u0435\u0439 (\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043b\u044f Joomla 3).<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/3b1\/3e5\/3cf\/3b13e53cf9a68c4632e5e299d34de6db.png\" alt=\"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u043b\u044f \u0438\u0437 API \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432 Joomla 3\" title=\"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u043b\u044f \u0438\u0437 API \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432 Joomla 3\" width=\"479\" height=\"243\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b1\/3e5\/3cf\/3b13e53cf9a68c4632e5e299d34de6db.png\"\/><figcaption>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u043b\u044f \u0438\u0437 API \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0432 Joomla 3<\/figcaption><\/figure>\n<h2>\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043c\u043e\u0434\u0443\u043b\u044f<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0430 \u0437\u0430\u0432\u0435\u0441\u0442\u0438 &#171;\u0441\u043e \u0448\u043c\u043e\u0440\u0433\u0430\u043b\u043a\u043e\u0439&#187; \u0441\u0442\u0430\u0440\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0430 Joomla 4 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043d\u0430\u0434\u043e, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f (\u043f\u043e\u043a\u0430 \u0447\u0442\u043e) \u043a\u0430\u043a \u0441\u0442\u0430\u0440\u044b\u0439, \u0442\u0430\u043a \u0438 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<ol>\n<li>\n<p><strong>\u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0441\u0435\u0440\u0432\u0438\u0441-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430.<\/strong> \u0412\u043e\u043e\u0431\u0449\u0435. \u0422\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u0435\u043d \u0444\u0430\u0439\u043b &#171;\u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430&#187; <code>mod_wtyandexmapitems.php<\/code> \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 xml-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u043f\u0430\u043f\u043a\u0438 src<\/strong>. \u0418 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0445\u0435\u043b\u043f\u0435\u0440 \u043f\u043e \u0441\u0442\u0430\u0440\u0438\u043d\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 <code>JLoader::register('ModWtyandexmapitemsHelper', __DIR__ . '\/helper.php')<\/code>. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0444\u0430\u0439\u043b helper.php \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0435\u0436\u0430\u0442\u044c \u0440\u044f\u0434\u043e\u043c \u0441 &#171;\u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430&#187; \u0432 \u043c\u043e\u0434\u0443\u043b\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0445\u0435\u043b\u043f\u0435\u0440 \u0432 \u043f\u0430\u043f\u043a\u0443<\/strong> <code>src<\/code>, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b, \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0435\u043c\u0443 namespace (\u0438 \u0432 xml-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u043e\u0436\u0435) \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 &#171;\u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430&#187; \u043f\u0440\u043e\u0441\u0442\u043e <code>use Joomla\\Module\\Wtyandexmapitems\\Site\\Helper\\WtyandexmapitemsHelper<\/code>  &#8212; namespace \u0445\u0435\u043b\u043f\u0435\u0440\u0430. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 Joomla \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u0441 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u0440\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u043e\u0432\u044b\u043c \u043a\u0430\u043d\u043e\u043d\u0430\u043c \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438\u0448\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u0430\u043d\u0435\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f <code>mod_quickicon<\/code> &#8212; \u0438\u043a\u043e\u043d\u043e\u043a \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<\/li>\n<\/ol>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h2>\n<h3>\u041e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \\Joomla\\CMS\\Factory<\/h3>\n<p>\u0418\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/677262\/\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 Joomla 4<\/a><\/p>\n<p>\u0412\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0422\u041e\u041b\u042c\u041a\u041e \u0414\u0412\u0410 \u043c\u0435\u0442\u043e\u0434\u0430\u00a0<code>\\Joomla\\CMS\\Factory<\/code>\u00a0\u0432 Joomla 4:<\/p>\n<ul>\n<li>\n<p><code>getContainer()<\/code>\u00a0&#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 Joomla (DI Container, \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u043d\u043e DIC).<\/p>\n<\/li>\n<li>\n<p><code>getApplication()<\/code>\u00a0&#8212; \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f Joomla, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0451. \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e! \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 DI-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u043b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u00a0<code>\\Joomla\\CMS\\Factory::getApplication()->getDocument()<\/code>.<\/p>\n<h3>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 CSS \u0438 JS \u0432 Joomla 4<\/h3>\n<ol>\n<li>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f\u00a0<a href=\"https:\/\/jpath.ru\/docs\/output\/js-css\/kak-pravilno-podklyuchat-javascript-i-css-v-joomla-4\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c JavaScript \u0438 CSS \u0432 Joomla 4<\/a>  <\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/672020\/\" rel=\"noopener noreferrer nofollow\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 WebAssetsManager Joomla 4 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0441\u0435\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/a>. \u041c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 CSS \u0438 JS \u0444\u0430\u0439\u043b\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 <code>media<\/code>. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u044f\u0445.<\/p>\n<\/li>\n<\/ol>\n<h3>\u0417\u0430\u043c\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445, \u043d\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/h3>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0435\u0449\u0451 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d Joomla 1.5 (\u0441 2008 \u0433\u043e\u0434\u0430!).<\/p>\n<ul>\n<li>\n<p><code>JRequest::getUri()<\/code> \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 $uri = <code>Joomla\\CMS\\Uri::getInstance()<\/code> \u0438 \u0447\u0438\u0442\u0430\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043a \u043d\u0435\u043c\u0443.<\/p>\n<\/li>\n<li>\n<p>\u043c\u0435\u0442\u043e\u0434\u044b <code>JRequest::getCmd<\/code> \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043a\u043e\u0447\u0435\u0432\u0430\u043b\u0438 \u0432 <code>Joomla\\Input\\Input<\/code> \u0438\u043b\u0438 (\u0447\u0442\u043e \u043f\u0440\u043e\u0449\u0435) <code>$app->getInput()<\/code>. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 <code>$app->input<\/code>, \u043d\u043e \u0432 Joomla 5 (\u0432\u044b\u0439\u0434\u0435\u0442 \u043e\u0441\u0435\u043d\u044c\u044e 2023 \u0433\u043e\u0434\u0430) \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u0434\u0430\u043b\u0451\u043d (<a href=\"https:\/\/habr.com\/ru\/news\/t\/686224\/\" rel=\"noopener noreferrer nofollow\">\u043f\u043b\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 Joomla<\/a>).<\/p>\n<\/li>\n<li>\n<p><code>$app->isAdmin()<\/code> \u0438 <code>$app->isSite()<\/code> \u0441\u0442\u0430\u043b\u0438 <code>$app->isClient('Site')<\/code> \u0438 <code>$app->isClient('Administrator')<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445:<\/strong> \u0432\u043c\u0435\u0441\u0442\u043e <code>JFactory::getDbo()<\/code> (\u0438\u043b\u0438 <code>Joomla\\CMS\\Factory::getDbo<\/code>) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>$app->getContainer()->get('DatabaseDriver')<\/code> (&#8216;DatabaseDriver&#8217; \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439).<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:<\/strong>  \u0432\u043c\u0435\u0441\u0442\u043e <code>JFactory::getUser()<\/code> (\u0438\u043b\u0438 <code>Joomla\\CMS\\Factory::getUser()<\/code><em>) <\/em>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <code>$app->getIdentity()<\/code><\/p>\n<\/li>\n<\/ul>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0411\u0443\u0434\u0443 \u0440\u0430\u0434, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u043c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<h3>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b<\/h3>\n<h4>\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430:<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/joomlaforum.ru\/\" rel=\"noopener noreferrer nofollow\"><u>\u0444\u043e\u0440\u0443\u043c \u0440\u0443\u0441\u0441\u043a\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Joomla<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/joomlaportal.ru\/\" rel=\"noopener noreferrer nofollow\"><u>\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043f\u043e\u0440\u0442\u0430\u043b Joomla-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/vc.ru\/s\/1146097-joomla\" rel=\"noopener noreferrer nofollow\">https:\/\/vc.ru\/s\/1146097-joomla<\/a>\u00a0&#8212; \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Joomla \u043d\u0430 VC.<\/p>\n<\/li>\n<\/ul>\n<h4>Telegram:<\/h4>\n<ul>\n<li>\n<p><a href=\"https:\/\/t.me\/joomlaru\" rel=\"noopener noreferrer nofollow\"><u>\u0427\u0430\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u00abJoomla! \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438\u00bb<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/projoomla\" rel=\"noopener noreferrer nofollow\"><u>Joomla \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Joomla<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/joomlafeed\" rel=\"noopener noreferrer nofollow\"><u>\u041d\u043e\u0432\u043e\u0441\u0442\u0438 \u043e Joomla! \u0438 \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/joomla_jobs\" rel=\"noopener noreferrer nofollow\"><u>\u0412\u0430\u043a\u0430\u043d\u0441\u0438\u0438 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e Joomla<\/u><\/a>: \u0444\u0443\u043b\u043b\u0442\u0430\u0439\u043c, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0437\u0430\u043d\u044f\u0442\u043e\u0441\u0442\u044c \u0438 \u0440\u0430\u0437\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439\u00a0<a href=\"https:\/\/jpath.ru\/jobs\/add\" rel=\"noopener noreferrer nofollow\"><u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/joomlatalks\" rel=\"noopener noreferrer nofollow\">\u0410\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0439 \u0447\u0430\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430<\/a>.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/joomlahub\" rel=\"noopener noreferrer nofollow\">\u041d\u043e\u0432\u043e\u0441\u0442\u0438 Joomla! \u043f\u043e-\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/684534\/\"> https:\/\/habr.com\/ru\/post\/684534\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>Joomla 4 &#171;\u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c&#187; \u043f\u0440\u0435\u0442\u0435\u0440\u043f\u0435\u043b\u0430 \u043d\u0435\u043c\u0430\u043b\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439. \u0415\u0451 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442 \u0434\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u0439, \u0432\u0432\u043e\u0434\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0432 \u044f\u0434\u0440\u043e CMS. \u0422\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0431\u044b\u043b\u0430 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u043c\u0438 \u043d\u0430 \u0442\u0435\u043c\u0443 include, \u0442\u043e \u0432 Joomla 4 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043b\u043e\u0430\u0434\u0435\u0440, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u043a PSR-4. \u042f\u0434\u0440\u043e CMS \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u044b DI-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 <a href=\"https:\/\/github.com\/joomla\/joomla-cms\/discussions\/38407#discussioncomment-3472706\" rel=\"noopener noreferrer nofollow\">\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430.<\/a> \u042d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u043b\u0435\u043a\u0443\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432, \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432. <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0447\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f Joomla 4 \u0441 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u041a \u0441\u043b\u043e\u0432\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, legacy \u0435\u0449\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043a\u0430\u043d\u043e\u043d\u0430\u043c Joomla 3 (\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0435 \u043d\u0430 Joomla 3, \u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043f\u043e \u043a\u0430\u043d\u043e\u043d\u0430\u043c Joomla 1.5) \u0435\u0449\u0451 \u0434\u043e\u043b\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 Joomla 4.<\/p>\n<h2>\u041e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>\u042f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u044b\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Joomla, \u043d\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u043f\u044b\u0442\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u0421\u0442\u0430\u0442\u044c\u044f \u0438\u043c\u0435\u0435\u0442 \u0441\u0443\u0433\u0443\u0431\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440, \u0431\u0435\u0437 \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0432 \u0442\u0435\u043e\u0440\u0438\u044e \u041e\u041e\u041f \u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432 Joomla. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c &#8212; \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e &#171;\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438&#187;, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.<\/p>\n<p>\u0420\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u044f \u0431\u0443\u0434\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f <strong>WT Yandex map items<\/strong> &#8212; <a href=\"https:\/\/web-tolk.ru\/dev\/joomla-modules\/wt-yandex-map-items.html\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0443\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 Joomla \u043d\u0430 \u042f\u043d\u0434\u0435\u043a\u0441.\u043a\u0430\u0440\u0442\u044b<\/a> \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0438\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043f\u043e\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0441\u044f \u043f\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 Joomla 4, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0438 namespace \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0445 \u043d\u0430 \u0441\u0432\u043e\u0438.<\/p>\n<h2>\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f Joomla 3 vs Joomla 4 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430<\/h2>\n<h3>\u0411\u044b\u043b\u043e (Joomla 3)<\/h3>\n<figure class=\"\"><figcaption>\u0421\u0442\u0430\u0440\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f Joomla 3<\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c 3 \u0444\u0430\u0439\u043b\u0430: <\/p>\n<ul>\n<li>\n<p><strong>mod_wtyandexmapitems.xml<\/strong> &#8212; \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 Joomla (\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0438\u043c\u044f, \u0434\u0430\u0442\u0430, \u0432\u0435\u0440\u0441\u0438\u044f, \u0441\u0430\u0439\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0442.\u0434.), \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<li>\n<p><strong>mod_wtyandexmapitems.php<\/strong> &#8212; &#171;\u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430&#187; \u0432 \u043c\u043e\u0434\u0443\u043b\u044c. \u0421 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0412\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>tmpl\/default.php<\/strong> &#8212; \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u044f. \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f HTML-\u0432\u0451\u0440\u0441\u0442\u043a\u0430 \u0412\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b, \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 HTML \u043f\u043e \u0441\u0432\u043e\u0435\u043c\u0443 \u0432\u043a\u0443\u0441\u0443 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430. <br \/>\u042d\u0442\u043e\u0442 \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u0432\u043e\u0439 PHP-\u043a\u043e\u0434 \u0432 \u043d\u0443\u0436\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0438 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 Joomla &#8212; mod_custom &#8212; &#171;HTML-\u043a\u043e\u0434&#187;.<\/p>\n<figure class=\"\"><figcaption>\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u0438\u043f\u0430 HTML-\u043a\u043e\u0434 \u0432 Joomla 3.<\/figcaption><\/figure>\n<h4>\u0425\u0435\u043b\u043f\u0435\u0440 (helper) \u043c\u043e\u0434\u0443\u043b\u044f Joomla<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u0434\u0435\u043b\u0430\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0432\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043c\u043e\u0434\u0443\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p>\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u0440\u0443\u0441\u0435\u043b\u044c \u0442\u043e\u0432\u0430\u0440\u043e\u0432 \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438\u043b\u0438 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0438\u0437 \u0444\u043e\u0442\u043e-\u0433\u0430\u043b\u0435\u0440\u0435\u0438 <\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e ajax (ajax-\u043a\u043e\u0440\u0437\u0438\u043d\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443)<\/p>\n<\/li>\n<\/ul>\n<p>\u0442\u043e \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0435 \u044d\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443, \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0445\u0435\u043b\u043f\u0435\u0440 \u043c\u043e\u0434\u0443\u043b\u044f. \u0412 Joomla 3 \u043e\u043d \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0441\u044f \u0432 \u0444\u0430\u0439\u043b helper.php, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c php-\u0444\u0430\u0439\u043b\u043e\u043c. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u0431\u044b\u043b\u043e \u0432 &#171;\u0442\u043e\u0447\u043a\u0435 \u0432\u0445\u043e\u0434\u0430&#187; \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>JLoader::register('ModWtyandexmapitemsHelper', __DIR__ . '\/helper.php');<\/code><\/p>\n<h3>\u0421\u0442\u0430\u043b\u043e (Joomla 4)<\/h3>\n<figure class=\"\"><figcaption>\u041d\u043e\u0432\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f Joomla 4<\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0432 Joomla 4 \u043d\u0443\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0430\u0439\u043b\u044b (\u0441 \u043c\u0435\u043d\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0440\u0430\u0434\u0438): <\/p>\n<h4>\u0424\u0430\u0439\u043b mod_wtyandexmapitems.xml<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 Joomla (\u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0438\u043c\u044f, \u0434\u0430\u0442\u0430, \u0432\u0435\u0440\u0441\u0438\u044f, \u0441\u0430\u0439\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0442.\u0434.), \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439, <strong>\u0430 \u0442\u0430\u043a\u0436\u0435<\/strong> <strong>\u0437\u0430\u0434\u0430\u0451\u0442 Namespace \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432<\/strong>. <\/p>\n<figure class=\"full-width\"><figcaption>Namespace Joomla\\Module\\Wtyandexmapitems \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432 modules\/mod_wtyandexmapitems\/src<\/figcaption><\/figure>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?> &lt;extension type=\"module\" client=\"site\" method=\"upgrade\"> &lt;name>MOD_WTYANDEXMAPITEMS&lt;\/name> &lt;author>Sergey Tolkachyov&lt;\/author> &lt;creationDate>13\/09\/2022&lt;\/creationDate> &lt;copyright>(C) 2022 Sergey Tolkachyov.&lt;\/copyright> &lt;license>GNU General Public License version 2 or later&lt;\/license> &lt;authorEmail>info@web-tolk.ru&lt;\/authorEmail> &lt;authorUrl>https:\/\/web-tolk.ru&lt;\/authorUrl> &lt;version>1.0.0&lt;\/version> &lt;description>MOD_WTYANDEXMAPITEMS_DESC&lt;\/description> &lt;namespace path=\"src\">Joomla\\Module\\Wtyandexmapitems&lt;\/namespace> &lt;files> &lt;folder module=\"mod_wtyandexmapitems\">src&lt;\/folder> &lt;folder>language&lt;\/folder> &lt;folder>services&lt;\/folder> &lt;folder>tmpl&lt;\/folder> &lt;\/files> &lt;languages> &lt;language tag=\"en-GB\">language\/en-GB\/mod_wtyandexmapitems.ini&lt;\/language> &lt;language tag=\"en-GB\">language\/en-GB\/mod_wtyandexmapitems.sys.ini&lt;\/language> &lt;language tag=\"ru-RU\">language\/ru-RU\/mod_wtyandexmapitems.ini&lt;\/language> &lt;language tag=\"ru-RU\">language\/ru-RU\/mod_wtyandexmapitems.sys.ini&lt;\/language> &lt;\/languages> &lt;\/extension><\/code><\/pre>\n<p><strong>\u0422\u0430\u043a\u0436\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/strong>, \u0447\u0442\u043e \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0443\u043b\u044f \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>module=\"mod_wtyandexmapitems\"<\/code> \u0432 xml-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435. \u0415\u0441\u043b\u0438 \u0432 Joomla 3 \u044d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 &#171;\u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430&#187; (<code>&lt;filename module=\"mod_wtyandexmapitems\">mod_wtyandexmapitems.php&lt;\/filename><\/code>), \u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0430\u043f\u043a\u0438 <code>src<\/code> \u043c\u043e\u0434\u0443\u043b\u044f &#8212; <code>&lt;folder module=\"mod_wtyandexmapitems\">src&lt;\/folder><\/code>  .<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u043e <strong>\u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438<\/strong>: \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u044f\u0437\u044b\u043a\u0430 &#8212; &#171;ru-RU.mod_wtyandexmapitems.ini&#187;. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043b\u0435\u0436\u0438\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 &#171;ru-RU&#187;.<\/p>\n<h4>\u0424\u0430\u0439\u043b services\/provider.php<\/h4>\n<p>\u0424\u0430\u0439\u043b &#8212; \u0441\u0435\u0440\u0432\u0438\u0441-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0412\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u041e\u043d \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 Joomla, \u0447\u0442\u043e \u0412\u0430\u0448 \u043c\u043e\u0434\u0443\u043b\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 namespace \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d.<\/p>\n<pre><code class=\"php\">&lt;?php \/**  * @package     WT Yandex Map items  *  * @copyright   (C) 2022 Sergey Tolkachyov  * @link https:\/\/web-tolk.ru  * @license     GNU General Public License version 2 or later  *\/  defined('_JEXEC') or die;  use Joomla\\CMS\\Extension\\Service\\Provider\\HelperFactory; use Joomla\\CMS\\Extension\\Service\\Provider\\Module; use Joomla\\CMS\\Extension\\Service\\Provider\\ModuleDispatcherFactory; use Joomla\\DI\\Container; use Joomla\\DI\\ServiceProviderInterface;  \/**  * The WT Yandex map items module service provider.  *  * @since  1.0.0  *\/ return new class implements ServiceProviderInterface { \/**  * Registers the service provider with a DI container.  *  * @param   Container  $container  The DI container.  *  * @return  void  *  * @since   4.0.0  *\/ public function register(Container $container) {            \/\/ \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 namespace \u043c\u043e\u0434\u0443\u043b\u044f $container->registerServiceProvider(new ModuleDispatcherFactory('\\\\Joomla\\\\Module\\\\Wtyandexmapitems'));         \/\/ Namespace \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u0445\u0435\u043b\u043f\u0435\u0440\u0430 $container->registerServiceProvider(new HelperFactory('\\\\Joomla\\\\Module\\\\Wtyandexmapitems\\\\Site\\\\Helper'));         \/\/ Namespace \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0442\u0438\u043f\u043e\u0432 \u043f\u043e\u043b\u0435\u0439 $container->registerServiceProvider(new HelperFactory('\\\\Joomla\\\\Module\\\\Wtyandexmapitems\\\\Site\\\\Fields')); $container->registerServiceProvider(new Module); } }; <\/code><\/pre>\n<p>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f Joomla \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 PHP-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 SDK, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043f\u0430\u043f\u043a\u0435 <code>src<\/code> \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 Namespace, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0435\u0440\u0432\u0438\u0441-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0435, \u0434\u0430\u0431\u044b \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e, \u044f \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 Joomla \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043f\u0430\u043f\u043a\u0443 libraries \u0432 \u043a\u043e\u0440\u043d\u0435 \u0441\u0430\u0439\u0442\u0430, \u0430 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0438\u043c \u0443\u0436\u0435 \u043f\u043e namespace. \u042d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043e\u0434\u043d\u043e \u0412\u0430\u0448\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043b\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0435\u0451 namespace \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d.<\/p>\n<p>\u0411\u0435\u0440\u0451\u043c \u043d\u0430 \u0437\u0430\u043c\u0435\u0442\u043a\u0443, \u0447\u0442\u043e \u0432 Namespace \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#171;\u043a\u043b\u0438\u0435\u043d\u0442&#187; \u043c\u043e\u0434\u0443\u043b\u044f &#8212; &#171;Site&#187; \u0438\u043b\u0438 &#171;Administrator&#187;.<\/p>\n<h4>\u0424\u0430\u0439\u043b src\/Dispatcher\/Dispatcher.php<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043c\u0430\u043a\u0435\u0442 (layout).<\/p>\n<pre><code class=\"php\">&lt;?php \/**  * @package     WT Yandex Map items  *  * @copyright   (C) 2022 Sergey Tolkachyov  * @link https:\/\/web-tolk.ru  * @license     GNU General Public License version 2 or later  *\/  namespace Joomla\\Module\\Wtyandexmapitems\\Site\\Dispatcher;  \\defined('JPATH_PLATFORM') or die;  use Joomla\\CMS\\Application\\CMSApplicationInterface; use Joomla\\CMS\\Dispatcher\\AbstractModuleDispatcher; use Joomla\\CMS\\Extension\\ModuleInterface; use Joomla\\Input\\Input; use Joomla\\Module\\Wtyandexmapitems\\Site\\Helper\\WtyandexmapitemsHelper; use Joomla\\Registry\\Registry;  \/**  * Dispatcher class for mod_wtyandexmapitems  *  * @since  1.0.0  *\/ class Dispatcher extends AbstractModuleDispatcher {  \/**  * The module extension. Used to fetch the module helper.  *  * @var   ModuleInterface|null  * @since 1.0.0  *\/ private $moduleExtension;   public function __construct(\\stdClass $module, CMSApplicationInterface $app, Input $input) { parent::__construct($module, $app, $input);  $this->moduleExtension = $this->app->bootModule('mod_wtyandexmapitems', 'site'); }  \/**  * Returns the layout data.  *  * @return  array  *  * @since   1.0.0  *\/ protected function getLayoutData() { $data = parent::getLayoutData();         \/\/ \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 Namespace $data['placemarks'] = (new WtyandexmapitemsHelper)->getPlacemarks($data['params'], $this->getApplication());                \/\/ \u0418\u041b\u0418         \/\/ \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 $this->moduleExtension,         \/\/ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430         $helper = $this->moduleExtension->getHelper('WtyandexmapitemsHelper');                  \/\/ \u0418\u041b\u0418         \/\/ \u0412\u0430\u0440\u0438\u0430\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430,         \/\/ \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044f \u043c\u043e\u0434\u0443\u043b\u044c \u0432 $this->moduleExtension.         \/\/ \u0422\u043e\u0433\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 $this->moduleExtension \u0432 __construct()  \u043d\u0435 \u043d\u0443\u0436\u043d\u0430.         $helper = $this->app->bootModule('mod_wtyandexmapitems', 'Site')->getHelper('WtyandexmapitemsHelper');                  $data['placemarks'] = $helper->getPlacemarks($data['params'], $this->getApplication());       return $data; } } <\/code><\/pre>\n<p>\u041e\u0441\u043e\u0431\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u043d\u0430\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>getLayoutData()<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0435\u0439 \u043c\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043c\u0435\u0442\u043e\u0434\u0430\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u0445\u0435\u043b\u043f\u0435\u0440\u0430 \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <code>$data<\/code>. \u041a\u043b\u044e\u0447 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <code>$data<\/code> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u044b\u043c \u0438 \u043c\u043e\u0436\u0435\u0442<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-338420","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/338420","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=338420"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/338420\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=338420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=338420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=338420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}