{"id":361375,"date":"2024-05-21T01:12:24","date_gmt":"2024-05-21T01:12:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=361375"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=361375","title":{"rendered":"<span>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043e\u043b\u044f Form \u0432 Joomla 5 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Modal Select<\/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>\u0412 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Joomla \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e, \u043a\u043e\u043d\u0442\u0430\u043a\u0442, \u0442\u043e\u0432\u0430\u0440 \u0438 \u0442.\u0434. \u041e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u044f \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 <code>select option<\/code>, \u043c\u043e\u0433\u0443\u0442 \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 <code>input type=\"text\"<\/code> \u0441 <code>datalist<\/code>, \u043d\u043e \u0435\u0441\u0442\u044c \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043a\u043e\u043c\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0435\u0439, \u043f\u043e\u0438\u0441\u043a\u043e\u043c, \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0435\u0439 \u0438 \u0442.\u0434. <\/p>\n<p>\u0412\u0441\u0435 \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u044d\u0442\u0438 \u043f\u043e\u043b\u044f \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 \u043c\u0435\u043d\u044e \u0442\u0438\u043f\u0430 &#171;\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b &#8212; \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b&#187;, &#171;\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b &#8212; \u041a\u043e\u043d\u0442\u0430\u043a\u0442&#187;, \u0438\u043b\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0430\u043b\u0438\u0430\u0441\u0430 (\u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430) \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e &#8212; &#171;\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 &#8212; \u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c&#187;. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043c \u0441\u0435\u0431\u0435 \u043a\u0430\u043a \u043e\u043d\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442.<\/p>\n<p>\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65ae295328dfc09d9ed8fc2c\" data-style=\"\" id=\"65ae295328dfc09d9ed8fc2c\" width=\"\"><\/div>\n<p>\u041d\u0430 \u0432\u0438\u0434\u0435\u043e &#8212; \u0443\u0442\u0440\u043e, \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0447\u0443\u0442\u044c \u0442\u0443\u043f\u0438\u0442 )) <\/p>\n<p>\u0410 \u044d\u0442\u043e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65ae29534c5bea9d8aeefa62\" data-style=\"\" id=\"65ae29534c5bea9d8aeefa62\" width=\"\"><\/div>\n<h2>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0432 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u0432 Joomla<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u044d\u0442\u0438 \u043f\u043e\u043b\u044f &#8212; \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041c\u044b \u0433\u0434\u0435-\u0442\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f &#8212; <strong>\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c id \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e id \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435<\/strong>. \u041d\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043d\u0435\u0447\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435 &#8212; \u0432\u043c\u0435\u0441\u0442\u043e \u0446\u0438\u0444\u0440\u044b \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430. \u042d\u0442\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e. \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0441 id 1452704. \u0422\u0430\u043a\u0436\u0435, \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u043e\u0442\u0447\u0451\u0442\u043b\u0438\u0432\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#8212; \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <strong>\u043a\u043d\u043e\u043f\u043a\u0430 &#171;\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c&#187;<\/strong>. \u041e\u043d\u0430 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043d\u043e\u0432\u0430 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 &#171;\u0432\u044b\u0431\u0440\u0430\u0442\u044c&#187;.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/391\/108\/92b\/39110892bd2852586b0edad06681842c.png\" width=\"1028\" height=\"488\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/391\/108\/92b\/39110892bd2852586b0edad06681842c.png\"\/><\/figure>\n<p>\u0412  \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c <strong>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 &#8212; \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0438 \u0442.\u0434.<\/strong> \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e. \u042d\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c ACL &#8212; \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 Joomla. <\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0441\u0430\u0439\u0442 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 &#171;\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b&#187;. \u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u043d\u0435 \u043a\u0443\u0447\u0430 \u0444\u0438\u043b\u0438\u0430\u043b\u043e\u0432 \u0441 \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u0442\u043e \u044d\u0442\u043e \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b Joomla \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 &#171;\u0411\u0435\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438&#187;. \u0418 \u0432 \u043d\u0451\u043c \u0443\u0436\u0435 \u0432\u0441\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b. \u0412 \u0431\u043e\u0440\u043e\u0434\u0430\u0442\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0438\u0434\u0442\u0438 \u0432 \u043f\u0443\u043d\u043a\u0442\u044b \u043c\u0435\u043d\u044e \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0441\u0441\u044b\u043b\u043a\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4a8\/d79\/958\/4a8d79958a62c3b24d843ce7d5ddfdc0.png\" width=\"1074\" height=\"476\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a8\/d79\/958\/4a8d79958a62c3b24d843ce7d5ddfdc0.png\"\/><\/figure>\n<p>\u0418 \u0435\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c <strong>\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c (\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u0438 \u0442.\u0434.)<\/strong> \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0432 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u0432\u044b\u0431\u0440\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u041d\u043e \u0432 \u043d\u0435\u0434\u0440\u0430\u0445 Joomla \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>urlCheckin<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u043e\u043b\u0435 url. \u0421\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432 Joomla \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u0438\u0445 \u043f\u043e\u0440. \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Joomla 5. \u0415\u0433\u043e \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u0432 Joomla 4.<\/p>\n<h2>\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043f\u043e\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 Form \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Joomla?<\/h2>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f <code>JForm<\/code> . \u042f \u0431\u0443\u0434\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u043c\u043e\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0438\u043c\u0435\u044e\u0442 \u0432 \u0440\u0443\u043a\u0430\u0445 \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u0430\u043a IDE &#8212; \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 &#8212; \u0430-\u043b\u044f PHP Storm \u0438\u043b\u0438 VS Code, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u044b \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435. <\/p>\n<p>\u0412 Joomla \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0430 \u043e\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0430 HTML), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.<\/p>\n<h3>\u041b\u043e\u0433\u0438\u043a\u0430 &#8212; \u043a\u043b\u0430\u0441\u0441 Form<\/h3>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 &#8212; \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441 Form. \u0412 Joomla 5 \u0444\u0430\u0439\u043b\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 Form \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <strong>libraries\/src\/Form<\/strong>. \u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043c\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0441\u0430\u043c\u0443 \u043b\u043e\u0433\u0438\u043a\u0443, \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8e5\/064\/89e\/8e506489e3877e2271b00167f4f04ec2.png\" width=\"387\" height=\"280\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e5\/064\/89e\/8e506489e3877e2271b00167f4f04ec2.png\"\/><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e, \u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>Form<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 XML \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u0435\u0439. \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0442\u0438\u043f \u043f\u043e\u043b\u044f, \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f \u0438\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <code>addfieldprefix<\/code>, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0438 \u0442.\u0434.), <strong>\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <\/strong><code>FormHelper<\/code><strong> \u043d\u0443\u0436\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f<\/strong>. \u0415\u0441\u043b\u0438 \u0443 \u043f\u043e\u043b\u044f \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 <code>FormRule<\/code>  &#8212; \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043f\u043e\u043b\u044f Joomla \u0442\u0438\u043f\u0430 <code>filelist<\/code>, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u043b\u044c\u043a\u043e php \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e css \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0430\u043c \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0435 \u0437\u043d\u0430\u044e \u0432\u0441\u0435\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u0441\u0443\u0433\u0443\u0431\u043e \u0438\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e, \u0434\u0430\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u043d\u0430\u0432\u0440\u0430\u0442\u044c ?.<\/p>\n<p><strong>\u0424\u0430\u0439\u043b\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043f\u043e\u043b\u0435\u0439 Joomla Form<\/strong> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <strong>libraries\/src\/Form\/Field<\/strong>. \u0418\u0445, \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u043d\u043e\u0433\u043e. \u042d\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0430 \u043f\u043e\u0440\u043e\u0439 \u0438 \u0444\u0440\u043e\u043d\u0442\u0430.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a4b\/ba8\/399\/a4bba83999f72ddae000d7155b85b845.png\" width=\"436\" height=\"810\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a4b\/ba8\/399\/a4bba83999f72ddae000d7155b85b845.png\"\/><\/figure>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <code>$type<\/code> , <code>$layout<\/code> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b. \u0423 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u0435\u0439 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b <code>getInput()<\/code> &#8212; \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f (HTML-\u0432\u044b\u0432\u043e\u0434\u0430) \u043f\u043e\u043b\u044f, <code>getLayoutData()<\/code> &#8212; \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u0434\u0430\u0447\u0435\u0439 \u0438\u0445 \u043d\u0430 \u0440\u0435\u043d\u0434\u0435\u0440, <code>getLabel()<\/code> &#8212; \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u043f\u043e\u043b\u044f \u0438 \u0442.\u0434. <\/p>\n<p>\u041c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u043e\u043b\u0435\u0439 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 <code>FormField<\/code>.  \u0412 \u0444\u0430\u0439\u043b\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 libraries\/src\/Form\/FormField.php \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0432 XML \u0441 \u043a\u0440\u0430\u0442\u043a\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u0438 \u0437\u0430\u0447\u0435\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/59c\/731\/218\/59c731218d6087953f6ea632633dbf6d.png\" alt=\"\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.\" title=\"\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.\" width=\"960\" height=\"614\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59c\/731\/218\/59c731218d6087953f6ea632633dbf6d.png\"\/><\/p>\n<div><figcaption>\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.<\/figcaption><\/div>\n<\/figure>\n<p>\u0423 \u043a\u043b\u0430\u0441\u0441\u043e\u0432-\u0434\u0435\u0442\u0435\u0439 (\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u043e\u0432) \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0435\u0433\u043e. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b8d\/7a0\/f50\/b8d7a0f509cefba539d005ea2e68d477.png\" width=\"916\" height=\"399\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8d\/7a0\/f50\/b8d7a0f509cefba539d005ea2e68d477.png\"\/><\/figure>\n<h3>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 (HTML \u0432\u044b\u0432\u043e\u0434, layout) \u043f\u043e\u043b\u044f \u0432 Joomla 5<\/h3>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u044f \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0412 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c MVC \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0440\u0430\u0437\u0443, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 Joomla \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 &#8212; <strong>Layout<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0435\u0442\u043e\u0432 &#8212; \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0438\u0445 \u0444\u0438\u0447 \u044d\u0442\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430. \u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u043b\u0435\u0439\u0430\u0443\u0442\u044b \u044f\u0434\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 <code>layouts<\/code>. \u0412 \u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432 <code>$displayData<\/code> \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430  <code>getLayoutData()<\/code> .  \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c  \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>$layout<\/strong>.<\/p>\n<pre><code class=\"php\">&lt;?php \/**  * Name of the layout being used to render the field  *  * @var    string  * @since  3.7  *\/ protected $layout = 'joomla.form.field.email';<\/code><\/pre>\n<p>\u0422\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e. <strong>\u0412 Joomla layout &#8212; \u044d\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043c\u0430\u043a\u0435\u0442\u0430 \u043e\u0442 \u043f\u0430\u043f\u043a\u0438 layouts \u0432 \u043a\u043e\u0440\u043d\u0435 \u0441\u0430\u0439\u0442\u0430.<\/strong> \u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c <code>$layout = 'joomla.form.field.email'<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u043f\u043e\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0430\u043a\u0435\u0442 <strong>layouts\/joomla\/form\/field\/email.php<\/strong>. <\/p>\n<pre><code class=\"php\">&lt;?php  use Joomla\\CMS\\Layout\\LayoutHelper;  $displayData = [                 'src'      => $this->item->image,                 'alt'      => $this->item->name,                ];  echo LayoutHelper::render(                         'joomla.html.image',                          $displayData                     );<\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0432 \u044d\u0442\u043e\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 \u043c\u0430\u043a\u0435\u0442 <code>layouts\/joomla\/html\/image.php<\/code>. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 <code>html<\/code> \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0430\u0439\u0442\u0430 \u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u0442\u044c\u044f <a href=\"https:\/\/habr.com\/ru\/articles\/760850\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0430\u0439\u0442\u0430 \u0432 Joomla 4+<\/a>.<\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435-\u043a\u043e\u043d\u0446\u043e\u0432 \u0432 \u043c\u0430\u043a\u0435\u0442 \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f &#8212; \u0438\u0434\u0451\u043c \u0432 \u0444\u0430\u0439\u043b \u043c\u0430\u043a\u0435\u0442\u0430 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c.<\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u043d\u0435 Modal Select \u0432 Joomla 5<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u0423\u043f\u043e\u043c\u044f\u043d\u0443 \u0437\u0434\u0435\u0441\u044c \u0441\u0442\u0430\u0442\u044c\u044e <a href=\"https:\/\/habr.com\/ru\/articles\/742422\/\" rel=\"noopener noreferrer nofollow\">\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<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0446\u0435\u043b\u043e\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0443 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c. <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0434\u0435\u0442\u0430\u043b\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c, \u0447\u0442\u043e \u0441 \u043d\u0435\u0439 \u0412\u044b \u0443\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0431\u0443\u0434\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e\u0431 \u043e\u0442\u043b\u0438\u0447\u0438\u044f\u0445 \u0438 \u0434\u0435\u0442\u0430\u043b\u044f\u0445, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044f Form.<\/p>\n<p>\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f<\/strong> &#8212; <code>libraries\/src\/Form\/Field\/ModalSelectField.php<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u0432\u044b\u0431\u043e\u0440 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 Joomla<\/strong> &#8212; <code>admin istrator\/components\/com_content\/src\/Field\/Modal\/ArticleField.php<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u0432\u044b\u0431\u043e\u0440 \u0442\u0438\u043f\u0430 \u043c\u0435\u043d\u044e<\/strong> &#8212; <code>administrator\/components\/com_menus\/src\/Field\/MenutypeField.php<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u0432\u044b\u0431\u043e\u0440 \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e<\/strong> &#8212; <code>administrator\/components\/com_menus\/src\/Field\/MenutypeField.php<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430<\/strong> &#8212; <code>layouts\/joomla\/form\/field\/modal-select.php<\/code><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u043e\u043b\u0435 \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430<\/strong> \u0438\u0437 <code>com_contacts<\/code> \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0435\u0449\u0451 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 <code>administrator\/components\/com_contact\/src\/Field\/Modal\/ContactField.php<\/code>. \u041e\u043d\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e <code>FormField<\/code>, \u0430 \u043d\u0435 <code>ModalSelectField<\/code>.<\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043e\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432 xml-\u0444\u0430\u0439\u043b\u0435 \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>\\SimpleXMLElement<\/code> XML \u0444\u043e\u0440\u043c\u0443 \u0441 \u043d\u0430\u0448\u0438\u043c \u043f\u043e\u043b\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187;. \u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 <code>onContentPrepareForm<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c XML \u0444\u043e\u0440\u043c\u044b \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 (\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <code>$form->getName()<\/code> \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e &#8212; \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 (layout) \u043f\u043e\u043b\u044f. \u042d\u0442\u043e \u043c\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h3>XML \u043f\u043e\u043b\u044f<\/h3>\n<p>\u0421\u0430\u043c\u044b\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>addfieldprefix<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 namespace  \u0412\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u044f. \u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0437 <strong>addfieldprefix + &#171;\\&#187; + type + &#171;Field&#187;<\/strong>. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f \u0431\u0443\u0434\u0435\u0442 <code>Joomla\\Plugin\\Wtproductbuilder\\Providerjoomshopping\\Field\\ProductlistField<\/code>.<\/p>\n<pre><code class=\"xml\">&lt;field       type=\"productlist\"       name=\"product_id\"       addfieldprefix=\"Joomla\\Plugin\\Wtproductbuilder\\Providerjoomshopping\\Field\"       label=\"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0422\u043e\u0432\u0430\u0440 JoomShopping\"       hint=\"\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043e\u0432\u0430\u0440.\"       \/><\/code><\/pre>\n<h3>HTML \u0432\u044b\u0432\u043e\u0434 (layout) \u043f\u043e\u043b\u044f<\/h3>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0432 PHP \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e &#8212; \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u043b\u044f. \u041e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>layouts\/joomla\/form\/field\/modal-select.php<\/strong>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f 2 \u043f\u043e\u043b\u044f <code>input<\/code> &#8212; \u043e\u0434\u043d\u043e \u0432\u0438\u0434\u0438\u043c\u043e\u0435, \u0434\u0440\u0443\u0433\u043e\u0435 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0435. \u0412 \u0432\u0438\u0434\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432 \u0432\u0438\u0434\u0435 <code>placeholder<\/code> \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 \u0438\u043b\u0438 \u0442\u043e\u0432\u0430\u0440\u0430 &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>$valueTitle<\/code>. \u0410 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0435 &#8212; \u0435\u0433\u043e id &#8212; <code>$value<\/code>. \u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043e &#8212; \u0432 \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442 \u0444\u0440\u0430\u0437\u0430 \u0432 \u0434\u0443\u0445\u0435 &#171;\u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b&#187; \u0438\u043b\u0438 &#171;\u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043e\u0432\u0430\u0440&#187;. \u042d\u0442\u043e \u044f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>hint<\/code> \u0432 XML \u043f\u043e\u043b\u044f \u0438\u043b\u0438 \u0436\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>setup<\/code> \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u044f.<\/p>\n<p>\u0412\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u043c\u0430\u043a\u0435\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0438\u043b\u0438 \u0432 XML-\u0444\u0430\u0439\u043b\u0435):<\/p>\n<pre><code class=\"php\">&lt;?php extract($displayData);  \/**  * Layout variables  * -----------------  * @var   string   $autocomplete    Autocomplete attribute for the field.  * @var   boolean  $autofocus       Is autofocus enabled?  * @var   string   $class           Classes for the input.  * @var   string   $description     Description of the field.  * @var   boolean  $disabled        Is this field disabled?  * @var   string   $group           Group the field belongs to. &lt;fields> section in form XML.  * @var   boolean  $hidden          Is this field hidden in the form?  * @var   string   $hint            Placeholder for the field.  * @var   string   $id              DOM id of the field.  * @var   string   $label           Label of the field.  * @var   string   $labelclass      Classes to apply to the label.  * @var   boolean  $multiple        Does this field support multiple values?  * @var   string   $name            Name of the input field.  * @var   string   $onchange        Onchange attribute for the field.  * @var   string   $onclick         Onclick attribute for the field.  * @var   string   $pattern         Pattern (Reg Ex) of value of the form field.  * @var   boolean  $readonly        Is this field read only?  * @var   boolean  $repeat          Allows extensions to duplicate elements.  * @var   boolean  $required        Is this field required?  * @var   integer  $size            Size attribute of the input.  * @var   boolean  $spellcheck      Spellcheck state for the form field.  * @var   string   $validate        Validation rules to apply.  * @var   string   $value           Value attribute of the field.  * @var   string   $dataAttribute   Miscellaneous data attributes preprocessed for HTML output  * @var   array    $dataAttributes  Miscellaneous data attribute for eg, data-*  * @var   string   $valueTitle  * @var   array    $canDo  * @var   string[] $urls  * @var   string[] $modalTitles  * @var   string[] $buttonIcons  *\/<\/code><\/pre>\n<h3>PHP \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f<\/h3>\n<p>\u041a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f, \u043a\u0430\u043a \u0412\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0443 \u043c\u0435\u043d\u044f \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0435. \u041f\u0443\u0442\u044c \u043a \u043d\u0435\u043c\u0443 <code>plugins\/wtproductbuilder\/providerjoomshopping\/src\/Field\/ProductlistField.php<\/code>. \u042f \u0432\u0437\u044f\u043b \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u043f\u043e\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0438 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043b \u0435\u0433\u043e \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b &#8212; \u0432\u044b\u0431\u043e\u0440 \u0442\u043e\u0432\u0430\u0440\u0430 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430 JoomShopping. \u041c\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 <code>ModalSelectField<\/code> \u0441\u0432\u043e\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c.<\/p>\n<p>\u0412 \u043c\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0431\u043e\u0440 \u0442\u043e\u0432\u0430\u0440\u0430, \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 &#8212; \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u0447\u044c \u0438\u0434\u0451\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0432\u044b\u0431\u043e\u0440\u0435 \u0442\u043e\u0432\u0430\u0440\u0430. \u041a\u043b\u0430\u0441\u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0435\u0433\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0438 \u043f\u0440\u043e\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e.<\/p>\n<pre><code class=\"php\">&lt;?php  namespace Joomla\\Plugin\\Wtproductbuilder\\Providerjoomshopping\\Field;  use Joomla\\CMS\\Factory; use Joomla\\CMS\\Form\\Field\\ModalSelectField; use Joomla\\CMS\\Language\\Text; use Joomla\\CMS\\Layout\\FileLayout; use Joomla\\CMS\\Session\\Session; use Joomla\\CMS\\Uri\\Uri;  \/\/ phpcs:disable PSR1.Files.SideEffects \\defined('_JEXEC') or die; \/\/ phpcs:enable PSR1.Files.SideEffects  \/**  * Supports a modal article picker.  *  * @since  1.6  *\/ class ProductlistField extends ModalSelectField { \/**  * The form field type.  *  * @var    string  * @since  1.6  *\/ protected $type = 'Productlist';  \/**  * Method to attach a Form object to the field.  *  * @param   \\SimpleXMLElement  $element  The SimpleXMLElement object representing the `&lt;field>` tag for the form field object.  * @param   mixed              $value    The form field value to validate.  * @param   string             $group    The field name group control value.  *  * @return  boolean  True on success.  *  * @see     FormField::setup()  * @since   5.0.0  *\/ public function setup(\\SimpleXMLElement $element, $value, $group = null) {         \/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0430\u043c\u043e \u043f\u043e\u043b\u0435        $result = parent::setup($element, $value, $group);  if (!$result) { return $result; }  $app = Factory::getApplication();  \/\/ \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u044b Url \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432,  \/\/ \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0444\u043e\u0440\u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \/\/ \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0438\u0445 \u0442\u0443\u0442. \/\/ \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u0438\u043c URL \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c HTML, \/\/ \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 javascript, \/\/ \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0449\u0438\u0439 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f - id \u0442\u043e\u0432\u0430\u0440\u0430 \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0430. \/\/ \u0412 \u0446\u0435\u043b\u043e\u043c \u0437\u0434\u0435\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0441\u0442\u0430\u0442\u044c\u0435 \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.        $urlSelect = (new Uri())->setPath(Uri::base(true) . '\/index.php'); $urlSelect->setQuery([ 'option'                => 'com_ajax', 'plugin'                => 'providerjoomshopping', 'group'                 => 'wtproductbuilder', 'format'                => 'html', 'tmpl'                  => 'component', Session::getFormToken() => 1, ]);  $modalTitle = Text::_('PLG_WTPRODUCTBUILDER_PROVIDERJOOMSHOPPING_MODAL_SELECT_CHOOSE_PRODUCT'); $this->urls['select'] = (string) $urlSelect;  \/\/ \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438, \u043e\u043d\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b. \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e JavaScript \/\/ \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0447\u0435\u043c\u0443. \/\/ $wa = $app->getDocument()->getWebAssetManager(); \/\/ $wa->useScript('field.modal-fields')->useScript('core');          \/\/ \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438         \/\/ \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u044b         \/\/ \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 $this->modalTitles['select'] = $modalTitle;          \/\/ hint - \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430 placeholder \u0432 HTML \u043f\u043e\u043b\u044f. $this->hint = $this->hint ?: Text::_('PLG_WTPRODUCTBUILDER_PROVIDERJOOMSHOPPING_MODAL_SELECT_CHOOSE_PRODUCT');  return $result; }  } <\/code><\/pre>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043d\u0435\u0441 \u043c\u0435\u0442\u043e\u0434 getValueTitle(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0430, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438 \u0442.\u0434.) \u0432 \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0443\u0436\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b. \u0422\u043e \u0435\u0441\u0442\u044c, \u043c\u044b \u0437\u0430\u0448\u043b\u0438 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e, \u043f\u043e\u043b\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c, \u043d\u043e \u0445\u043e\u0442\u0438\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \/ \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e id. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a.<\/p>\n<pre><code class=\"php\">&lt;?php      \/**  * \u041c\u0435\u0442\u043e\u0434 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u0432\u0430\u0440\u0430 \u0432 \u043f\u043e\u043b\u0435-\u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u0435.  *  * @return string  *  * @since   5.0.0  *\/ protected function getValueTitle() { $value = (int) $this->value ?: ''; \/\/ \u042d\u0442\u043e id \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438\u043b\u0438 \u0442\u043e\u0432\u0430\u0440\u0430 \u0438\u043b\u0438... $title = '';  if ($value) { try {                 \/\/ \u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c                 \/\/ \u043c\u0435\u0442\u043e\u0434\u044b API \u044f\u0434\u0440\u0430 Joomla \u0438\/\u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432,                  \/\/ \u0430 \u043d\u0435 \u043f\u0440\u044f\u043c\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0431\u0430\u0437\u0443.  $lang = \\JSFactory::getLang(); $name             = $lang->get('name'); $jshop_product = \\JSFactory::getTable('product', 'jshop'); $jshop_product->load($value); $title = $jshop_product->$name; } catch (\\Throwable $e) { Factory::getApplication()->enqueueMessage($e->getMessage(), 'error'); } }  return $title ?: $value; }<\/code><\/pre>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u043b\u044f\u0445, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b &#8212; \u043c\u0443\u043b\u044c\u0442\u0438\u044f\u0437\u044b\u0447\u043d\u044b\u0435 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 &#8212; \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043e\u043b\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0441\u0430 <code>FormField<\/code>: <\/p>\n<ul>\n<li>\n<p><code>getLayoutData()<\/code>  &#8212; \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0435\u043d\u0434\u0435\u0440\u043e\u043c \u043f\u043e\u043b\u044f<\/p>\n<\/li>\n<li>\n<p><code>getRenderer()<\/code> &#8212; \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<p>\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c.<\/p>\n<h3>HTML \u0432\u044b\u0432\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430<\/h3>\n<p>\u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 &#171;\u0432\u044b\u0431\u0440\u0430\u0442\u044c&#187; \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 Bootstrap \u043e\u043a\u043d\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432 <code>&lt;iframe><\/code> \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0432\u0430\u0440\u043e\u0432. \u041f\u043e \u043a\u043b\u0438\u043a\u0443 \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0430 \u0438\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 Javascript \u043f\u043e\u043b\u0443\u0447\u0438\u0442 id \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u0430 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u044f. \u041d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0430\u043c HTML \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 &#8212; \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0435\u0433\u043e \u0433\u0434\u0435-\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c. \u0422\u043e \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0432\u043e\u0434 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u043b\u0438\u0431\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e URL \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430. \u041b\u0438\u0431\u043e \u0447\u0435\u0440\u0435\u0437 <code>com_ajax<\/code> \u043c\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c HTML \u043e\u0442\u0442\u0443\u0434\u0430. \u0422\u0430\u043a \u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043c. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c57\/781\/e91\/c57781e91db59ac3f3c27cd5c4d51fe3.png\" width=\"1341\" height=\"606\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c57\/781\/e91\/c57781e91db59ac3f3c27cd5c4d51fe3.png\"\/><\/figure>\n<p>\u0412 \u043c\u043e\u0451\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 \u043c\u0435\u0442\u043e\u0434 <code>onAjaxProviderjoomshopping()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0451\u0440\u0441\u0442\u043a\u0443 \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u043e\u0432. \u0422\u0430\u043c \u043c\u044b \u0446\u0438\u043a\u043b\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043d\u0438\u043c\u0438, \u0431\u0435\u0440\u0435\u043c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443, \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c. \u041a\u043e\u0434 \u0432 \u0446\u0435\u043b\u043e\u043c \u043e\u0431\u044a\u0451\u043c\u043d\u044b\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u0441\u0430\u043c\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p><strong>\u041f\u0435\u0440\u0432\u043e\u0435<\/strong> &#8212; \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 <code>&lt;iframe><\/code> \u043d\u0430\u0448 javascript, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043a\u043b\u0438\u043a\u0438 \u043f\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c \u0442\u043e\u0432\u0430\u0440\u043e\u0432. \u041e\u0444\u043e\u0440\u043c\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 \u0432\u0438\u0434\u0435 \u043c\u0435\u0434\u0438\u0430-\u0430\u0441\u0441\u0435\u0442\u0430 \u043a \u043f\u043b\u0430\u0433\u0438\u043d\u0443 \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 Web Asset Manager. <\/p>\n<pre><code class=\"php\">&lt;?php  $app = $this->getApplication(); $doc = $app->getDocument(); $doc->getWebAssetManager()     ->useScript('core')     ->registerAndUseScript(         'wtproductbuilder.providerjoomshopping.modal', 'plg_wtproductbuilder_providerjoomshopping\/providerjoomshopping.modal.js'     );<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/jpath.ru\/docs\/output\/js-css\/kak-pravilno-podklyuchat-javascript-i-css-v-joomla-4\" rel=\"noopener noreferrer nofollow\">\u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c JavaScript \u0438 CSS \u0432 Joomla 4<\/a><\/p>\n<\/li>\n<li>\n<p><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 (Joomla 5) \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><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0412\u0442\u043e\u0440\u043e\u0435.<\/strong> \u041a\u043e\u0434 \u0442\u0435\u0433\u0430 \u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c data-\u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441 \u043d\u0443\u0436\u043d\u044b\u043c\u0438 \u043d\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<pre><code class=\"php\">&lt;?php use Joomla\\CMS\\HTML\\HTMLHelper;  \/\/ \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 foreach($products as $row)  $link_attribs = [     'class' => 'select-link',     'data-product-id' => $row->product_id,     'data-product-title' => htmlspecialchars($row->name), ]; echo HTMLHelper::link(     '#', \/\/ url     $row->name, \/\/ \u0442\u0435\u043a\u0441\u0442 \u0441\u0441\u044b\u043b\u043a\u0438, \u0430\u043d\u043a\u043e\u0440     $link_attribs \/\/ \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u0441\u044b\u043b\u043a\u0438 );<\/code><\/pre>\n<h3>JavaScript \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 &lt;iframe> \u0432 \u043f\u043e\u043b\u0435 \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043e\u043a\u043d\u0435<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 JavaScript. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438\u0441\u044c \u043d\u044e\u0430\u043d\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0441\u0442\u0430\u0440\u043e\u043c \u0438 \u043d\u043e\u0432\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0435 \u0440\u0430\u0431\u043e\u0442\u044b. <\/p>\n<p>\u041c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 js-\u0441\u043a\u0440\u0438\u043f\u0442\u044b<\/p>\n<ul>\n<li>\n<p><code>media\/system\/js\/fields\/modal-fields.min.js<\/code> &#8212; \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. <strong>\u041e\u0434\u043d\u0430\u043a\u043e, \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u043e\u0436\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c. \u0447\u0442\u043e \u0430\u0440\u0445\u0430\u0438\u0437\u043c \u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u044b<\/strong>. \u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u041c\u044b \u0435\u0433\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 \u043d\u0430\u0448\u0435\u043c PHP \u043a\u043b\u0430\u0441\u0441\u0435.<\/p>\n<\/li>\n<li>\n<p><code>media\/plg_wtproductbuilder_providerjoomshopping\/js\/providerjoomshopping.modal.js<\/code> &#8212; \u043d\u0430\u0448 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 js-\u0444\u0430\u0439\u043b.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e javascript. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0443 <code>select-link<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0441\u0435 \u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u044b \u0438 \u0432\u0435\u0448\u0430\u0435\u043c \u043d\u0430 \u043d\u0438\u0445 \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043a\u043b\u0438\u043a\u0430. <\/p>\n<pre><code class=\"javascript\">(() => {     document.addEventListener('DOMContentLoaded', () => {         \/\/ Get the elements          const product_links = document.querySelectorAll('.select-link');         \/\/ Listen for click event         product_links.forEach((element) => {             element.addEventListener('click', event => {                 event.preventDefault();                 const {                     target                 } = event;                  let data = {                     'messageType' : 'joomla:content-select',                     'id' : target.getAttribute('data-product-id'),                     'title' : target.getAttribute('data-product-title')                 };                 window.parent.postMessage(data);             });         });     }); })();<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0441 <code>id<\/code> \u0438 <code>title<\/code> \u0432\u0441\u0451 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0442\u043e \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c <code>data<\/code> \u0438 <code>postMessage<\/code> \u0442\u0435\u043c, \u043a\u0442\u043e \u043f\u0440\u0438\u0432\u044b\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 Joomla, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0432\u0441\u0451 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. <\/p>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u0432 Joomla 2.5, 3.x \u0438 \u0434\u0430\u0436\u0435 \u0432 4.x \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u043b\u044f \u043c\u044b \u0438\u043d\u043b\u0430\u0439\u043d \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c \u0432\u0435\u0448\u0430\u043b\u0438 \u043d\u0430 <code>window<\/code> \u0444\u0443\u043d\u043a\u0446\u0438\u044e-\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u0430 \u0438\u0437 <code>&lt;iframe><\/code> \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u0438 \u0435\u0451 \u043a\u0430\u043a <code>window.parent[functionName]<\/code>. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434<\/p>\n<pre><code class=\"javascript\">element.addEventListener('click', event => {       event.preventDefault();          const functionName = event.target.getAttribute('data-function');          if (functionName === 'jSelectMenuItem' &amp;&amp; window[functionName]) {         \/\/ Used in xtd_contacts         window[functionName](event.target.getAttribute('data-id'), event.target.getAttribute('data-title'), event.target.getAttribute('data-uri'), null, null, event.target.getAttribute('data-language'));       } else if (window.parent[functionName]) {         \/\/ Used in com_menus         window.parent[functionName](event.target.getAttribute('data-id'), event.target.getAttribute('data-title'), null, null, event.target.getAttribute('data-uri'), event.target.getAttribute('data-language'), null);       }<\/code><\/pre>\n<p>\u0412 \u0442\u0430\u043a\u043e\u043c \u0432\u0438\u0434\u0435 \u0438\u043c\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <code>data-function<\/code>  \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \/ \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \/ \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043c\u0435\u043d\u044e. \u0410 \u0441\u0430\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0438 \u0438\u043d\u043b\u0430\u0439\u043d, \u0438\u043d\u043e\u0433\u0434\u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u0435\u0451 \u0438\u043c\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c id. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>\"jSelectArticle_\".$this->id<\/code>. <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>jSelectArticle()<\/code> \u0438\u043b\u0438 \u0435\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 (\u0443 \u043d\u0430\u0441 \u0431\u044b\u043b\u0430 \u0431\u044b <code>jSelectProduct()<\/code>) \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u043e\u0439 \u0434\u043b\u044f \u0448\u0442\u0430\u0442\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>processModalSelect()<\/code> \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 <code>modal-fields.min.js<\/code>. \u041e\u043d\u0430 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>processModalParent()<\/code> \u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/09d\/7e9\/115\/09d7e91157d56675fdcdd9e839ac7454.png\" width=\"998\" height=\"586\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/09d\/7e9\/115\/09d7e91157d56675fdcdd9e839ac7454.png\"\/><\/figure>\n<p>\u042d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0443\u0447\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432: \u0442\u0438\u043f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b. \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0438 \u0442.\u0434.), \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043f\u043e\u043b\u044f (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f <code>id<\/code> HTML-\u0441\u0435\u043b\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u044f), \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e <code>id<\/code> \u0438 <code>title<\/code>  &#8212; \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0442.\u0434. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b52\/c6a\/642\/b52c6a642550d4b4051800ca255fb840.png\" width=\"914\" height=\"640\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b52\/c6a\/642\/b52c6a642550d4b4051800ca255fb840.png\"\/><\/figure>\n<p>\u0412 \u043e\u0434\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u0441\u043e\u0431\u0440\u0430\u043d\u043e \u0432\u0441\u0451 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0438\u0441\u044c \u0432 \u043d\u0430\u0448\u0435 \u043f\u043e\u043b\u0435. \u041e\u0434\u043d\u0430\u043a\u043e, \u0441\u0435\u0439\u0447\u0430\u0441, \u0432 Joomla 5 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0443\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u0415\u0441\u043b\u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u043b\u044f, \u0442\u043e \u0432 \u043d\u0451\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0430\u0441\u0441\u0435\u0442 <code>modal-content-select-field<\/code>, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e-\u043d\u043e\u0432\u043e\u043c\u0443. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/218\/dad\/87f\/218dad87f6a0cb94e258bd017e32370e.png\" width=\"772\" height=\"347\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/218\/dad\/87f\/218dad87f6a0cb94e258bd017e32370e.png\"\/><\/figure>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 Joomla 5 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 JavaScript <code>postMessages<\/code>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0435 \u0432\u0441\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0435\u0449\u0451 \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u0440\u0435\u043b\u044c\u0441\u044b \u0432\u043d\u0435\u0434\u0440\u0451\u043d \u0444\u043b\u0430\u0433 <code>JoomlaExpectingPostMessage<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u041a \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u043c\u0443 \u0441\u043f\u043e\u0441\u043e\u0431\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u0435\u043d. \u0414\u0430\u043d\u043d\u044b\u0439 \u0444\u043b\u0430\u0433 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0451\u043d \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 <code>postMessages<\/code>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d9\/ddc\/8da\/4d9ddc8da569f7b6022c80330e9bd286.png\" width=\"758\" height=\"427\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d9\/ddc\/8da\/4d9ddc8da569f7b6022c80330e9bd286.png\"\/><\/figure>\n<p>\u0418\u0442\u0430\u043a, \u043d\u0430\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u044b \u043b\u0438\u0448\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u0441\u044b\u043b\u043e\u043a \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c <code>postMessage<\/code>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 <code>data<\/code> \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>messageType<\/code> \u0440\u0430\u0432\u043d\u044b\u043c <code>joomla:content-select<\/code>. \u041f\u043e\u0447\u0435\u043c\u0443? \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f JavaScript \u0440\u0430\u0431\u043e\u0442\u0430 \u0432 Joomla \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<ul>\n<li>\n<p>\u043a\u043b\u0438\u043a \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0441\u0441\u044b\u043b\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043e\u043a\u043d\u043e <code>window.parent.postMessage(data)<\/code><\/p>\n<\/li>\n<li>\n<p>\u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043e\u043a\u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d \u0444\u0430\u0439\u043b <code>media\/system\/js\/fields\/modal-content-select-field.js<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0435\u0441\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f <code>message<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0442\u0438\u043f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e <code>joomla:content-select<\/code>, \u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cef\/1d2\/682\/cef1d268271f5bfce89dea8c51a374b1.png\" width=\"1018\" height=\"561\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cef\/1d2\/682\/cef1d268271f5bfce89dea8c51a374b1.png\"\/><\/figure>\n<p>\u042f, \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u044f\u0434\u0440\u0430 \u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u0431\u0440\u0451\u043b \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>jSelectArticle()<\/code> \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435. \u041f\u043e\u0442\u043e\u043c \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 <code>postMessage<\/code>  \u0438 \u0440\u0435\u0448\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 <code>messageType<\/code>, \u0434\u0430\u0432 \u0435\u043c\u0443 \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u043c\u044f. \u0427\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e &#8212; \u043a \u043d\u0435\u043c\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443, \u0432\u044b\u0437\u0432\u0430\u0432 (\u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0443\u044e) \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>processModalSelect()<\/code>. \u0418 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u043d\u0438 \u0432 \u043a\u0430\u043a\u0443\u044e \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0445\u043e\u0442\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u043e\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043f\u043e\u0438\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438 \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044e \u043a\u043e\u0434\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c.<\/p>\n<h2>\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0438 \u0432\u044b\u0431\u043e\u0440 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043d\u0451\u043c &#8212; \u044d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439, \u043d\u043e, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0432\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0430\u0442 \u0433\u0434\u0435-\u0442\u043e \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438, \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0442\u0435\u0437\u0438\u0441\u044b &#8212; \u043f\u0438\u0448\u0438\u0442\u0435, \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u043c.<\/p>\n<p>\u042d\u0442\u0430 \u0436\u0435 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u043c\u0435\u0436\u0434\u0443\u043d\u0430\u0440\u043e\u0434\u043d\u043e\u0433\u043e Joomla-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 Joomla Community Magazine &#8212; <a href=\"https:\/\/magazine.joomla.org\/all-issues\/january-2024\/creating-a-custom-form-field-type-in-joomla-5-using-the-modal-select-example\" rel=\"noopener noreferrer nofollow\">Creating a custom Form field type in Joomla 5 using the Modal Select example<\/a>.<\/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\/776852\/\"> https:\/\/habr.com\/ru\/articles\/776852\/<\/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>\u0412 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Joomla \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e, \u043a\u043e\u043d\u0442\u0430\u043a\u0442, \u0442\u043e\u0432\u0430\u0440 \u0438 \u0442.\u0434. \u041e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u044f \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0432\u044b\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 <code>select option<\/code>, \u043c\u043e\u0433\u0443\u0442 \u043e\u0444\u043e\u0440\u043c\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 <code>input type=\"text\"<\/code> \u0441 <code>datalist<\/code>, \u043d\u043e \u0435\u0441\u0442\u044c \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043a\u043e\u043c\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0441 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0435\u0439, \u043f\u043e\u0438\u0441\u043a\u043e\u043c, \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0435\u0439 \u0438 \u0442.\u0434. <\/p>\n<p>\u0412\u0441\u0435 \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438 \u044d\u0442\u0438 \u043f\u043e\u043b\u044f \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u043f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0432 \u043f\u0443\u043d\u043a\u0442\u0435 \u043c\u0435\u043d\u044e \u0442\u0438\u043f\u0430 &#171;\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b &#8212; \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b&#187;, &#171;\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b &#8212; \u041a\u043e\u043d\u0442\u0430\u043a\u0442&#187;, \u0438\u043b\u0438 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0430\u043b\u0438\u0430\u0441\u0430 (\u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u0430) \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e &#8212; &#171;\u0421\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 &#8212; \u041f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c&#187;. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043c \u0441\u0435\u0431\u0435 \u043a\u0430\u043a \u043e\u043d\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442.<\/p>\n<p>\u041c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65ae295328dfc09d9ed8fc2c\" data-style=\"\" id=\"65ae295328dfc09d9ed8fc2c\" width=\"\"><\/div>\n<p>\u041d\u0430 \u0432\u0438\u0434\u0435\u043e &#8212; \u0443\u0442\u0440\u043e, \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0447\u0443\u0442\u044c \u0442\u0443\u043f\u0438\u0442 )) <\/p>\n<p>\u0410 \u044d\u0442\u043e \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65ae29534c5bea9d8aeefa62\" data-style=\"\" id=\"65ae29534c5bea9d8aeefa62\" width=\"\"><\/div>\n<h2>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0432 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u0432 Joomla<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u044d\u0442\u0438 \u043f\u043e\u043b\u044f &#8212; \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u041c\u044b \u0433\u0434\u0435-\u0442\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044f &#8212; <strong>\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c id \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e id \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435<\/strong>. \u041d\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043d\u0435\u0447\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0435 &#8212; \u0432\u043c\u0435\u0441\u0442\u043e \u0446\u0438\u0444\u0440\u044b \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430. \u042d\u0442\u043e \u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0438 \u0443\u0434\u043e\u0431\u043d\u043e. \u041d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0441 id 1452704. \u0422\u0430\u043a\u0436\u0435, \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u043e\u0442\u0447\u0451\u0442\u043b\u0438\u0432\u043e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#8212; \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <strong>\u043a\u043d\u043e\u043f\u043a\u0430 &#171;\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c&#187;<\/strong>. \u041e\u043d\u0430 \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043d\u043e\u0432\u0430 \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 &#171;\u0432\u044b\u0431\u0440\u0430\u0442\u044c&#187;.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412  \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c <strong>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0442\u0438\u043f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 &#8212; \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0438 \u0442.\u0434.<\/strong> \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e. \u042d\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c ACL &#8212; \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 Joomla. <\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u0412\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435 \u0441\u0430\u0439\u0442 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 &#171;\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b&#187;. \u0415\u0441\u043b\u0438 \u0443 \u0412\u0430\u0441 \u043d\u0435 \u043a\u0443\u0447\u0430 \u0444\u0438\u043b\u0438\u0430\u043b\u043e\u0432 \u0441 \u0440\u0430\u0437\u0432\u0435\u0442\u0432\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u0442\u043e \u044d\u0442\u043e \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b Joomla \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 &#171;\u0411\u0435\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438&#187;. \u0418 \u0432 \u043d\u0451\u043c \u0443\u0436\u0435 \u0432\u0441\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b. \u0412 \u0431\u043e\u0440\u043e\u0434\u0430\u0442\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0438\u0434\u0442\u0438 \u0432 \u043f\u0443\u043d\u043a\u0442\u044b \u043c\u0435\u043d\u044e \u0438 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0441\u0441\u044b\u043b\u043a\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 \u0442\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0418 \u0435\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c <strong>\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u0443\u044e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c (\u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \u0438 \u0442.\u0434.)<\/strong> \u043f\u0440\u044f\u043c\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0432 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u0432\u044b\u0431\u0440\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/p>\n<\/li>\n<li>\n<p>\u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0437\u0430\u043c\u0438. \u041d\u043e \u0432 \u043d\u0435\u0434\u0440\u0430\u0445 Joomla \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>urlCheckin<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u043e\u043b\u0435 url. \u0421\u0442\u043e\u0438\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0432 Joomla \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u0438\u0445 \u043f\u043e\u0440. \u041e\u0434\u043d\u0430\u043a\u043e, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Joomla 5. \u0415\u0433\u043e \u043d\u0435\u0442 \u0434\u0430\u0436\u0435 \u0432 Joomla 4.<\/p>\n<h2>\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043f\u043e\u043b\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 Form \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Joomla?<\/h2>\n<p>\u0420\u0430\u043d\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f <code>JForm<\/code> . \u042f \u0431\u0443\u0434\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u043c\u043e\u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438 \u0438\u043c\u0435\u044e\u0442 \u0432 \u0440\u0443\u043a\u0430\u0445 \u0442\u0430\u043a\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u0430\u043a IDE &#8212; \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 &#8212; \u0430-\u043b\u044f PHP Storm \u0438\u043b\u0438 VS Code, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u044b \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u0435. <\/p>\n<p>\u0412 Joomla \u043b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0430 \u043e\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f (\u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0430 HTML), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445.<\/p>\n<h3>\u041b\u043e\u0433\u0438\u043a\u0430 &#8212; \u043a\u043b\u0430\u0441\u0441 Form<\/h3>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 &#8212; \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441 Form. \u0412 Joomla 5 \u0444\u0430\u0439\u043b\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 Form \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <strong>libraries\/src\/Form<\/strong>. \u042d\u0442\u0438 \u0444\u0430\u0439\u043b\u044b \u043c\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0441\u0430\u043c\u0443 \u043b\u043e\u0433\u0438\u043a\u0443, \u0447\u0442\u043e \u0438 \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.<\/p>\n<figure class=\"\"><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e, \u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>Form<\/code> \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 XML \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043b\u0435\u0439. \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 (\u0442\u0438\u043f \u043f\u043e\u043b\u044f, \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f \u0438\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <code>addfieldprefix<\/code>, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0438 \u0442.\u0434.), <strong>\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <\/strong><code>FormHelper<\/code><strong> \u043d\u0443\u0436\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f<\/strong>. \u0415\u0441\u043b\u0438 \u0443 \u043f\u043e\u043b\u044f \u0435\u0441\u0442\u044c \u043d\u0435\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 <code>FormRule<\/code>  &#8212; \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043f\u043e\u043b\u044f Joomla \u0442\u0438\u043f\u0430 <code>filelist<\/code>, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u043b\u044c\u043a\u043e php \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e css \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0430\u043c \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u043d\u0435 \u0437\u043d\u0430\u044e \u0432\u0441\u0435\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u0442\u0430\u0442\u044c\u044f \u0432\u044b\u0440\u043e\u0441\u043b\u0430 \u0441\u0443\u0433\u0443\u0431\u043e \u0438\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u043f\u044b\u0442\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u043e\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u043b\u0443\u0431\u043e\u043a\u043e, \u0434\u0430\u0431\u044b \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0435 \u043d\u0430\u0432\u0440\u0430\u0442\u044c ?.<\/p>\n<p><strong>\u0424\u0430\u0439\u043b\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043f\u043e\u043b\u0435\u0439 Joomla Form<\/strong> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 <strong>libraries\/src\/Form\/Field<\/strong>. \u0418\u0445, \u043c\u044f\u0433\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u043d\u043e\u0433\u043e. \u042d\u0442\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0430\u0434\u043c\u0438\u043d\u043a\u0438, \u0430 \u043f\u043e\u0440\u043e\u0439 \u0438 \u0444\u0440\u043e\u043d\u0442\u0430.<\/p>\n<figure class=\"\"><\/figure>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <code>$type<\/code> , <code>$layout<\/code> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b. \u0423 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u0435\u0439 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b <code>getInput()<\/code> &#8212; \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u044b\u0437\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f (HTML-\u0432\u044b\u0432\u043e\u0434\u0430) \u043f\u043e\u043b\u044f, <code>getLayoutData()<\/code> &#8212; \u043f\u0440\u0435\u0434\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043f\u043e\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u0434\u0430\u0447\u0435\u0439 \u0438\u0445 \u043d\u0430 \u0440\u0435\u043d\u0434\u0435\u0440, <code>getLabel()<\/code> &#8212; \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u043f\u043e\u043b\u044f \u0438 \u0442.\u0434. <\/p>\n<p>\u041c\u044b \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u044b \u043f\u043e\u043b\u0435\u0439 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043b\u0430\u0441\u0441 <code>FormField<\/code>.  \u0412 \u0444\u0430\u0439\u043b\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 libraries\/src\/Form\/FormField.php \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u043e\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0432 XML \u0441 \u043a\u0440\u0430\u0442\u043a\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u0438 \u0437\u0430\u0447\u0435\u043c.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0417\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.<\/figcaption><\/div>\n<\/figure>\n<p>\u0423 \u043a\u043b\u0430\u0441\u0441\u043e\u0432-\u0434\u0435\u0442\u0435\u0439 (\u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u043e\u0432) \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0435\u0433\u043e. <\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 (HTML \u0432\u044b\u0432\u043e\u0434, layout) \u043f\u043e\u043b\u044f \u0432 Joomla 5<\/h3>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u044f \u0435\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0412 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c MVC \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0440\u0430\u0437\u0443, \u043e\u0434\u043d\u0430\u043a\u043e \u0432 Joomla \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0430 &#8212; <strong>Layout<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u043a\u0435\u0442\u043e\u0432 &#8212; \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u0430\u0436\u043d\u0435\u0439\u0448\u0438\u0445 \u0444\u0438\u0447 \u044d\u0442\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430. \u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u043b\u0435\u0439\u0430\u0443\u0442\u044b \u044f\u0434\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 <code>layouts<\/code>. \u0412 \u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432 <code>$displayData<\/code> \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430  <code>getLayoutData()<\/code> .  \u041a\u0430\u043a\u043e\u0439 \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c  \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 <strong>$layout<\/strong>.<\/p>\n<pre><code class=\"php\">&lt;?php \/**  * Name of the layout being used to render the field  *  * @var    string  * @since  3.7  *\/ protected $layout = 'joomla.form.field.email';<\/code><\/pre>\n<p>\u0422\u0430\u043a\u043e\u0439 \u0442\u0438\u043f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e. <strong>\u0412 Joomla layout &#8212; \u044d\u0442\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043c\u0430\u043a\u0435\u0442\u0430 \u043e\u0442 \u043f\u0430\u043f\u043a\u0438 layouts \u0432 \u043a\u043e\u0440\u043d\u0435 \u0441\u0430\u0439\u0442\u0430.<\/strong> \u0422\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c <code>$layout = 'joomla.form.field.email'<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0435\u043d\u0434\u0435\u0440\u0435 \u043f\u043e\u043b\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0430\u043a\u0435\u0442 <strong>layouts\/joomla\/form\/field\/email.php<\/strong>. <\/p>\n<pre><code class=\"php\">&lt;?php  use Joomla\\CMS\\Layout\\LayoutHelper;  $displayData = [                 'src'      => $this->item->image,                 'alt'      => $this->item->name,                ];  echo LayoutHelper::render(                         'joomla.html.image',                          $displayData                     );<\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0432 \u044d\u0442\u043e\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 \u043c\u0430\u043a\u0435\u0442 <code>layouts\/joomla\/html\/image.php<\/code>. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 <code>html<\/code> \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0430\u0439\u0442\u0430 \u0438 \u0430\u0434\u043c\u0438\u043d\u043a\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c \u0441\u0442\u0430\u0442\u044c\u044f <a href=\"https:\/\/habr.com\/ru\/articles\/760850\/\" rel=\"noopener noreferrer nofollow\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u0441\u0430\u0439\u0442\u0430 \u0432 Joomla 4+<\/a>.<\/p>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0432 \u043a\u043e\u043d\u0446\u0435-\u043a\u043e\u043d\u0446\u043e\u0432 \u0432 \u043c\u0430\u043a\u0435\u0442 \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f &#8212; \u0438\u0434\u0451\u043c \u0432 \u0444\u0430\u0439\u043b \u043c\u0430\u043a\u0435\u0442\u0430 \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c.<\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0432\u044b\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u043a\u043d\u0435 Modal Select \u0432 Joomla 5<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435 \u0441\u0442\u0430\u0442\u044c\u0438. \u0423\u043f\u043e\u043c\u044f\u043d\u0443 \u0437\u0434\u0435\u0441\u044c \u0441\u0442\u0430\u0442\u044c\u044e <a href=\"https:\/\/habr.com\/ru\/articles\/742422\/\" rel=\"noopener noreferrer nofollow\">\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<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0446\u0435\u043b\u043e\u043c \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0443 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0443, \u043d\u043e \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c. <\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0434\u0435\u0442\u0430\u043b\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043b\u0435\u0435 \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c, \u0447\u0442\u043e \u0441 \u043d\u0435\u0439 \u0412\u044b \u0443\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043b\u0438\u0441\u044c. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0431\u0443\u0434\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e\u0431 \u043e\u0442\u043b\u0438\u0447\u0438\u044f\u0445 \u0438 \u0434\u0435\u0442\u0430\u043b\u044f\u0445, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b\u0445 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u044f Form.<\/p>\n<p>\u041d\u0430\u043c \u0432\u0430\u0436\u043d\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f<\/strong> &#8212; <code>libraries\/src\/Form\/Field\/ModalSelectField.php<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u0432\u044b\u0431\u043e\u0440 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 Joomla<\/strong> &#8212; <code>admin istrator\/components\/com_content\/src\/Field\/Modal\/ArticleField.php<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u0432\u044b\u0431\u043e\u0440 \u0442\u0438\u043f\u0430 \u043c\u0435\u043d\u044e<\/strong> &#8212; <code>administrator\/components\/com_menus\/src\/Field\/MenutypeField.php<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u0432\u044b\u0431\u043e\u0440 \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e<\/strong> &#8212; <code>administrator\/components\/com_menus\/src\/Field\/MenutypeField.php<\/code><\/p>\n<\/li>\n<li>\n<p><strong>\u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430<\/strong> &#8212; <code>layouts\/joomla\/form\/field\/modal-select.php<\/code><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u043e\u043b\u0435 \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430<\/strong> \u0438\u0437 <code>com_contacts<\/code> \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0435\u0449\u0451 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 <code>administrator\/components\/com_contact\/src\/Field\/Modal\/ContactField.php<\/code>. \u041e\u043d\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e <code>FormField<\/code>, \u0430 \u043d\u0435 <code>ModalSelectField<\/code>.<\/p>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043e\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0432 xml-\u0444\u0430\u0439\u043b\u0435 \u0438\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>\\SimpleXMLElement<\/code> XML \u0444\u043e\u0440\u043c\u0443 \u0441 \u043d\u0430\u0448\u0438\u043c \u043f\u043e\u043b\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c &#171;\u043d\u0430 \u043b\u0435\u0442\u0443&#187;. \u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 <code>onContentPrepareForm<\/code> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c XML \u0444\u043e\u0440\u043c\u044b \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u0444\u043e\u0440\u043c\u0443 (\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c <code>$form->getName()<\/code> \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e &#8212; \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 (layout) \u043f\u043e\u043b\u044f. \u042d\u0442\u043e \u043c\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h3>XML \u043f\u043e\u043b\u044f<\/h3>\n<p>\u0421\u0430\u043c\u044b\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>addfieldprefix<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 namespace  \u0412\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u044f. \u0418\u043c\u044f \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0438\u0437 <strong>addfieldprefix + &#171;\\&#187; + type + &#171;Field&#187;<\/strong>. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043b\u0430\u0441\u0441 \u043f\u043e\u043b\u044f \u0431\u0443\u0434\u0435\u0442 <code>Joomla\\Plugin\\Wtproductbuilder\\Providerjoomshopping\\Field\\ProductlistField<\/code>.<\/p>\n<pre><code class=\"xml\">&lt;field       type=\"productlist\"       name=\"product_id\"       addfieldprefix=\"Joomla\\Plugin\\Wtproductbuilder\\Providerjoomshopping\\Field\"       label=\"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0422\u043e\u0432\u0430\u0440 JoomShopping\"       hint=\"\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043e\u0432\u0430\u0440.\"       \/><\/code><\/pre>\n<h3>HTML \u0432\u044b\u0432\u043e\u0434 (layout) \u043f\u043e\u043b\u044f<\/h3>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u0432 PHP \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e &#8212; \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043c\u0430\u043a\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u043b\u044f. \u041e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <strong>layouts\/joomla\/form\/field\/modal-select.php<\/strong>. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f 2 \u043f\u043e\u043b\u044f <code>input<\/code> &#8212; \u043e\u0434\u043d\u043e \u0432\u0438\u0434\u0438\u043c\u043e\u0435, \u0434\u0440\u0443\u0433\u043e\u0435 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0435. \u0412 \u0432\u0438\u0434\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432 \u0432\u0438\u0434\u0435 <code>placeholder<\/code> \u0437\u0430\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430, \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0430 \u0438\u043b\u0438 \u0442\u043e\u0432\u0430\u0440\u0430 &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>$valueTitle<\/code>. \u0410 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0435 &#8212; \u0435\u0433\u043e id &#8212; <code>$value<\/code>. \u0415\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0435\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043e &#8212; \u0432 \u043f\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442 \u0444\u0440\u0430\u0437\u0430 \u0432 \u0434\u0443\u0445\u0435 &#171;\u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b&#187; \u0438\u043b\u0438 &#171;\u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u043e\u0432\u0430\u0440&#187;. \u042d\u0442\u043e \u044f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u043c \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <code>hint<\/code> \u0432 XML \u043f\u043e\u043b\u044f \u0438\u043b\u0438 \u0436\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>setup<\/code> \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u043e\u043b\u044f.<\/p>\n<p>\u0412\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u043c\u0430\u043a\u0435\u0442\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0442\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0438\u043b\u0438 \u0432 XML-\u0444\u0430\u0439\u043b\u0435):<\/p>\n<pre><code class=\"php\">&lt;?php extract($displayData);  \/**  * Layout variables  * -----------------  * @var   string   $autocomplete    Autocomplete attribute for the field.  * @var   boolean  $autofocus       Is autofocus enabled?  * @var   string   $class           Classes for the input.  * @var   string   $description     Description of the field.  * @var   boolean  $disabled        Is this field disabled?  * @var   string   $group           Group the field belongs to. &lt;fields> section in form XML.  * @var   boolean  $hidden          Is this field hidden in the form?  * @var   string   $hint            Placeholder for the field.  * @var   string   $id        <\/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-361375","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/361375","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=361375"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/361375\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=361375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=361375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=361375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}