{"id":349035,"date":"2023-06-19T15:04:20","date_gmt":"2023-06-19T15:04:20","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=349035"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2023-06-19T15:04:20","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=349035","title":{"rendered":"<span>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 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>\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 Joomla. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0441 \u043d\u0443\u0442\u0440\u043e\u043c Joomla. \u0415\u0441\u043b\u0438 \u0412\u044b \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a &#8212; \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"#make-plugin\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c?<\/a><\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u0432 Joomla?<\/h2>\n<p>\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 Joomla &#171;\u043f\u043b\u0430\u0433\u0438\u043d&#187; &#8212; \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0<a href=\"https:\/\/docs.joomla.org\/Plugin\/Events\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438<\/a>\u00a0(Event Dispatching).  \u0412 Joomla \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u043e\u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043c\u0435\u0441\u0442\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442: \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u043a\u0443\u0441\u043e\u0447\u0435\u043a HTML \u043a \u0441\u0442\u0430\u0442\u044c\u0435, \u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043a\u0430\u0437\u0430 \u043f\u043e API \u0432 CRM \u0441\u0438\u0441\u0442\u0435\u043c\u0443, &#171;\u043f\u0440\u043e\u0447\u0435\u0441\u0430\u0442\u044c&#187; \u0432\u0435\u0441\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 HTML-\u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u043e\u0439 \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 Joomla CLI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u044d\u0442\u0438\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c. \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u044f\u0434\u0440\u043e Joomla, \u0442\u0430\u043a \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0434\u0430 \u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043b\u044e\u0431\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Joomla. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 WordPress &#171;\u043f\u043b\u0430\u0433\u0438\u043d&#187; &#8212; \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0432 Joomla \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#171;\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442&#187;.<\/p>\n<h2>\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0433\u0440\u0443\u043f\u043f\u044b Editors-Xtd \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043a\u043d\u043e\u043f\u043e\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430<\/h2>\n<p><strong><em>\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0438\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0441 Joomla \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0412\u044b &#8212; \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a &#8212; \u043c\u043e\u0436\u0435\u0442\u0435 \u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<\/em><\/strong><\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0432 Joomla \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u044b, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0438 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0441\u0430\u0439\u0442\u0430. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 <code>system<\/code>. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u041f\u0415\u0420\u0415\u0414 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0433\u0440\u0443\u043f\u043f. \u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 2 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 (\u0433\u0440\u0443\u043f\u043f\u0430 <code>system<\/code>), \u0430 \u0434\u0440\u0443\u0433\u043e\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u043f\u043b\u0430\u0433\u0438\u043d (\u0433\u0440\u0443\u043f\u043f\u0430 <code>content<\/code>) \u0441 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c (\u0442\u0440\u0438\u0433\u0433\u0435\u0440), \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u043f\u043b\u0430\u0433\u0438\u043d. <\/p>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0433\u0440\u0443\u043f\u043f\u044b <code>editors-xtd<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0441\u0430\u0439\u0442\u0430, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430: \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u043e\u0432\u0430\u0440\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0442.\u0434.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/519\/e60\/129\/519e6012936fe2e60c23f8ff1e30d0c3.png\" alt=\"\u041a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla 4. \u0428\u0442\u0430\u0442\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Tiny MCE.\" title=\"\u041a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla 4. \u0428\u0442\u0430\u0442\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Tiny MCE.\" width=\"1599\" height=\"899\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/519\/e60\/129\/519e6012936fe2e60c23f8ff1e30d0c3.png\"\/><\/p>\n<div><figcaption>\u041a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla 4. \u0428\u0442\u0430\u0442\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Tiny MCE.<\/figcaption><\/div>\n<\/figure>\n<h2>\u0417\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b? <\/h2>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043a \u043e\u043a\u043d\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0442\u0435\u043a\u0441\u0442\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c TinyMCE, Code Mirror, \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0437 Joomla Extensions Directory JCE \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c HTML \u043a\u043e\u0434 \u0440\u0443\u043a\u0430\u043c\u0438. \u041d\u043e \u044d\u0442\u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0435\u0433\u0434\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0434 \u043e\u043a\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0437\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u043d\u0430\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0432 \u043e\u043a\u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u043c.<\/p>\n<p>\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0448\u043e\u0440\u0442\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (<code>{loadposition position_name}<\/code>) \u0438\u043b\u0438 \u043f\u043e id \u043c\u043e\u0434\u0443\u043b\u044f (<code>{loadmoduleid 42}<\/code>). <\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0448\u043e\u0440\u0442\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 (\u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0432\u043e\u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b).<\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043b\u0438\u043d\u0438\u0439 &#171;\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435&#187; \u0438\/\u0438\u043b\u0438 &#171;\u0440\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b&#187;.<\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0448\u043e\u0440\u0442\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u0435\u0433\u043e \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0444\u043e\u0442\u043e\u0433\u0430\u043b\u0435\u0440\u0435\u0438<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u043e\u0431\u0449\u0435 \u043b\u044e\u0431\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 HTML-\u043a\u043e\u0434\u043e\u043c \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a, \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c\u0443 API \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0412\u0441\u0451, \u0447\u0442\u043e \u0412\u0430\u0448\u0430 \u0434\u0443\u0448\u0430 \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 2-\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><strong>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1:<\/strong> \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442 HTML-\u043a\u043e\u0434 \u0432 \u043f\u043e\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2:<\/strong> \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442 HTML-\u043a\u043e\u0434 \u0432 \u043f\u043e\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 &#8212; \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043b\u0438\u043d\u0438\u0438 &#171;\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435&#187;. \u0412 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u0445 Joomla \u044d\u0442\u0430 \u043b\u0438\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u0432\u0441\u0442\u0443\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/64903ec34ffc4801f3e17a84\" data-style=\"\" id=\"64903ec34ffc4801f3e17a84\" width=\"\"><\/div>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 2-\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 &#8212; \u043a\u043d\u043e\u043f\u043a\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 SEF \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u0437\u0430\u0442\u0435\u043c \u0432 \u0442\u0435\u043a\u0441\u0442 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f non-SEF \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b. \u041f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d SEF \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0445 \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 SEF \u0441\u0441\u044b\u043b\u043a\u0438. \u0415\u0441\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438, \u043d\u043e \u0431\u0443\u0434\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d &#8212; url \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043d\u0435\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. <\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/64903ec365e33b48152dbb08\" data-style=\"\" id=\"64903ec365e33b48152dbb08\" width=\"\"><\/div>\n<p><a class=\"anchor\" name=\"make-plugin\" id=\"make-plugin\"><\/a><\/p>\n<h2>\u041a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c?<\/h2>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0433\u0440\u0443\u043f\u043f\u044b <code>editors-xtd<\/code>. \u0422\u0430\u043a\u0436\u0435 \u0412\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f <a href=\"https:\/\/habr.com\/ru\/articles\/736412\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Joomla 4<\/a>.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u0430\u0451\u0442 \u0412\u0430\u043c Joomla \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/web-tolk.ru\/dev\/joomla-plugins\/wt-typograph.html\" rel=\"noopener noreferrer nofollow\">\u043f\u043b\u0430\u0433\u0438\u043d WT Typograph<\/a>, \u0441\u043b\u0443\u0436\u0430\u0449\u0438\u0439 \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u043a \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0441\u0442\u0438\u043b\u044e.<\/p>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d:<\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 <a href=\"https:\/\/typograf.ru\/\" rel=\"noopener noreferrer nofollow\">typograf.ru<\/a>. \u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u043c\u0435\u0435\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 API.<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 API \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u0415\u0441\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0442 &#8212; \u0432\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0438\u043c\u0435\u0435\u0442 2 \u0440\u0435\u0436\u0438\u043c\u0430: \u043e\u0431\u044b\u0447\u043d\u044b\u0439 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0438 \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441. <\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0430 \u0438 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 &#171;\u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c&#187;. \u0417\u0430\u043c\u0435\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u044d\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0442\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 API \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0440\u0430\u0437\u0443, \u0431\u0435\u0437 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0420\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c \u0432 Joomla.<\/p>\n<h3>\u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430<\/h3>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0432\u0441\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0435\u0447\u0438 javascript.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 API \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e, \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 javascript \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0435\u0447\u0438 PHP.<\/p>\n<p>\u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0447\u0430\u0441\u0442\u044c (javascript \u043a\u043e\u0434) \u043c\u044b \u0440\u0430\u0437\u043d\u0435\u0441\u0451\u043c \u043f\u043e \u0434\u0432\u0443\u043c \u0440\u0430\u0437\u043d\u044b\u043c js-\u0444\u0430\u0439\u043b\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<h3>\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/h3>\n<p>\u0412 Joomla 3 \u0438 Joomla 4 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. \u041e\u0434\u043d\u0430\u043a\u043e, Joomla 4 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430. \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u042d\u0442\u043e, \u0441\u043a\u043e\u0440\u0435\u0435, \u0447\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c. \u041d\u043e, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 Joomla 4.3 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0433\u0440\u0443\u043f\u043f\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438\u043c\u0435\u043b\u0438 \u0441\u0442\u0430\u0440\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 <code>namespaces<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 4.3 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u043e \u043d\u043e\u0432\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043f\u043e \u043c\u043d\u043e\u0433\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>&#171;\u041d\u043e\u0432\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 \u0432 Joomla 4&#187;<\/em> \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/736412\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Joomla 4<\/a>.<\/p>\n<h3>\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u0430. PHP<\/h3>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u0444\u0430\u0439\u043b\u0430 (\u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0442\u0430\u0440\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 Joomla 3):<\/p>\n<ul>\n<li>\n<p>XML-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0444\u0430\u0439\u043b \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/p>\n<\/li>\n<\/ul>\n<h4>XML-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/h4>\n<p>\u0412 \u043d\u0451\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \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 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0442.\u0434. <\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?> &lt;extension type=\"plugin\" group=\"editors-xtd\" method=\"upgrade\"> &lt;name>\u041a\u043d\u043e\u043f\u043a\u0430 - \u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444&lt;\/name> &lt;author>Sergey Tolkachyov&lt;\/author> &lt;creationDate>12\/03\/2023&lt;\/creationDate> &lt;copyright>(C) 2023 Sergey Tolkachyov&lt;\/copyright> &lt;license>GNU General Public License version 2 or later; see LICENSE.txt&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>\u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u043e\u0432&lt;\/description> &lt;scriptfile>script.php&lt;\/scriptfile> &lt;files> &lt;filename plugin=\"wttipograph\">wttipograph.php&lt;\/filename> &lt;\/files> &lt;scriptfile>script.php&lt;\/scriptfile> &lt;media folder=\"media\" destination=\"plg_editors-xtd_wttipograph\"> &lt;folder>js&lt;\/folder> &lt;\/media> &lt;config> &lt;fields name=\"params\"> &lt;fieldset name=\"basic\"> &lt;field type=\"radio\"    name=\"express_mode\"    label=\"\u042d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u0440\u0435\u0436\u0438\u043c?\"    description=\"\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 (\u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435) \u043e\u043a\u043d\u043e. \u042d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u0440\u0435\u0436\u0438\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0431\u0435\u0437 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430.\"    class=\"btn-group btn-group-yesno\"    default=\"0\"> &lt;option value=\"1\">JYES&lt;\/option> &lt;option value=\"0\">JNO&lt;\/option> &lt;\/field> &lt;\/fieldset> &lt;\/fields> &lt;\/config> &lt;\/extension> <\/code><\/pre>\n<p>\u0421\u0435\u043a\u0446\u0438\u044f <code>&lt;files><\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 Joomla \u0432 \u043a\u0430\u043a\u043e\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/p>\n<p>\u0421\u0435\u043a\u0446\u0438\u044f <code>&lt;media><\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 Joomla, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043a\u0438 <code>js<\/code> \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 <code>media\/plg_editors-xtd_wttipograph\/js<\/code>. \u041d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b (\u0438 \u0441\u0442\u0438\u043b\u0438) \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>HTMLHelper<\/code> (\u0438\u043b\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/672020\/\" rel=\"noopener noreferrer nofollow\">Web Assets Manager \u0432 Joomla 4<\/a>).<\/p>\n<p>\u0421\u0435\u043a\u0446\u0438\u044f <code>&lt;config><\/code> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u0437 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e &#8212; \u044d\u0442\u0443 \u0441\u0435\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u0445 <code>label<\/code> \u0438 <code>description<\/code> \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438. Joomla \u0442\u0430\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c. \u041d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0438 \u0412\u0430\u0448\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043d\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u044d\u0442\u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b. <\/p>\n<h4>PHP \u0444\u0430\u0439\u043b \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0432\u044b\u0432\u043e\u0434 \u043a\u043d\u043e\u043f\u043a\u0438<\/h4>\n<p>\u041a\u043b\u0430\u0441\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 <code>CMSPlugin<\/code> \u0438 \u0432 Joomla 3 (\u0438 legacy Joomla 4) \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0451 \u0438\u043c\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>Plg<\/code>, \u0441\u043b\u043e\u0432\u043e<code>Button<\/code> \u0438 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430. \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 \u0438 \u043f\u0430\u043f\u043a\u0438, \u0433\u0434\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u043b\u0435\u0436\u0438\u0442.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 <code>plugins\/editors-xtd\/wttipograph\/wttipograph.php<\/code> \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 <code>PlgButtonWttipograph<\/code>. \u0412 Joomla 4 \u0441 \u044d\u0442\u0438\u043c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u043e\u0449\u0435 ?. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c <code>class PlgButtonWttipograph extends CMSPlugin<\/code>. \u0432 \u043d\u0451\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434 <code>onDisplay()<\/code>. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0430\u043c\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<pre><code class=\"php\">&lt;?php use Joomla\\CMS\\Plugin\\CMSPlugin; use Joomla\\CMS\\Factory;  \\defined('_JEXEC') or die;  class PlgButtonWttipograph extends CMSPlugin {     \/**  * Display the button  *  * @param   string  $name  The name of the button to add  *  * @return  CMSObject|void  The button options as CMSObject, void if ACL check fails.  *  * @since   1.5  *\/ public function onDisplay($name) { \/\/ \u0417\u0434\u0435\u0441\u044c \u043a\u043e\u0434 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438. } }<\/code><\/pre>\n<p>\u041c\u0435\u0442\u043e\u0434 <code>onDisplay()<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 <code>$name<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 (\u0432\u043e\u043f\u0440\u0435\u043a\u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c \u0432 \u043a\u043e\u0434\u0435) \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0438\u043c\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u0430 \u043d\u0435 &#171;\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f&#187;. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443 \u0412\u0430\u0441 \u0441\u0430\u0439\u0442 \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0438 \u0412\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u044e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043d\u0430 2-\u0445 \u044f\u0437\u044b\u043a\u0430\u0445,  \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0443 \u0412\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 2 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0441\u0432\u043e\u0439. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0412\u0430\u0448\u0430. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/567\/66a\/704\/56766a704b2d0c02cdffff45a02ab429.png\" alt=\"\u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0432 Joomla.\" title=\"\u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0432 Joomla.\" width=\"1599\" height=\"901\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/567\/66a\/704\/56766a704b2d0c02cdffff45a02ab429.png\"\/><\/p>\n<div><figcaption>\u041e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0434\u0432\u0443\u0445 \u044f\u0437\u044b\u043a\u0430\u0445 \u0432 Joomla.<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0433\u0440\u0443\u043f\u043f\u0430\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0432 \u043c\u0435\u0442\u043e\u0434 <code>onDisplay()<\/code> \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u0440\u0430\u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<pre><code class=\"php\">&lt;?php use Joomla\\CMS\\Plugin\\CMSPlugin; use Joomla\\CMS\\Factory;  \\defined('_JEXEC') or die;  class PlgButtonWttipograph extends CMSPlugin {     public function onDisplay($name) {         \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f  $user = Factory::getUser();  \/\/ \u041c\u043e\u0436\u0435\u0442 \u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 $canCreateRecords = $user->authorise('core.create', 'com_content') || count($user->getAuthorisedCategories('com_content', 'core.create')) > 0;  \/\/ \u041c\u043e\u0436\u0435\u0442 \u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438. $values           = (array) Factory::getApplication()->getUserState('com_content.edit.article.id'); $isEditingRecords = count($values);  \/\/ \u0415\u0441\u043b\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 - \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c.         \/\/ This ACL check is probably a double-check (form view already performed checks) $hasAccess = $canCreateRecords || $isEditingRecords; if (!$hasAccess) { return; }     } } <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u043e\u0438\u0442  \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445 \u044f\u0434\u0440\u0430 Joomla \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430. \u0414\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043f\u0440\u0430\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c.<\/p>\n<pre><code class=\"php\">&lt;?php use Joomla\\CMS\\Plugin\\CMSPlugin; use Joomla\\CMS\\Factory;  \\defined('_JEXEC') or die;  class PlgButtonWttipograph extends CMSPlugin {     public function onDisplay($name) {         \/\/ \u0414\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u043c\u044b \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f                  \/**          * \u041a\u043d\u043e\u043f\u043a\u0430 - \u044d\u0442\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 CMSObject().          *\/         $button          = new \\Joomla\\CMS\\Object\\CMSObject();     } } <\/code><\/pre>\n<p>\u041a\u043b\u0430\u0441\u0441 <code>CMSObject<\/code> \u043f\u043e\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a <code>deprecated<\/code> \u0432 Joomla 4 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0451\u043d \u0432 Joomla 6 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c\u0430\u044f \u0434\u0430\u0442\u0430 \u0432\u044b\u0445\u043e\u0434\u0430 &#8212; 2025 \u0433\u043e\u0434). \u0412\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>\\stdClass<\/code> \u0438\u043b\u0438  <code>\\Joomla\\Registry\\Registry<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <code>new \\Joomla\\Registry\\Registry()<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 (\u0432 Joomla 4.2) \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043d\u043e\u043f\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 <code>CMSObject<\/code> .  <\/p>\n<pre><code class=\"php\">&lt;?php use Joomla\\CMS\\Factory; use Joomla\\CMS\\Language\\Text; use Joomla\\CMS\\Plugin\\CMSPlugin; use Joomla\\CMS\\Session\\Session;  \\defined('_JEXEC') or die;  class PlgButtonWttipograph extends CMSPlugin {     public function onDisplay($name) {         \/\/ \u0414\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u043c\u044b \u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0437\u0434\u0435\u0441\u044c \u043a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f                  \/**          * \u041a\u043d\u043e\u043f\u043a\u0430 - \u044d\u0442\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 CMSObject().          *\/         $button          = new \\Joomla\\CMS\\Object\\CMSObject();          \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 express_mode,         \/\/ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u0432 XML-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0435         if($this->params->get('express_mode',0) == 1){              \/\/ \u042d\u0442\u043e \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u0436\u0438\u043c, \u0431\u0435\u0437 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430.            $app = Factory::getApplication(); $doc = $app->getDocument(); $doc->getWebAssetManager() ->registerAndUseScript('admin-wttipograph', 'plg_editors-xtd_wttipograph\/admin-wttipograph.js', [], ['defer' => true], ['core']);  $button->modal   = false; $button->onclick = 'wtTipograf(\\'' . $name . '\\');return false;'; $button->link    = '#'; } else {            \/\/ \u042d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c, \u0441 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u043a\u043d\u043e\u043c.            $button->modal   = true; $link = 'index.php?option=com_ajax&amp;plugin=wttipograph&amp;group=editors-xtd&amp;format=html&amp;tmpl=component&amp;action=showform&amp;' . Session::getFormToken() . '=1&amp;amp;editor=' . $name; $button->link    = $link; }          \/\/ \u042d\u0442\u043e \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b          $button->text    = Text::_('\u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444'); $button->name    = $this->_type . '_' . $this->_name; $button->icon    = 'file-add'; $button->iconSVG = '&lt;svg viewBox=\"0 0 32 32\" width=\"24\" height=\"24\">&lt;path d=\"M28 24v-4h-4v4h-4v4h4v4h4v-4h4v-4zM2 2h18v6h6v10h2v-10l-8-' . '8h-20v32h18v-2h-16z\">&lt;\/path>&lt;\/svg>'; $button->options = [ 'height'     => '300px', 'width'      => '800px', 'bodyHeight' => '70', 'modalWidth' => '80', ];  return $button;            } } <\/code><\/pre>\n<p>\u041a\u0430\u043a \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u043a\u043d\u043e\u043f\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u0443\u044e \u043d\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e javascript. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430: <code>$this->params->get('express_mode',0)<\/code> &#8212; \u044d\u0442\u043e \u043d\u0430\u0448 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440-\u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0438\u0437 XML-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430. \u0412\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432 <code>get('express_mode',0)<\/code>  \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 <code>get()<\/code> \u0438\u0437 <code>params<\/code> \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442. \u0422\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0435\u0441\u043b\u0438 \u0412\u044b \u043f\u043b\u0430\u0433\u0438\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438, \u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u0430\u0445\u043e\u0434\u0438\u043b\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u043e \u0441\u0443\u0442\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p><strong>\u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u0440\u0435\u0436\u0438\u043c\u0435<\/strong> &#8212; \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c javascript-\u0444\u0430\u0439\u043b \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u0440\u0435\u0436\u0438\u043c\u0430 &#8212; <code>admin-wttipograph.js<\/code>. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 <code>media\/plg_editors-xtd_wttipograph\/js\/admin-wttipograph.js<\/code>. \u0414\u0430\u043b\u0435\u0435, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 <code>$button->modal = false;<\/code> , <code>$button->link<\/code> \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0448\u0430\u0440\u043f\u043e\u043c, \u0438 \u0434\u043b\u044f <code>onclick<\/code> \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0432\u044b\u0437\u043e\u0432 \u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u043c javascript-\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u0443\u0434\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f id \u043e\u043a\u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430. <\/p>\n<p><strong>\u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435,<\/strong> \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 <code>$button->modal = true;<\/code> , \u044d\u0442\u043e \u043e\u0442\u0440\u0438\u0441\u0443\u0435\u0442 \u0431\u0443\u0442\u0441\u0442\u0440\u0430\u043f\u043e\u0432\u0441\u043a\u0443\u044e \u043c\u043e\u0434\u0430\u043b\u043a\u0443 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043a\u043d\u043e\u043f\u043a\u0438. \u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 <code>&lt;iframe><\/code>, <code>src<\/code> \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432 <code>$button->link<\/code>. <\/p>\n<p><strong>\u0412 \u043e\u0431\u0449\u0438\u0445 \u0434\u043b\u044f \u043e\u0431\u043e\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u0445<\/strong> \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430\u043c \u0431\u0443\u0434\u0443\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b:<\/p>\n<ul>\n<li>\n<p><code>$button->text<\/code> &#8212; \u044d\u0442\u043e \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0435  <\/p>\n<\/li>\n<li>\n<p><code>$button->icon<\/code> &#8212; css-\u043a\u043b\u0430\u0441\u0441 \u0438\u043a\u043e\u043d\u043a\u0438 \u0434\u043b\u044f \u043a\u043d\u043e\u043f\u043a\u0438. Joomla \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0447\u0443\u0442\u044c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 Font Awesome 5.1. \u0412 Joomla 5 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f FontAwesome 6.<\/p>\n<\/li>\n<li>\n<p><code>$button->iconSVG<\/code> &#8212; SVG-\u043a\u043e\u0434 \u0438\u043a\u043e\u043d\u043a\u0438 \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><code>$button->options<\/code> &#8212; \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 <code>&lt;iframe><\/code> \u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430.<\/p>\n<ul>\n<li>\n<p><code>height<\/code> &#8212; 400px &#8212; \u0432\u044b\u0441\u043e\u0442\u0430 <code>&lt;iframe><\/code> \u0432 \u043c\u043e\u0434\u0430\u043b\u043a\u0435<\/p>\n<\/li>\n<li>\n<p><code>width<\/code> &#8212; 800px &#8212; \u0448\u0438\u0440\u0438\u043d\u0430 <code>&lt;iframe><\/code> \u0432 \u043c\u043e\u0434\u0430\u043b\u043a\u0435<\/p>\n<\/li>\n<li>\n<p><code>bodyHeight<\/code> &#8212; \u0432\u044b\u0441\u043e\u0442\u0430 <code>modal body<\/code> \u0432\u043e <code>viewport units<\/code>. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c. \u0411\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e \u0432 css-\u043a\u043b\u0430\u0441\u0441 <code>jviewport-height<\/code> + \u0412\u0430\u0448\u0435 \u0447\u0438\u0441\u043b\u043e. \u0412 css \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Atum \u0430\u0434\u043c\u0438\u043d\u043a\u0438 Joomla \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u043e\u0442 <code>jviewport-height10<\/code> \u0434\u043e <code>jviewport-height100<\/code> \u0441 \u0448\u0430\u0433\u043e\u043c = 10.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/943\/e9e\/c42\/943e9ec424b10e3d0d4829e4b3868eec.png\" width=\"567\" height=\"331\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/943\/e9e\/c42\/943e9ec424b10e3d0d4829e4b3868eec.png\"\/><\/figure>\n<\/li>\n<li>\n<p><code>modalWidth<\/code> &#8212; \u0448\u0438\u0440\u0438\u043d\u0430 <code>modal dialog<\/code>\u0432\u043e <code>viewport units<\/code>, \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e.   \u0411\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e \u0432 css-\u043a\u043b\u0430\u0441\u0441 <code>jviewport-width<\/code> + \u0412\u0430\u0448\u0435 \u0447\u0438\u0441\u043b\u043e. \u0412 css \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Atum \u0430\u0434\u043c\u0438\u043d\u043a\u0438 Joomla \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u043e\u0442 <code>jviewport-width10<\/code> \u0434\u043e <code>jviewport-width100<\/code> \u0441 \u0448\u0430\u0433\u043e\u043c = 10. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/074\/c9b\/55a\/074c9b55a8bfea28d8a9bfdadad5b60e.png\" width=\"957\" height=\"371\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/074\/c9b\/55a\/074c9b55a8bfea28d8a9bfdadad5b60e.png\"\/><\/figure>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>modalCss<\/code> (<a href=\"https:\/\/github.com\/joomla\/joomla-cms\/pull\/40650\" rel=\"noopener noreferrer nofollow\">Pull Request \u043d\u0430 GitHub<\/a>) \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u0439 css \u043a\u043b\u0430\u0441\u0441 (\u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Bootstrap 5 <a href=\"https:\/\/getbootstrap.com\/docs\/5.3\/components\/modal\/#optional-sizes\" rel=\"noopener noreferrer nofollow\">Optional sizes<\/a>  \u0438\u043b\u0438 \u00a0<a href=\"https:\/\/getbootstrap.com\/docs\/5.3\/components\/modal\/#fullscreen-modal\" rel=\"noopener noreferrer nofollow\">Fullscreen modal<\/a>).<\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043d\u0430\u0448\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u043e\u0434 \u043e\u043a\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438\u043b\u0438 \u0432 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 (\u0443 \u043a\u043e\u0433\u043e \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043d\u043e).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/99e\/f1e\/758\/99ef1e7587ec3137eec0afde04b80d85.png\" alt=\"\u041a\u043d\u043e\u043f\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 Joomla, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c\" title=\"\u041a\u043d\u043e\u043f\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 Joomla, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c\" width=\"676\" height=\"534\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/99e\/f1e\/758\/99ef1e7587ec3137eec0afde04b80d85.png\"\/><\/p>\n<div><figcaption>\u041a\u043d\u043e\u043f\u043a\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 Joomla, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435.<\/p>\n<h3>\u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434. Javascript \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla.<\/h3>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0440\u0435\u0436\u0438\u043c &#8212; \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u0436\u0438\u043c.<\/p>\n<p><strong>\u042d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/strong> \u0428\u0430\u0431\u043b\u043e\u043d \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Joomla, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0444\u0430\u0439\u043b <code>media\/system\/js\/core.js<\/code>. \u041e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/588651\/\" rel=\"noopener noreferrer nofollow\">Ajax-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Joomla<\/a>. \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438 \u0437\u0434\u0435\u0441\u044c &#8212; \u0434\u043b\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0432 API \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0430\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435.<\/p>\n<p><em>\u041f\u0440\u0438\u0437\u043d\u0430\u044e\u0441\u044c, \u043e\u043f\u044b\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 javascript \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443 \u043c\u0435\u043d\u044f \u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0441 php \u0438 \u043d\u0435 \u0432\u0441\u0435\u043c\u0443 \u0432 \u043d\u0451\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u044f \u043c\u043e\u0433\u0443 \u0434\u0430\u0442\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \ud83d\ude42 \u041d\u043e \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \ud83d\ude42 Javascript-\u043a\u043e\u0434 \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0438\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u044f\u0434\u0440\u0430 Joomla. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c js-\u043a\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043a\u043d\u043e\u043f\u043a\u0438 &#171;\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435&#187; <\/em><code>media\/com_content\/js\/admin-article-readmore.js<\/code><em> \u0438 &#171;\u0440\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b&#187; <\/em><code>media\/com_content\/js\/admin-article-pagebreak.js<\/code>.<\/p>\n<h4>\u041c\u0435\u0442\u043e\u0434\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u043e\u043a\u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430<\/h4>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 <code>core.js<\/code> (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0447\u0435\u043d\u044c \u043b\u044e\u0431\u044f\u0442 \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435 \u0421\u0415\u041e-\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0437\u043d\u0430\u044e\u0442 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d) \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>window.Joomla.editors.instances<\/code>.<\/p>\n<p>\u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0443 \u0441\u0435\u0431\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u0434\u043b\u044f Joomla: <\/p>\n<ul>\n<li>\n<p><code>getValue<\/code> &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0430\u044f \u0432\u0441\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u043a\u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p><code>setValue<\/code> &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0449\u0430\u044f \u0432\u0441\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u043a\u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c.<\/p>\n<\/li>\n<li>\n<p><code>getSelection<\/code> &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u0437 \u043e\u043a\u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430<\/p>\n<\/li>\n<li>\n<p><code>disable<\/code> &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0432 \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435. <\/p>\n<\/li>\n<li>\n<p><code>replaceSelection<\/code> &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043d\u043e\u0432\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f (\u0432 Joomla \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0441\u0430\u043c \u043a\u043e\u0434 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u044b).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4b1\/0ea\/bff\/4b10eabff516cd30c7df9dd66b03890d.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0432 \u043a\u043e\u0434\u0435 Joomla\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0432 \u043a\u043e\u0434\u0435 Joomla\" width=\"910\" height=\"462\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4b1\/0ea\/bff\/4b10eabff516cd30c7df9dd66b03890d.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0432 \u043a\u043e\u0434\u0435 Joomla<\/figcaption><\/div>\n<\/figure>\n<p>\u0412 javascript \u043a\u043e\u0434\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0430 \u0435\u0441\u0442\u044c \u043b\u0438 \u0442\u0435\u043a\u0441\u0442 \u0432\u043e\u043e\u0431\u0449\u0435? \u0415\u0441\u043b\u0438 \u043d\u0435\u0442  &#8212; \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0431 \u044d\u0442\u043e\u043c \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0441\u0442 \u0435\u0441\u0442\u044c &#8212; \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u0430. \u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c &#8212; \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043d\u0438\u043c. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 &#8212; \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441\u043e \u0432\u0441\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c. <\/p>\n<\/li>\n<li>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0443\u043d\u043a\u0442\u0443 2, \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0431\u044b\u043b \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u0430. \u0418 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442, \u0435\u0441\u043b\u0438 \u043e\u043d \u0431\u044b\u043b \u0432\u044b\u0434\u0435\u043b\u0435\u043d. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043b\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c.<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u0434 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043d\u0435\u043c\u0443:<\/p>\n<pre><code class=\"javascript\">(() => {     \/\/ \u042d\u0442\u043e \u043d\u0430\u0448\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e onclick \u043a\u043d\u043e\u043f\u043a\u0438     \/\/ \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442 editor - \u044d\u0442\u043e id \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430. window.wtTipograf = editor => {          \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0412\u0421\u0401 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u043a\u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043c getValue() const content = window.Joomla.editors.instances[editor].getValue();                \/\/ \u0415\u0441\u043b\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0443\u0441\u0442\u043e - \u0441\u043e\u043e\u0431\u0449\u0435\u0430\u0435\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c if (!content) { Joomla.renderMessages({ error: ['There is no text for Tipograf'] }); } else if (content) {             \/\/ \u0412\u0441\u0451-\u0442\u0430\u043a\u0438 \u0432 \u043e\u043a\u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043c\u044b\u0441\u043b\u0438 \u0435\u0441\u0442\u044c.             \/\/ \u0418\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0432 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u043e\u043c.             \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0442\u0435\u043a\u0441\u0442\u0430             \/\/ \u043c\u0435\u0442\u043e\u0434\u043e\u043c getSelection() let selection = window.Joomla.editors.instances[editor].getSelection();                          \/\/ \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043b\u0430\u0433 \u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 false window.useFullTextForTipograph = false;             \/\/ \u0415\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0440\u0430\u0432\u0435\u043d 0 - \u043e\u043d \u043f\u0443\u0441\u0442\u043e\u0439.              \/\/ \u0417\u043d\u0430\u0447\u0438\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0442. \u0411\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c.             \/\/ \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043b\u0430\u0433 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u0432 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 true             \/\/ \u0418 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e selection \u0431\u0435\u0440\u0451\u043c \u0443\u0436\u0435 \u0432\u0441\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 if (selection.length == 0) { selection = window.Joomla.editors.instances[editor].getValue(); window.useFullTextForTipograph = true; }              \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c ajax-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 PHP, \u043a \u043c\u0435\u0442\u043e\u0434\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430,              \/\/ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443             \/\/ \u0438\u043b\u0438 \u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439              \/\/ \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. Joomla.request({ url: 'index.php?option=com_ajax&amp;plugin=wttipograph&amp;group=editors-xtd&amp;format=json&amp;action=doTipograph', method: 'POST', data: JSON.stringify({ 'text': selection, }), onSuccess: function (response, xhr) { \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430                     \/\/ \u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0443\u043f\u0430\u043b \u0441 500-\u0439, \u043f\u0440\u0438\u0448\u0451\u043b \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438 \u0442.\u0434.  \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u0440\u0438\u0448\u043b\u0438 \u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u044b if (response !== '') {                         \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 - \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. let tipograph_result = JSON.parse(response);                         \/\/ \u0415\u0441\u043b\u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043b\u0430\u0433 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442                         \/\/ \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u043c setValue() if (window.useFullTextForTipograph === true) { window.Joomla.editors.instances[editor].setValue(tipograph_result.data[0]); } else {                         \/\/ \u0415\u0441\u043b\u0438 \u0436\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043b\u0430\u0433 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e                         \/\/ \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u043c \u0442\u0435\u043a\u0441\u0442\u0430,                         \/\/ \u0442\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u043b\u0438\u0448\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u043c replaceSelection() window.Joomla.editors.instances[editor].replaceSelection(tipograph_result.data[0]); } } }, }); }  return true; }; })(); <\/code><\/pre>\n<h4>\u0420\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0441 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u043a\u043d\u043e\u043c<\/h4>\n<p>\u0412 \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u0436\u0438\u043c\u0435 \u0432\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u0441 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u043c \u043e\u043a\u043d\u043e\u043c \u0432 \u043c\u043e\u0434\u0430\u043b\u043a\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c <code>&lt;iframe><\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/eec\/2b5\/682\/eec2b5682b3f6dd703fe30be711a5a16.png\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0430 \u0434\u043b\u044f Joomla 4\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0430 \u0434\u043b\u044f Joomla 4\" width=\"1598\" height=\"735\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/eec\/2b5\/682\/eec2b5682b3f6dd703fe30be711a5a16.png\"\/><\/p>\n<div><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0430 \u0434\u043b\u044f Joomla 4<\/figcaption><\/div>\n<\/figure>\n<p><code>&lt;iframe><\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c, \u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043e\u043a\u043d\u043e\u043c (<code>window<\/code>) \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c\u0443. \u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043b\u0435\u0433\u0447\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c <code>&lt;iframe><\/code>, js-\u0444\u0430\u0439\u043b \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432 HTML-\u043a\u043e\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0442\u0434\u0430\u0451\u043c \u0432 <code>&lt;iframe> <\/code>\u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a url \u0432 \u0435\u0433\u043e <code>src<\/code>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 <code>&lt;iframe><\/code> \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c, \u043b\u043e\u0433\u0438\u043a\u0430 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0430 \u0436\u0435, \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e (\u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u0430\u043c\u0430 Joomla)<\/p>\n<\/li>\n<li>\n<p>\u0412 <code>&lt;iframe> <\/code>\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f HTML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435. \u0412 \u043d\u0451\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043d\u0430\u0448 js-\u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0441\u0442\u044c \u043b\u0438 \u0442\u0435\u043a\u0441\u0442, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430, \u0441\u0442\u0430\u0432\u0438\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043b\u0430\u0433 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>[NEW]<\/strong> \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 HTML-\u043a\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 <code>&lt;textarea id=\"wttipograph-textarea-1\"><\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e ajax, \u0430 \u0442\u043e\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e API \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>[NEW]<\/strong> \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u043e\u043c HTML-\u043a\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 <code>&lt;textarea id=\"wttipograph-textarea-2\"><\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>[NEW] <\/strong>\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u043e\u043c \u0442\u0435\u043a\u0441\u0442 \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0432 <code>&lt;div id=\"wttipograph-render\"><\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043a\u043d\u043e\u043f\u043a\u0438 &#171;\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c&#187;.<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u0410 \u0442\u043e \u0436 \u043c\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043e\u043d\u043e.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0438 \u043a\u0430\u043a \u0441\u0442\u0430\u043b\u043e. \u0410 \u0442\u0430\u043a\u0436\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432  <code>&lt;textarea><\/code>  \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u041f\u0440\u0430\u0432\u0434\u0430, \u0442\u0430\u043c HTML-\u043a\u043e\u0434 \u0438 \u043d\u0435 \u0434\u0443\u043c\u0430\u044e. \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u044f\u043c \u043a\u0438\u043b\u043b\u0435\u0440-\u0444\u0438\u0447\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438 \u043d\u0435\u0442? ?<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0447\u0438\u0442\u0430\u0435\u043c \u043a\u043e\u0434 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043d\u0435\u043c\u0443.<\/p>\n<pre><code class=\"javascript\">(() => {     \/\/ \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c &lt;iframe>     \/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e &lt;iframe>     \/\/ \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e DOMContentLoaded window.wtTipograph = () => {         \/\/ Id \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437 Joomla options storage,         \/\/ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0437 PHP \u0432 JS.         \/\/ \u0415\u0441\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 - \u043c\u044b \u0432 \u043f\u0435\u0447\u0430\u043b\u0438. if (!Joomla.getOptions('xtd-wttipograph')) {  return false; }         \/\/ \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0438\u043c\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.          \/\/ \u041c\u043e\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435. const { editor } = Joomla.getOptions('xtd-wttipograph');          \/\/ \u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u0446\u0435\u043b\u043e\u043c \u0412\u0430\u043c \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c.         \/\/ \u041e\u0442\u043b\u0438\u0447\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f          \/\/ \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u043c \u043e\u043a\u043d\u0435 - \u0432 &lt;iframe>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443         \/\/ \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0438\u0434\u0451\u0442 \u0443 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e window.parent,         \/\/ \u0432\u043c\u0435\u0441\u0442\u043e window.Joomla.editors...        let selection = window.parent.Joomla.editors.instances[editor].getSelection(); window.useFullTextForTipograph = false;         \/\/ \u0415\u0441\u043b\u0438 \u0434\u043b\u0438\u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 0 - \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c. if (selection.length == 0) { selection = window.parent.Joomla.editors.instances[editor].getValue(); window.useFullTextForTipograph = true; }         \/\/ \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c id 2-\u0445 &lt;textarea> \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0414\u041e \u0438 \u041f\u041e\u0421\u041b\u0415         \/\/ \u0410 \u0442\u0430\u0436\u0435 id &lt;div> \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 let textarea1 = document.getElementById('wttipograph-textarea-1'); let textarea2 = document.getElementById('wttipograph-textarea-2'); let wttipographRenderDiv = document.getElementById('wttipograph-render');         \/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0411\u042b\u041b\u041e.         textarea1.innerText = selection;         \/\/ \u0414\u0435\u043b\u0430\u0435\u043c ajax-\u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430. Joomla.request({ url: 'index.php?option=com_ajax&amp;plugin=wttipograph&amp;group=editors-xtd&amp;format=json&amp;action=doTipograph', method: 'POST', data: JSON.stringify({ 'text': selection, }), onSuccess: function (response, xhr) { \/\/ \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430                 \/\/ \u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0443\u043f\u0430\u043b \u0441 500-\u0439, \u043f\u0440\u0438\u0448\u0451\u043b \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438 \u0442.\u0434. \/\/\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u0440\u0438\u0448\u043b\u0438 \u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u044b if (response !== '') { let tipograph_result = JSON.parse(response);                     \/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u0421\u0422\u0410\u041b\u041e textarea2.innerHTML = tipograph_result.data[0];                     \/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432 &lt;div> wttipographRenderDiv.innerHTML = tipograph_result.data[0]; } }, });  return true; };  document.addEventListener('DOMContentLoaded', () => {         \/\/ \u0412\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. window.wtTipograph();  \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\" let pasteBtn = document.getElementById('pasteTipographedTextBtn'); pasteBtn.addEventListener('click', () => {             \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 if (!Joomla.getOptions('xtd-wttipograph')) {  return false; }                          \/\/ \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0438\u043c\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 const { editor } = Joomla.getOptions('xtd-wttipograph');                        \/\/ \u0411\u0435\u0440\u0451\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440. let wttipographRenderDiv = document.getElementById('wttipograph-render');                        \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043b\u0430\u0433. \u041e\u0442 \u043d\u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043a\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430             \/\/ \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c setValue() \u0438\u043b\u0438 replaceSelection() if (window.useFullTextForTipograph === true) { window.parent.Joomla.editors.instances[editor].setValue(wttipographRenderDiv.innerHTML); } else { window.parent.Joomla.editors.instances[editor].replaceSelection(wttipographRenderDiv.innerHTML); }                        \/\/ \u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u0434\u0448\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. if (window.parent.Joomla.Modal) { window.parent.Joomla.Modal.getCurrent().close(); } }); }); })();<\/code><\/pre>\n<p>\u041d\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0437\u0430\u0432\u0435\u0441\u0443 \u0442\u0430\u0439\u043d\u044b \u043d\u0430\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430. \u041c\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0432 PHP.<\/p>\n<h3>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 Joomla PHP \u043f\u043e ajax \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c API<\/h3>\n<p>\u041f\u0440\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u044d\u0442\u0430\u043f, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0438\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0438 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043a\u0430\u043a \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u0437\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. <\/p>\n<p>\u041f\u043e\u043b\u0430\u0437\u0438\u0432 \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 \u044f \u043d\u0430\u0448\u0451\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 (<a href=\"https:\/\/www.artlebedev.ru\/typograf\/\" rel=\"noopener noreferrer nofollow\">\u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444 \u0410\u0440\u0442\u0435\u043c\u0438\u044f \u041b\u0435\u0431\u0435\u0434\u0435\u0432\u0430<\/a>, <a href=\"https:\/\/typograf.ru\/\" rel=\"noopener noreferrer nofollow\">https:\/\/typograf.ru\/<\/a>), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 PHP \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432 Joomla \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0432, \u0447\u0442\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u043e \u0432\u044b\u0431\u043e\u0440\u0443 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c\u0443 API \u043d\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 javascript, \u0430 \u0438\u0437 PHP. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0447\u0442\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 PHP \u043a\u043e\u0434 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c\u0438. <\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0437 js \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c ajax \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043c\u0435\u0442\u043e\u0434\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 <code>onAjaxWttipograph()<\/code>. \u041a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"https:\/\/docs.joomla.org\/Using_Joomla_Ajax_Interface\/ru\" rel=\"noopener noreferrer nofollow\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/588651\/\" rel=\"noopener noreferrer nofollow\">Ajax-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 Joomla<\/a>. \u0412 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c <code>[onAjax + \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430]<\/code>. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <code>onAjaxWttipograph()<\/code>. <\/p>\n<p>\u041c\u044b \u043f\u043e\u043c\u043d\u0438\u043c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u044d\u0442\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434\u0443 \u0438\u0434\u0451\u0442 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0412 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0440\u0430\u0437\u0443 \u043e\u0442\u0434\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0430 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c &#8212; \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c HTML-\u043a\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e <code>&lt;iframe><\/code> \u0434\u043b\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 ajax-\u043c\u0435\u0442\u043e\u0434 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u0445\u043e\u0434\u0430, \u0433\u0434\u0435 \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u0432 URL \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/p>\n<pre><code class=\"php\">&lt;?php  use Joomla\\CMS\\Factory; class PlgButtonWttipograph extends CMSPlugin {   \/\/ \u041c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043e\u0442\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 ajax \u0437\u0430\u043f\u0440\u043e\u0441.   public function onAjaxWttipograph() {         \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f $app = Factory::getApplication();         \/\/ \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438\u0434\u0451\u0442 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0442\u043e\u043a\u0435\u043d.         \/\/ \u0421\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430, \u043d\u043e \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435         \/\/ \u0432\u0440\u044f\u0434 \u043b\u0438 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u043d\u0438\u0439 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u0410 \u0435\u0441\u043b\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f, \u0442\u043e          \/\/ \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u043e\u043a\u0435\u043d\u0430 \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442. if ($app->isClient('site')) { Session::checkToken('get') or die(Text::_('JINVALID_TOKEN')); }          \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 action \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443          \/\/ \u043c\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0427\u0422\u041e \u0434\u0435\u043b\u0430\u0442\u044c - \u043f\u043e\u043a\u0430\u0437\u0442\u044c HTML-\u0444\u043e\u0440\u043c\u0443         \/\/ \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438. $action = $app->input->getCmd('action', 'wtTipograph');         \/\/ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f if ($action == 'doTipograph') {           \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0438\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430.           \/\/ \u041e\u0411\u0420\u0410\u0422\u0418\u0422\u0415 \u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415 \u041d\u0410 \u041f\u0410\u0420\u0410\u041c\u0415\u0422\u0420 \u0424\u0418\u041b\u042c\u0422\u0420\u0410\u0426\u0418\u0418 - RAW!           \/\/ \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0439, \u0412\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435            \/\/ \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0434\u0438 \u0442\u0435\u043a\u0441\u0442.           \/\/ \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e Joomla \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0438\u043b\u044c\u0442\u0440 Cmd           \/\/ \u0427\u0438\u0442\u0430\u0435\u043c \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438           \/\/ https:\/\/docs.joomla.org\/Retrieving_request_data_using_JInput#Available_Filters            $text = Factory::getApplication()->input->json->get('text', '', 'raw'); if (isset($text) &amp;&amp; !empty($text)) { return $this->doTipograph($text); }  } \/\/ \u0410 \u0442\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c HTML-\u0444\u043e\u0440\u043c\u0443 elseif ($action == 'showform') { $this->showTipographForm(); } } }<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f <a href=\"https:\/\/docs.joomla.org\/Retrieving_request_data_using_JInput#Available_Filters\" rel=\"noopener noreferrer nofollow\">\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043f\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u043c \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 Input<\/a> Joomla. <\/p>\n<h4>\u0412\u044b\u0432\u043e\u0434 HTML \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e &lt;iframe> \u043f\u043e ajax \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u0432 Joomla<\/h4>\n<p>\u0422\u0438\u043f \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043b\u044e\u0431\u043e\u0439. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, json, \u0430 \u0432 \u0430\u0434\u043c\u0438\u043d\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0432 \u0432\u0438\u0434\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,  <code>&lt;template><\/code>. \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0432\u044b\u0432\u043e\u0434\u043e\u043c HTML \u0444\u043e\u0440\u043c\u044b.<\/p>\n<pre><code class=\"php\">&lt;?php  use Joomla\\CMS\\Factory;  class PlgButtonWttipograph extends CMSPlugin {     \/**  * \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.  *  * @throws Exception  * @since 1.0.0  *\/ public function showTipographForm() {         \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f $app    = Factory::getApplication();         \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 editor, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c         \/\/ \u0432 javascript.  $editor = $app->input->getCmd('editor', ''); if (!empty($editor)) {           \/\/ \u041f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 PHP \u0432 Javascript \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 addScriptOptions()           \/\/ \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u043c\u044b \u0432 js \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0438\u0441\u044c \u043a \u043c\u0435\u0442\u043e\u0434\u0443 Joomla.getOptions('xtd-wttipograph')?           \/\/ \u0415\u0449\u0451 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e \u043c\u0435\u0442\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0434\u0435\u0441\u044c https:\/\/web-tolk.ru\/blog\/razrabotka-form-obratnoj-svyazi-dlya-magazinov-na-joomla-3.html $app->getDocument()->addScriptOptions('xtd-wttipograph', ['editor' => $editor]); }  \/** @var Joomla\\CMS\\WebAsset\\WebAssetManager $wa *\/ $wa = $app->getDocument()->getWebAssetManager();         \/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430\u0448 js-\u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Web Asset Manager $wa->registerAndUseScript('admin-wttipograph-modal', 'plg_editors-xtd_wttipograph\/admin-wttipograph-modal.js');          \/\/ \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 HTML.         \/\/ \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0432\u0441\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438. \u041d\u043e \u043c\u044b \u043f\u043e\u043c\u043d\u0438\u043c,          \/\/ \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 - \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. $html = &lt;&lt;&lt;HTML  &lt;div class=\"row\"> &lt;div class=\"col h-100\"> &lt;label for=\"wttipograph-textarea-1\" class=\"form-label\">\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442&lt;\/label> &lt;textarea class=\"form-control\" rows=\"10\" disabled=\"disabled\" id=\"wttipograph-textarea-1\">&lt;\/textarea>  &lt;\/div> &lt;div class=\"col h-100\"> &lt;label for=\"wttipograph-textarea-2\" class=\"form-label\">\u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442&lt;\/label> &lt;textarea class=\"form-control\" rows=\"10\" id=\"wttipograph-textarea-2\">&lt;\/textarea> &lt;\/div> &lt;\/div> &lt;div class=\"btn-group\" role=\"group\" aria-label=\"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\" id=\"pasteTipographedTextBtn\"> &lt;button type=\"button\" class=\"btn btn-lg btn-large btn-primary mt-3\">\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c&lt;\/button> &lt;\/div> &lt;details class=\"shadow-sm border border-1 w-100\"> &lt;summary class=\"btn btn-outline-ligh text-center w-100\">\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442&lt;\/summary> &lt;div class=\"p-3\" id=\"wttipograph-render\">&lt;\/div> &lt;\/details>  HTML;  echo $html; } }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c js-\u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 <code>&lt;iframe><\/code> \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 HTML \u043a\u043e\u0434\u043e\u043c. \u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e <a href=\"https:\/\/web-tolk.ru\/blog\/razrabotka-form-obratnoj-svyazi-dlya-magazinov-na-joomla-3.html\" rel=\"noopener noreferrer nofollow\">\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0444\u043e\u0440\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0434\u043b\u044f \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432 \u043d\u0430 Joomla 3<\/a>, \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0435\u0442\u043e\u0434\u043e\u043c <code>addScriptOptions()<\/code> Joomla. \u041c\u0435\u0442\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043d\u0430 Joomla 4. \u0415\u0449\u0451 \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 <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>. \u0418 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 <a href=\"https:\/\/habr.com\/ru\/articles\/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>. \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0432\u0441\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438. \u041d\u043e \u043c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <code>Joomla\\CMS\\Language\\Text::_('YOUR_CONST')<\/code>.<\/p>\n<p>\u0418 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c\u0443 API &#8212; <code>doTipograph()<\/code>.<\/p>\n<h4>\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c\u0443 API \u0438\u0437 Joomla<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0412\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430 &#8212; \u0432 Joomla \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u0437 PHP \u043a\u043b\u0430\u0441\u0441 <code>HttpFactory<\/code>. \u0415\u0441\u043b\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0438 \u043e\u043d \u043d\u0430\u043f\u0438\u0447\u043a\u0430\u043d \u043a\u0443\u0447\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a &#8212; \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>HttpFactory<\/code>. <\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0431\u044b\u043b\u0430 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/568996\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c HttpFactory (Joomla)<\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/web-tolk.ru\/blog\/sozdanie-vneshnikh-zaprosov-s-ispolzovaniem-httpfactory-joomla.html\" rel=\"noopener noreferrer nofollow\">\u043a\u043e\u043f\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u043c\u043e\u0451\u043c \u0441\u0430\u0439\u0442\u0435 \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f Joomla 4<\/a>. <\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u044f\u0434\u0440\u0430 Joomla? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u044f\u0434\u0440\u043e\u043c. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044e \u0438\u0445 \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u0412\u0430\u0448\u0438 \u043f\u043b\u0435\u0447\u0438. \u0420\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u0441\u0430\u0439\u0442\u0443 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e PHP \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c Joomla, \u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0438\/\u0438\u043b\u0438 \u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. <\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u0430: \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0434\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442. \u0415\u0441\u043b\u0438 \u0412\u044b \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u0432\u044b\u0448\u0435 &#8212; \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0443 \u0412\u0430\u0441, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442.<\/p>\n<pre><code class=\"php\">&lt;?php   class PlgButtonWttipograph extends CMSPlugin {     \/**  * \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438\u043b\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430.  *  * @param   string  $text  *  * @return string  * @since 1.0.0  *\/ public function doTipograph(string $text) {         \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 HttpFactory $http       = (new \\Joomla\\Http\\HttpFactory())->getHttp();         \/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430. $xml_params = '&lt;?xml version=\"1.0\" encoding=\"windows-1251\" ?> &lt;preferences> &lt;!-- \u0422\u0435\u0433\u0438 --> &lt;tags delete=\"0\">1&lt;\/tags> &lt;!-- \u0410\u0431\u0437\u0430\u0446\u044b --> &lt;paragraph insert=\"1\"> &lt;start>&lt;![CDATA[&lt;p>]]&gt;&lt;\/start> &lt;end>&lt;![CDATA[&lt;\/p>]]&gt;&lt;\/end> &lt;\/paragraph> &lt;!-- \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0441\u0442\u0440\u043e\u043a --> &lt;newline insert=\"1\">&lt;![CDATA[&lt;br \/>]]&gt;&lt;\/newline> &lt;!-- \u041f\u0435\u0440\u0435\u0432\u043e\u0434\u044b \u0441\u0442\u0440\u043e\u043a &lt;p>&amp;nbsp;&lt;\/p> --> &lt;cmsNewLine valid=\"0\" \/> &lt;!-- DOS \u0442\u0435\u043a\u0441\u0442 --> &lt;dos-text delete=\"0\" \/> &lt;!-- \u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 --> &lt;nowraped insert=\"1\" nonbsp=\"0\" length=\"0\"> &lt;start>&lt;![CDATA[&lt;nobr>]]&gt;&lt;\/start> &lt;end>&lt;![CDATA[&lt;\/nobr>]]&gt;&lt;\/end> &lt;\/nowraped> &lt;!-- \u0412\u0438\u0441\u044f\u0447\u0430\u044f \u043f\u0443\u043d\u043a\u0442\u0443\u0430\u0446\u0438\u044f --> &lt;hanging-punct insert=\"0\" \/> &lt;!-- \u0423\u0434\u0430\u043b\u044f\u0442\u044c \u0432\u0438\u0441\u044f\u0447\u0438\u0435 \u0441\u043b\u043e\u0432\u0430 --> &lt;hanging-line delete=\"0\" \/> &lt;!-- \u0421\u0438\u043c\u0432\u043e\u043b \u043c\u0438\u043d\u0443\u0441 --> &lt;minus-sign>&lt;![CDATA[&amp;ndash;]]&gt;&lt;\/minus-sign> &lt;!-- \u041f\u0435\u0440\u0435\u043d\u043e\u0441\u044b --> &lt;hyphen insert=\"0\" length=\"0\" \/> &lt;!-- \u0410\u043a\u0440\u043e\u043d\u0438\u043c\u044b --> &lt;acronym insert=\"1\">&lt;\/acronym> &lt;!-- \u0412\u044b\u0432\u043e\u0434 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 0 - \u0431\u0443\u043a\u0432\u0430\u043c\u0438 1 - \u0447\u0438\u0441\u043b\u0430\u043c\u0438 --> &lt;symbols type=\"0\" \/> &lt;!-- \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043e\u043a --> &lt;link target=\"\" class=\"\" \/> &lt;\/preferences>';          \/\/ \u0413\u043e\u0442\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 $options = [ 'text' => $text, 'chr'  => 'UTF-8', 'xml'  => $xml_params ];  $url      = 'https:\/\/typograf.ru\/webservice\/'; $response = $http->post($url, $options);         \/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043e\u0442\u0432\u0435\u0442 return $response->body; } }<\/code><\/pre>\n<p><strong>\u0427\u0435\u0433\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435? <\/strong><\/p>\n<ul>\n<li>\n<p>\u0412 \u043d\u0451\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u043a\u043e\u0434 \u043e\u0442\u0432\u0435\u0442\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430<code>$response->code<\/code>. <\/p>\n<\/li>\n<li>\n<p>\u0422\u0430\u043a\u0436\u0435, \u043f\u0430\u043c\u044f\u0442\u0443\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 &#8212; \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430\u043c: \u043f\u043e URL \u0438\u043b\u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e. <\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u044d\u0442\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c. \u0422\u043e\u0433\u0434\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0432\u0438\u0434 \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0438\u043b\u0438 \u0442\u0438\u0440\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/p>\n<\/li>\n<\/ul>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d &#8212; \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u043e \u0438 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u0441\u043b\u043e\u0436\u043d\u044b\u0439. \u0415\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c, \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0438 \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438. \u041a\u043e\u043d\u0442\u0435\u043d\u0442-\u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u044b, \u0421\u0415\u041e-\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u044b \u0432 Joomla \u0438\u043c\u0435\u044e\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435. <\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0432\u0438\u0434\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430: \u0434\u043b\u0438\u043d\u0430, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432, \u0442\u043e\u0448\u043d\u043e\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u0442.\u0434. \u0422\u043e\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0438\u0437 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0430 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0435\u043a\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u0418\u043b\u0438 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0438\u0441 \u0418\u0418 \u043f\u0440\u044f\u043c\u043e \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Joomla. \u041a \u0441\u043b\u043e\u0432\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0434\u043b\u044f ChatGPT \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 Joomla Extensions Directory \u0443\u0436\u0435 \u0435\u0441\u0442\u044c. \u0418 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043e\u0434\u043d\u043e.<\/p>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u044f \u0441\u0430\u043c \u043e\u0436\u0438\u0434\u0430\u043b. \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u043e\u043c\u0443 \u043a\u0440\u0443\u0433\u0443 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 Joomla  \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432. \u0421 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u0440\u0438\u043c\u0443 \u0432\u0441\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0438 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h2>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b<\/h2>\n<h3>\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430:<\/h3>\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<h3>Telegram:<\/h3>\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<p> <!----> <!----><\/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\/articles\/742422\/\"> https:\/\/habr.com\/ru\/articles\/742422\/<\/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>\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0432 Joomla. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u044b\u043c \u0441 \u043d\u0443\u0442\u0440\u043e\u043c Joomla. \u0415\u0441\u043b\u0438 \u0412\u044b \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a &#8212; \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043a \u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"#make-plugin\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c?<\/a><\/p>\n<h2>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u0432 Joomla?<\/h2>\n<p>\u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 Joomla &#171;\u043f\u043b\u0430\u0433\u0438\u043d&#187; &#8212; \u044d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441\u00a0<a href=\"https:\/\/docs.joomla.org\/Plugin\/Events\" rel=\"noopener noreferrer nofollow\">\u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438<\/a>\u00a0(Event Dispatching).  \u0412 Joomla \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u043e\u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u043c\u0435\u0441\u0442\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u043d \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442: \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u0438\u0439 \u043a\u0443\u0441\u043e\u0447\u0435\u043a HTML \u043a \u0441\u0442\u0430\u0442\u044c\u0435, \u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u043a\u0430\u0437\u0430 \u043f\u043e API \u0432 CRM \u0441\u0438\u0441\u0442\u0435\u043c\u0443, &#171;\u043f\u0440\u043e\u0447\u0435\u0441\u0430\u0442\u044c&#187; \u0432\u0435\u0441\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 HTML-\u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u043e\u0439 \u0438\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 Joomla CLI \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u044d\u0442\u0438\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c. \u0421\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u044f\u0434\u0440\u043e Joomla, \u0442\u0430\u043a \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0434\u0430 \u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043b\u044e\u0431\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f Joomla. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 WordPress &#171;\u043f\u043b\u0430\u0433\u0438\u043d&#187; &#8212; \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u0432 Joomla \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f &#171;\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442&#187;.<\/p>\n<h2>\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0433\u0440\u0443\u043f\u043f\u044b Editors-Xtd \u0438\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043a\u043d\u043e\u043f\u043e\u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430<\/h2>\n<p><strong><em>\u0414\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0438\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0445 \u0441 Joomla \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0412\u044b &#8212; \u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0438\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a &#8212; \u043c\u043e\u0436\u0435\u0442\u0435 \u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<\/em><\/strong><\/p>\n<p>\u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0441\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0432 Joomla \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0433\u0440\u0443\u043f\u043f\u044b, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0438 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0441\u0430\u0439\u0442\u0430. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 <code>system<\/code>. \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u041f\u0415\u0420\u0415\u0414 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438 \u0433\u0440\u0443\u043f\u043f. \u0422\u043e \u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 2 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 (\u0433\u0440\u0443\u043f\u043f\u0430 <code>system<\/code>), \u0430 \u0434\u0440\u0443\u0433\u043e\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u043f\u043b\u0430\u0433\u0438\u043d (\u0433\u0440\u0443\u043f\u043f\u0430 <code>content<\/code>) \u0441 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c (\u0442\u0440\u0438\u0433\u0433\u0435\u0440), \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442-\u043f\u043b\u0430\u0433\u0438\u043d. <\/p>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u0433\u0440\u0443\u043f\u043f\u044b <code>editors-xtd<\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0441\u0430\u0439\u0442\u0430, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430: \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u043e\u0432\u0430\u0440\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u0442.\u0434.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla 4. \u0428\u0442\u0430\u0442\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 Tiny MCE.<\/figcaption><\/div>\n<\/figure>\n<h2>\u0417\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b? <\/h2>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d\u044b \u044d\u0442\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043a \u043e\u043a\u043d\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0442\u0435\u043a\u0441\u0442\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c TinyMCE, Code Mirror, \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0437 Joomla Extensions Directory JCE \u0438\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0431\u0435\u0437 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c HTML \u043a\u043e\u0434 \u0440\u0443\u043a\u0430\u043c\u0438. \u041d\u043e \u044d\u0442\u0438 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0435\u0433\u0434\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u043e\u0434 \u043e\u043a\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u0440\u0430\u0437\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 \u043d\u0430\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0432 \u043e\u043a\u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u043c.<\/p>\n<p>\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0448\u043e\u0440\u0442\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 (<code>{loadposition position_name}<\/code>) \u0438\u043b\u0438 \u043f\u043e id \u043c\u043e\u0434\u0443\u043b\u044f (<code>{loadmoduleid 42}<\/code>). <\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0448\u043e\u0440\u0442\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e \u0438 \u0442.\u0434.<\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0434\u0438\u0430 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 (\u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u0432\u043e\u0438 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b).<\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043b\u0438\u043d\u0438\u0439 &#171;\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435&#187; \u0438\/\u0438\u043b\u0438 &#171;\u0440\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b&#187;.<\/p>\n<\/li>\n<li>\n<p>\u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u0448\u043e\u0440\u0442\u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u0435\u0433\u043e \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0444\u043e\u0442\u043e\u0433\u0430\u043b\u0435\u0440\u0435\u0438<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u043e\u0431\u0449\u0435 \u043b\u044e\u0431\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441 HTML-\u043a\u043e\u0434\u043e\u043c \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a, \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0438\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c\u0443 API \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0412\u0441\u0451, \u0447\u0442\u043e \u0412\u0430\u0448\u0430 \u0434\u0443\u0448\u0430 \u043f\u043e\u0436\u0435\u043b\u0430\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 2-\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><strong>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1:<\/strong> \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442 HTML-\u043a\u043e\u0434 \u0432 \u043f\u043e\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2:<\/strong> \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0437\u0430\u0442\u0435\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044e\u0442 HTML-\u043a\u043e\u0434 \u0432 \u043f\u043e\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 &#8212; \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u043b\u0438\u043d\u0438\u0438 &#171;\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435&#187;. \u0412 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u0445 Joomla \u044d\u0442\u0430 \u043b\u0438\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u0432\u0441\u0442\u0443\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/64903ec34ffc4801f3e17a84\" data-style=\"\" id=\"64903ec34ffc4801f3e17a84\" width=\"\"><\/div>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 2-\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 &#8212; \u043a\u043d\u043e\u043f\u043a\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 SEF \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u0437\u0430\u0442\u0435\u043c \u0432 \u0442\u0435\u043a\u0441\u0442 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f non-SEF \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b. \u041f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d SEF \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0445 \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 SEF \u0441\u0441\u044b\u043b\u043a\u0438. \u0415\u0441\u043b\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u0439 \u0436\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438, \u043d\u043e \u0431\u0443\u0434\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d &#8212; url \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u043d\u0435\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. <\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/64903ec365e33b48152dbb08\" data-style=\"\" id=\"64903ec365e33b48152dbb08\" width=\"\"><\/div>\n<p><a class=\"anchor\" name=\"make-plugin\" id=\"make-plugin\"><\/a><\/p>\n<h2>\u041a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 Joomla \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c?<\/h2>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0433\u0440\u0443\u043f\u043f\u044b <code>editors-xtd<\/code>. \u0422\u0430\u043a\u0436\u0435 \u0412\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f <a href=\"https:\/\/habr.com\/ru\/articles\/736412\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Joomla 4<\/a>.<\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u0430\u0451\u0442 \u0412\u0430\u043c Joomla \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 <a href=\"https:\/\/web-tolk.ru\/dev\/joomla-plugins\/wt-typograph.html\" rel=\"noopener noreferrer nofollow\">\u043f\u043b\u0430\u0433\u0438\u043d WT Typograph<\/a>, \u0441\u043b\u0443\u0436\u0430\u0449\u0438\u0439 \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u043a \u0435\u0434\u0438\u043d\u043e\u043c\u0443 \u0441\u0442\u0438\u043b\u044e.<\/p>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d:<\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0438 <a href=\"https:\/\/typograf.ru\/\" rel=\"noopener noreferrer nofollow\">typograf.ru<\/a>. \u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0438\u043c\u0435\u0435\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0435 API.<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 API \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u0415\u0441\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0442 &#8212; \u0432\u0435\u0441\u044c \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0438\u043c\u0435\u0435\u0442 2 \u0440\u0435\u0436\u0438\u043c\u0430: \u043e\u0431\u044b\u0447\u043d\u044b\u0439 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0438 \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441. <\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0430 \u0438 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 &#171;\u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c&#187;. \u0417\u0430\u043c\u0435\u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u044d\u0442\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0442\u0435\u043a\u0441\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 API \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u0440\u0430\u0437\u0443, \u0431\u0435\u0437 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u043f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0420\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d \u0441\u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c \u0432 Joomla.<\/p>\n<h3>\u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430<\/h3>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u0432\u0441\u0435\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0435\u0447\u0438 javascript.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 API \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0435\u0433\u043e, \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 javascript \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0435\u0447\u0438 PHP.<\/p>\n<p>\u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0447\u0430\u0441\u0442\u044c (javascript \u043a\u043e\u0434) \u043c\u044b \u0440\u0430\u0437\u043d\u0435\u0441\u0451\u043c \u043f\u043e \u0434\u0432\u0443\u043c \u0440\u0430\u0437\u043d\u044b\u043c js-\u0444\u0430\u0439\u043b\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<h3>\u0424\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/h3>\n<p>\u0412 Joomla 3 \u0438 Joomla 4 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. \u041e\u0434\u043d\u0430\u043a\u043e, Joomla 4 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430. \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u042d\u0442\u043e, \u0441\u043a\u043e\u0440\u0435\u0435, \u0447\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c. \u041d\u043e, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 Joomla 4.3 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0433\u0440\u0443\u043f\u043f\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438\u043c\u0435\u043b\u0438 \u0441\u0442\u0430\u0440\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 <code>namespaces<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 4.3 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u043f\u043e \u043d\u043e\u0432\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043f\u043e \u043c\u043d\u043e\u0433\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <em>&#171;\u041d\u043e\u0432\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 \u0432 Joomla 4&#187;<\/em> \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/736412\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b Joomla 4<\/a>.<\/p>\n<h3>\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d\u0430. PHP<\/h3>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u0444\u0430\u0439\u043b\u0430 (\u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0442\u0430\u0440\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 Joomla 3):<\/p>\n<ul>\n<li>\n<p>XML-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/p>\n<\/li>\n<li>\n<p>\u0444\u0430\u0439\u043b \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/p>\n<\/li>\n<\/ul>\n<h4>XML-\u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u0430<\/h4>\n<p>\u0412 \u043d\u0451\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \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 \u043f\u043b\u0430\u0433\u0438\u043d\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0438 \u0442.\u0434. <\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?> &lt;extension type=\"plugin\" group=\"editors-xtd\" method=\"upgrade\"> &lt;name>\u041a\u043d\u043e\u043f\u043a\u0430 - \u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444&lt;\/name> &lt;author>Sergey Tolkachyov&lt;\/author> &lt;creationDate>12\/03\/2023&lt;\/creationDate> &lt;copyright>(C) 2023 Sergey Tolkachyov&lt;\/copyright> &lt;license>GNU General Public License version 2 or later; see LICENSE.txt&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>\u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u043e\u0432&lt;\/description> &lt;scriptfile>script.php&lt;\/scriptfile> &lt;files> &lt;filename plugin=\"wttipograph\">wttipograph.php&lt;\/filename> &lt;\/files> &lt;scriptfile>script.php&lt;\/scriptfile> &lt;media folder=\"media\" destination=\"plg_editors-xtd_wttipograph\"> &lt;folder>js&lt;\/folder> &lt;\/media> &lt;config> &lt;fields name=\"params\"> &lt;fieldset name=\"basic\"> &lt;field type=\"radio\"    name=\"express_mode\"    label=\"\u042d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u0440\u0435\u0436\u0438\u043c?\"    description=\"\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 (\u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0435\u0435) \u043e\u043a\u043d\u043e. \u042d\u043a\u0441\u043f\u0440\u0435\u0441\u0441 \u0440\u0435\u0436\u0438\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435, \u0431\u0435\u0437 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430.\"    class=\"btn-group btn-group-yesno\"    default=\"0\"> &lt;option value=\"1\">JYES&lt;\/option> &lt;option value=\"0\">JNO&lt;\/option> &lt;\/field> &lt;\/fieldset> &lt;\/fields> &lt;\/config> &lt;\/extension> <\/code><\/pre>\n<p>\u0421\u0435\u043a\u0446\u0438\u044f <code>&lt;files><\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 Joomla \u0432 \u043a\u0430\u043a\u043e\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430.<\/p>\n<p>\u0421\u0435\u043a\u0446\u0438\u044f <code>&lt;media><\/code> \u0433\u043e\u0432\u043e\u0440\u0438\u0442 Joomla, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043a\u0438 <code>js<\/code> \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 <code>media\/plg_editors-xtd_wttipograph\/js<\/code>. \u041d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u0432 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u044b (\u0438 \u0441\u0442\u0438\u043b\u0438) \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043f\u043e\u0442\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>HTMLHelper<\/code> (\u0438\u043b\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/672020\/\" rel=\"noopener noreferrer nofollow\">Web Assets Manager \u0432 Joomla 4<\/a>).<\/p>\n<p>\u0421\u0435\u043a\u0446\u0438\u044f <code>&lt;config><\/code> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0438\u0437 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u0415\u0441\u043b\u0438 \u0412\u0430\u043c \u044d\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e &#8212; \u044d\u0442\u0443 \u0441\u0435\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u043a\u0441\u043f\u0440\u0435\u0441\u0441-\u0440\u0435\u0436\u0438\u043c\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u0445 <code>label<\/code> \u0438 <code>description<\/code> \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e-\u0440\u0443\u0441\u0441\u043a\u0438. Joomla \u0442\u0430\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c. \u041d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0438 \u0412\u0430\u0448\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043d\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438 \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u044d\u0442\u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b. <\/p>\n<h4>PHP \u0444\u0430\u0439\u043b \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0432\u044b\u0432\u043e\u0434 \u043a\u043d\u043e\u043f\u043a\u0438<\/h4>\n<p>\u041a\u043b\u0430\u0441\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u043a\u043b\u0430\u0441\u0441 <code>CMSPlugin<\/code> \u0438 \u0432 Joomla 3 (\u0438 legacy Joomla 4) \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0451 \u0438\u043c\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>Plg<\/code>, \u0441\u043b\u043e\u0432\u043e<code>Button<\/code> \u0438 \u0438\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430. \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 \u0438 \u043f\u0430\u043f\u043a\u0438, \u0433\u0434\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u043b\u0435\u0436\u0438\u0442.<\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 <code>plugins\/editors-xtd\/wttipograph\/wttipograph.php<\/code> \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 <code>PlgButtonWttipograph<\/code>. \u0412 Joomla 4 \u0441 \u044d\u0442\u0438\u043c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043f\u0440\u043e\u0449\u0435 ?. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c <code>class PlgButtonWttipograph extends CMSPlugin<\/code>. \u0432 \u043d\u0451\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434 <code>onDisplay()<\/code>. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0430\u043c\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438.<\/p>\n<pre><code class=\"php\">&lt;?php use Joomla\\CMS\\Plugin\\CMSPlugin; use Joomla\\CMS\\Factory;  \\defined('_JEXEC') or die;  class<\/code><\/pre>\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-349035","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/349035","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=349035"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/349035\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=349035"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=349035"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=349035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}