{"id":322958,"date":"2021-05-12T09:00:48","date_gmt":"2021-05-12T09:00:48","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=322958"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=322958","title":{"rendered":"\u041f\u0438\u0448\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f MediaWiki"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0412 \u0440\u0443\u043d\u0435\u0442\u0435 \u044f \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f MediaWIki (\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0431\u044b\u043b \u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u043d\u043e \u0442\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Developing_extensions\">\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d <\/a>\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0440\u0443\u0436\u0435\u043b\u044e\u0431\u043d\u043e \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0436\u0435 \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u041c\u0435\u0434\u0438\u0430\u0432\u0438\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0432 \u0441\u0435\u0431\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 API, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e js\/css \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430. \u0410 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e, \u043f\u0440\u0438\u043f\u043b\u0435\u0442\u0435\u043c \u0441\u044e\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Knowledge_Graph\">Google Knowledge Graph<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59f\/a8a\/a08\/59fa8aa0880355e7abcfd26e21c3032f.jpg\" width=\"1200\" height=\"630\"><figcaption><\/figcaption><\/figure>\n<h2>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f MediaWiki<\/h2>\n<p>MediaWiki \u2014 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u043a\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u041f\u043e\u043c\u0438\u043c\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0432\u043e\u0439 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u044b), \u043e\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Extensions\">\u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/a><\/p>\n<p>\u041f\u0438\u0448\u0443\u0442\u0441\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0430 php+jQuery. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u0434 \u044f\u0434\u0440\u0430 MediaWiki (\u0438\u043b\u0438 \u0432 \u043a\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439) \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Hooks\">\u0442.\u043d. \u0445\u0443\u043a\u0438<\/a>. \u0425\u0443\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0442\u0430\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c: \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u044b\u0437\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0441\u0430\u0439\u0442\u0443, \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. <\/p>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f MediaWiki \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e: \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0431\u0430\u0437\u043e\u0439, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u043a\u0438-\u0434\u0432\u0438\u0436\u043e\u043a, \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0443\u0433\u043e\u0434\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0438\u0440\u0438\u043a\u0438, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<h2>\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c?<\/h2>\n<blockquote>\n<p>\u0413\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0442\u0443\u0442: <br \/><a href=\"https:\/\/github.com\/Griboedow\/GoogleKnowledgeGraph\">https:\/\/github.com\/Griboedow\/GoogleKnowledgeGraph<\/a><\/p>\n<\/blockquote>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043c\u0441\u044f \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435. \u0421\u043a\u0430\u0436\u0435\u043c, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441 <a href=\"https:\/\/developers.google.com\/knowledge-graph\">Google Knowledge Graph<\/a>.<\/p>\n<p><strong>\u0422.\u0435. \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0442 \u044d\u0442\u043e:<\/strong><\/p>\n<pre><code class=\"xml\">\u041a\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442 \u0438 \u0438\u0437\u044f\u0449\u0435\u043d \u043a\u0430\u043a  &lt;GoogleKnowledgeGraph query=\"\u041c\u044d\u043b\u044c\u0445\u044d\u043d\u0430\u043d\u0432\u0435\u043d\u0430\u043d\u0445\u044b\u0442\u0431\u0435\u043b\u044c\u0445\u044b\u043d\"\/&gt;<\/code><\/pre>\n<p><strong>\u041f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0432 \u044d\u0442\u043e:<\/strong><\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/84b\/7c7\/784\/84b7c7784184f2fb7dfbcdfeebacadae.jpg\" width=\"1662\" height=\"217\"><figcaption><\/figcaption><\/figure>\n<p>\u0428\u0442\u0443\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f, \u043d\u043e \u043e\u043d\u0430 \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439. \u0415\u0449\u0435 \u0438 \u0441 \u0433\u0440\u0430\u0444\u043e\u043c \u0437\u043d\u0430\u043d\u0438\u0439 \u0413\u0443\u0433\u043b\u0430 \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c\u0441\u044f! <\/p>\n<blockquote>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445, <strong>\u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0432\u0438\u043a\u0438<\/strong>. \u0413\u0443\u0433\u043b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 100 000 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c. \u0414\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0432\u0438\u043a\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043d\u043e \u043d\u0430 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u0440\u0435\u0441\u0443\u0440\u0441 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e.<\/p>\n<\/blockquote>\n<h3>\u041a\u0430\u043a \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c<\/h3>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0433\u0434\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0435\u0433\u0438 <code>&lt;GoogleKnowledgeGraph query=\"\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u043e\u043a\u0438\u043d\u0437\"&gt;<\/code>. <\/p>\n<ul>\n<li>\n<p>MediaWIki \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0442\u0435\u0433\u0430, \u043d\u043e \u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 &lt;link&gt;:<code> {{#GoogleKnowledgeGraph||query=\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u043e\u043a\u0438\u043d\u0437}}<\/code>. <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u0433 \u0432 html \u043a\u043e\u0434 <code>&lt;span class=\"googleKnowledgeGraph\"&gt;\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u043e\u043a\u0438\u043d\u0437&lt;\/span&gt;<\/code><\/p>\n<\/li>\n<li>\n<p>JS \u043a\u043e\u0434 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0434\u0435\u0442 \u043f\u043e \u0432\u0441\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c <code>.googleKnowledgeGraph<\/code> \u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 API \u043d\u0430\u0448\u0435\u0433\u043e \u0436\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0438\u0445 \u0432 <a href=\"https:\/\/www.w3schools.com\/tags\/att_global_title.asp\">title<\/a>.<\/p>\n<\/li>\n<li>\n<p>API \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u043c: \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u043d\u0430 Google API, \u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0447\u0438\u0449\u0435\u043d\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430, \u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e. \u041b\u0443\u0447\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0440\u0430\u043d\u044c\u0448\u0435, \u0438 \u0432 \u0444\u043e\u043d\u0435 \u0434\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043c\u044b \u0442\u0443\u0442 \u0443\u0447\u0438\u043c\u0441\u044f, \u0430 \u043d\u0435 \u043f\u0438\u0448\u0435\u043c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0439 \u043a\u043e\u0434, \u0432\u0435\u0440\u043d\u043e?<\/p>\n<p><strong>\u0418\u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/strong><\/p>\n<ol>\n<li>\n<p><a href=\"#manifest\">\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442<\/a> \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><a href=\"#api\">\u0420\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c MediaWIki API<\/a>, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u0437 Google Knowledge Graph<\/p>\n<\/li>\n<li>\n<p><a href=\"#parser\">\u0420\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043f\u0430\u0440\u0441\u0435\u0440 MediaWiki<\/a>, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u0433\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"#front\">\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c JS \u043a\u043e\u0434<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b<\/p>\n<\/li>\n<li>\n<p><a href=\"#load\">\u041f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0430\u0448\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435<\/a> \u0432 MediaWiki <\/p>\n<\/li>\n<li>\n<p><a href=\"#share_mw\">\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043d\u0430\u0448\u0438\u0445 \u0442\u0440\u0443\u0434\u043e\u0432<\/a> \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>\u0410 \u0435\u0449\u0435 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043a\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Google Knowledge Graph API. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/console.developers.google.com\/flows\/enableapi?apiid=kgsearch.googleapis.com&amp;credential=client_key\">\u0442\u0443\u0442<\/a>.<\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0422\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u0430\u043f\u043e\u043a \u0434\u043b\u044f MediaWIki \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"lua\">extensions                    &lt;-- \u041f\u0430\u043f\u043a\u0430 \u0432\u0441\u0435\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 MediaWiki \u2514\u2500\u2500 GoogleKnowledgeGraph      &lt;-- \u041f\u043e\u0434\u043f\u0430\u043f\u043a\u0430 \u0441 \u043d\u0430\u0448\u0438\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c      \u251c\u2500\u2500 extension.json   &lt;-- \u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f     \u251c\u2500\u2500 i18n           &lt;-- \u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432     \u2502&nbsp;&nbsp; \u251c\u2500\u2500 en.json    &lt;-- \u0421\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c     \u2502&nbsp;&nbsp; \u251c\u2500\u2500 qqq.json   &lt;-- \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u0436\u0438\u0437\u043d\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u043e\u0432     \u2502&nbsp;&nbsp; \u2514\u2500\u2500 ru.json    &lt;-- \u0421\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c     \u251c\u2500\u2500 includes                             &lt;-- PHP \u043a\u043e\u0434     \u2502&nbsp;&nbsp; \u251c\u2500\u2500 ApiGoogleKnowledgeGraph.php      &lt;-- \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 API     \u2502&nbsp;&nbsp; \u2514\u2500\u2500 GoogleKnowledgeGraph.hooks.php   &lt;-- \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0445\u0443\u043a\u0438     \u2514\u2500\u2500 modules                                &lt;-- \u041f\u0430\u043f\u043a\u0430 \u0441 JS \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438          \u2514\u2500\u2500 ext.GoogleKnowledgeGraph           &lt;-- \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e 1             \u251c\u2500\u2500 ext.GoogleKnowledgeGraph.css   &lt;-- CSS \u0441\u0442\u0438\u043b\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f             \u2514\u2500\u2500 ext.GoogleKnowledgeGraph.js    &lt;-- JS \u043a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f<\/code><\/pre>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u0438 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e.<\/p>\n<h2>\u0418\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f (i18n)<\/h2>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0438\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/wikimedia\/banana-i18n\">banana-i18n<\/a>. \u041f\u043e\u043c\u0438\u043c\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u044d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 (\u0430 \u043d\u0435 \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e \u043a\u043e\u0434\u0443). \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<p><strong>qqq.json<\/strong><\/p>\n<pre><code class=\"json\">{ \t\"@metadata\": { \t\t\"authors\": [ \"Developer Name\" ] \t}, \t\"googleknowledgegraph-description\": \"Description of the extension, to be show in Special:Vesion.\", \t\"apihelp-askgoogleknowledgegraph-summary\" : \"Help string for 'askgoogleknowledgegraph' API request\", \t\"apihelp-askgoogleknowledgegraph-param-query\": \"Help string for 'query' parameter of API request 'askgoogleknowledgegraph'\" }<\/code><\/pre>\n<p><strong>en.json<\/strong><\/p>\n<pre><code class=\"json\">{ \t\"@metadata\": { \t\t\"authors\": [ \"Nikolai Kochkin\" ] \t}, \t\"googleknowledgegraph-description\": \"The extension gets brief description from Google Knowledge Graph\", \t\"apihelp-askgoogleknowledgegraph-summary\" : \"API to get description from Google Knowledge Graph\", \t\"apihelp-askgoogleknowledgegraph-param-query\": \"String to ask from Google Knowledge Graph\" }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"manifest\" id=\"manifest\"><\/a><\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f (extension.json)<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u043d\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c MediaWiki, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435. \u041f\u0443\u0442\u0435\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0434\u0432\u0430:<\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<code>require_once( '\/path\/to\/file.php' )<\/code>. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0435\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c. <\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>wfLoadExtension('ExtensionName')<\/code>. \u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u043d\u0435\u043c \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f. <a href=\"https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534\/\">https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0444\u0430\u0439\u043b\u0430 extension.json \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043a\u0430\u043a \u043e\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442, \u043a\u0430\u043a\u0438\u0435 \u0445\u0443\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435).<\/p>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 (\u0444\u0430\u0439\u043b <strong>extension.json<\/strong>):<\/p>\n<pre><code class=\"json\">{ \t\"name\": \"GoogleKnowledgeGraph\", \t\"version\": \"0.1.0\", \t\"author\": [ \t\t\"Nikolai Kochkin\" \t], \t\"url\": \"https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534\/\", \t\"descriptionmsg\": \"googleknowledgegraph-description\", \t\"license-name\": \"GPL-2.0-or-later\", \t\"type\": \"parserhook\", \t\"requires\": { \t\t\"MediaWiki\": \"&gt;= 1.29.0\" \t}, \t\"MessagesDirs\": { \t\t\"GoogleKnowledgeGraph\": [ \t\t\t\"i18n\" \t\t] \t}, \t\"AutoloadClasses\": { \t\t\"GoogleKnowledgeGraphHooks\": \"includes\/GoogleKnowledgeGraph.hooks.php\", \t\t\"ApiAskGoogleKnowledgeGraph\": \"includes\/ApiAskGoogleKnowledgeGraph.php\" \t}, \t\"APIModules\": { \t\t\"askgoogleknowledgegraph\": \"ApiAskGoogleKnowledgeGraph\" \t}, \t\"Hooks\": { \t\t\"OutputPageParserOutput\": \"GoogleKnowledgeGraphHooks::onBeforeHtmlAddedToOutput\", \t\t\"ParserFirstCallInit\": \"GoogleKnowledgeGraphHooks::onParserSetup\" \t}, \t\"ResourceFileModulePaths\": { \t\t\"localBasePath\": \"modules\", \t\t\"remoteExtPath\": \"GoogleKnowledgeGraph\/modules\" \t}, \t\"ResourceModules\": { \t\t\"ext.GoogleKnowledgeGraph\": {\t \t\t\t\"localBasePath\": \"modules\/ext.GoogleKnowledgeGraph\", \t\t\t\"remoteExtPath\": \"GoogleKnowledgeGraph\/modules\/ext.GoogleKnowledgeGraph\", \t\t\t\"scripts\": [ \t\t\t\t\"ext.GoogleKnowledgeGraph.js\" \t\t\t], \t\t\t\"styles\": [ \t\t\t\t\"ext.GoogleKnowledgeGraph.css\" \t\t\t] \t\t} \t}, \t\"config\": { \t\t\"GoogleApiLanguage\": { \t\t\t\"value\": \"ru\", \t\t\t\"path\": false, \t\t\t\"description\": \"In which language you want to get result from the Knowledge Graph\", \t\t\t\"public\": true \t\t}, \t\t\"GoogleApiToken\": { \t\t\t\"value\": \"\", \t\t\t\"path\": false, \t\t\t\"description\": \"API token to be used with Google API\", \t\t\t\"public\": false \t\t} \t}, \t\"ConfigRegistry\": { \t\t\"GoogleKnowledgeGraph\": \"GlobalVarConfig::newInstance\" \t}, \t\"manifest_version\": 2 }<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c extension.json \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0432\u0438\u0434\u0438\u0442 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Special:Version<\/p>\n<pre><code class=\"json\">\t\"name\": \"GoogleKnowledgeGraph\", \t\"version\": \"0.1.0\", \t\"author\": [ \t\t\"Nikolai Kochkin\" \t], \t\"url\": \"https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534\/\", \t\"descriptionmsg\": \"googleknowledgegraph-description\", \t\"license-name\": \"GPL-2.0-or-later\", \t\"type\": \"parserhook\",<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fab\/2cb\/693\/fab2cb69359edb08d844d0c4a14af941.jpg\" width=\"933\" height=\"138\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f: \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 MediaWIki \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 php \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<pre><code class=\"json\">\"requires\": { \t\t\"MediaWiki\": \"&gt;= 1.29.0\" \t},<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 i18n<\/p>\n<pre><code class=\"json\">\"MessagesDirs\": { \t\t\"GoogleKnowledgeGraph\": [ \t\t\t\"i18n\" \t\t] \t},<\/code><\/pre>\n<p>\u0418 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c, \u0432 \u043a\u0430\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438\u0441\u043a\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0438. <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:%24wgAutoloadClasses\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0442\u0443\u0442<\/a>.<\/p>\n<pre><code class=\"json\">\"AutoloadClasses\": { \t\t\"GoogleKnowledgeGraphHooks\": \"includes\/GoogleKnowledgeGraph.hooks.php\", \t\t\"ApiAskGoogleKnowledgeGraph\": \"includes\/ApiAskGoogleKnowledgeGraph.php\" \t},<\/code><\/pre>\n<p>\u0417\u0430\u044f\u0432\u043b\u044f\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u043c API \u043c\u0435\u0442\u043e\u0434 <strong>askgoogleknowledgegraph <\/strong>\u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>ApiAskGoogleKnowledgeGraph<\/code><\/p>\n<pre><code class=\"json\">\t\"APIModules\": { \t\t\"askgoogleknowledgegraph\": \"ApiAskGoogleKnowledgeGraph\" \t},<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043b\u043b\u0431\u0435\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445 \u0445\u0443\u043a\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b<\/p>\n<pre><code class=\"json\">\t\"Hooks\": { \t\t\"BeforePageDisplay\": \"GoogleKnowledgeGraphHooks::onBeforePageDisplay\", \t\t\"ParserFirstCallInit\": \"GoogleKnowledgeGraphHooks::onParserSetup\" \t},<\/code><\/pre>\n<p>\u0421\u043e\u043e\u0431\u0449\u0430\u0435\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0430\u0448\u0438 \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 modules<\/p>\n<pre><code class=\"json\">\t\"ResourceFileModulePaths\": { \t\t\"localBasePath\": \"modules\", \t\t\"remoteExtPath\": \"GoogleKnowledgeGraph\/modules\" \t},<\/code><\/pre>\n<p>\u0418 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043d\u0430\u0448 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043c\u043e\u0434\u0443\u043b\u044c \u0441 js \u0438 css. \u041a\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043a\u043e\u0434\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<pre><code class=\"json\">\t\"ResourceModules\": { \t\t\"ext.GoogleKnowledgeGraph\": {\t \t\t\t\"localBasePath\": \"modules\/ext.GoogleKnowledgeGraph\", \t\t\t\"remoteExtPath\": \"GoogleKnowledgeGraph\/modules\/ext.GoogleKnowledgeGraph\", \t\t\t\"scripts\": [ \t\t\t\t\"ext.GoogleKnowledgeGraph.js\" \t\t\t], \t\t\t\"styles\": [ \t\t\t\t\"ext.GoogleKnowledgeGraph.css\" \t\t\t] \t\t} \t},<\/code><\/pre>\n<p>\u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0437\u0430\u0434\u0430\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f <\/p>\n<pre><code class=\"json\">\t\"config\": { \t\t\"GoogleApiLanguage\": { \t\t\t\"value\": \"ru\", \t\t\t\"path\": false, \t\t\t\"description\": \"In which language you want to get result from the Knowledge Graph\", \t\t\t\"public\": true \t\t}, \t\t\"GoogleApiToken\": { \t\t\t\"value\": \"\", \t\t\t\"path\": false, \t\t\t\"description\": \"API token to be used with Google API\", \t\t\t\"public\": false \t\t} \t}, \t\"ConfigRegistry\": { \t\t\"GoogleKnowledgeGraph\": \"GlobalVarConfig::newInstance\" \t},<\/code><\/pre>\n<p> \u0412 LocalSettings.php \u043e\u043f\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 wg<\/p>\n<pre><code class=\"php\">$wgGoogleApiToken = 'your-google-token'; $wgGoogleApiLanguage = 'ru';<\/code><\/pre>\n<p>\u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0437\u0430\u0434\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0445\u0435\u043c\u044b \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430<\/p>\n<pre><code class=\"json\">\"manifest_version\": 2<\/code><\/pre>\n<p>\u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043b\u0438\u0448\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430. \u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044f\u0445 <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Extension.json\/Schema\">\u043c\u043e\u0436\u043d\u043e \u0442\u0443\u0442<\/a>.<\/p>\n<\/div>\n<\/details>\n<p><a class=\"anchor\" name=\"api\" id=\"api\"><\/a><\/p>\n<h2>\u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c API<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c API.  <\/p>\n<p>\u0412 extension.json \u043c\u044b \u0437\u0430\u044f\u0432\u0438\u043b\u0438, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>askgoogleknowledgegraph<\/code>, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>ApiAskGoogleKnowledgeGraph <\/code>\u0438\u0437 \u0444\u0430\u0439\u043b\u0430 <strong>includes\/ApiAskGoogleKnowledgeGraph.php:<\/strong><\/p>\n<pre><code class=\"json\">\/\/ extension.json fragment  \"AutoloadClasses\": {     &lt;...&gt;     \"ApiAskGoogleKnowledgeGraph\": \"includes\/ApiAskGoogleKnowledgeGraph.php\" }, \"APIModules\": {            \"askgoogleknowledgegraph\": \"ApiAskGoogleKnowledgeGraph\"      },<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043d\u0430\u0448 \u043c\u0435\u0442\u043e\u0434. \u0424\u0430\u0439\u043b <strong>includes\/ApiAskGoogleKnowledgeGraph.php:<\/strong><\/p>\n<pre><code class=\"php\">&lt;?php  \/**   * \u041a\u043b\u0430\u0441\u0441 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 API \u043c\u0435\u0442\u043e\u0434\u0430 askgoogleknowledgegraph  * \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u044f \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0442\u0443\u0442:   * https:\/\/github.com\/wikimedia\/mediawiki-extensions-TextExtracts\/blob\/master\/includes\/ApiQueryExtracts.php  *\/ use MediaWiki\\MediaWikiServices;  class ApiAskGoogleKnowledgeGraph extends ApiBase {  \tpublic function execute() {  \t\t$params = $this-&gt;extractRequestParams(); \t\t\/\/ query - \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0442\u0430\u043a \u0447\u0442\u043e $params['query'] \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \t\t$description = ApiAskGoogleKnowledgeGraph::getGknDescription( $params['query'] );   \t\t\/** \t\t * \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u043b\u044f Get \u0437\u0430\u043f\u0440\u043e\u0441\u0430.  \t\t * \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 Post \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0442\u0435\u043c \u0436\u0435 \u0443\u0441\u043f\u0435\u0445\u043e\u043c,  \t\t * \u0435\u0441\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043d\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0442\u0438\u043f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u00af\\_(\u30c4)_\/\u00af. \t\t *\/ \t\t$this-&gt;getResult()-&gt;addValue( null, \"description\", $description ); \t}   \t\/**  \t * \u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 \t *\/ \tpublic function getAllowedParams() { \t\treturn [ \t\t\t'query' =&gt; [ \t\t\t\tApiBase::PARAM_TYPE =&gt; 'string', \t\t\t\tApiBase::PARAM_REQUIRED =&gt; true, \t\t\t] \t\t]; \t}   \t\/** \t * \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Google Knowledge Graph,       * \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044f, \u0447\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0435\u0441\u0442\u044c \u0432\u0435\u0440\u043d\u044b\u0439. \t *\/ \tprivate static function getGknDescription( $query ) { \t\t \t\t\/** \t\t * \u0412\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0437\u044b\u043a\u0430 \u0438 \u0442\u043e\u043a\u0435\u043d. \t\t * \u0412\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 LocalSettings.php \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 wg, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: wgGoogleApiToken. \t\t * \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u043c\u044b \u0438\u0445 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0431\u0435\u0437 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \t\t *\/ \t\t$config = MediaWikiServices::getInstance()-&gt;getConfigFactory()-&gt;makeConfig( 'GoogleKnowledgeGraph' ); \t\t$gkgToken = $config-&gt;get( 'GoogleApiToken' ); \t\t$gkgLang = $config-&gt;get( 'GoogleApiLanguage' );   \t\t$service_url = 'https:\/\/kgsearch.googleapis.com\/v1\/entities:search'; \t\t$params = [ \t\t\t'query' =&gt; $query , \t\t\t'limit' =&gt; 1, \t\t\t'languages' =&gt; $gkgLang, \t\t\t'indent' =&gt; TRUE, \t\t\t'key' =&gt; $gkgToken, \t\t];  \t\t$url = $service_url . '?' . http_build_query( $params );  \t\t$ch = curl_init(); \t\tcurl_setopt( $ch, CURLOPT_URL, $url) ; \t\tcurl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); \t\t$response = json_decode( curl_exec( $ch ), true ); \t\tcurl_close( $ch );  \t\tif( count( $response['itemListElement'] ) == 0 ){ \t\t\treturn \"Nothing found by your request \\\"$query\\\"\"; \t\t} \t\t \t\tif( !isset( $response['itemListElement'][0]['result'] ) ){ \t\t\treturn \"Unknown GKG result format for request \\\"$query\\\"\"; \t\t}  \t\tif( !isset($response['itemListElement'][0]['result']['detailedDescription'] ) ){ \t\t\treturn \"detailedDescription was not provided by GKG for request \\\"$query\\\"\"; \t\t} \t\t \t\tif( !isset( $response['itemListElement'][0]['result']['detailedDescription']['articleBody'] ) ){ \t\t\treturn \"articleBody was not provided by GKG for request \\\"$query\\\"\"; \t\t} \t\t \t\treturn $response['itemListElement'][0]['result']['detailedDescription']['articleBody']; \t}  }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0430\u043f\u0438 \u043a \u043d\u0430\u0448\u0435\u0439 \u0432\u0438\u043a\u0438:<\/p>\n<pre><code class=\"json\">Get \/api.php?action=askgoogleknowledgegraph&amp;query=\u0412\u044b\u0445\u0443\u0445\u043e\u043b\u044c&amp;format=json  Response body: { \t\"description\": \"\u0412\u044b\u0301\u0445\u0443\u0445\u043e\u043b\u044c, \u0438\u043b\u0438 \u0440\u0443\u0441\u0441\u043a\u0430\u044f \u0432\u044b\u0445\u0443\u0445\u043e\u043b\u044c, \u0438\u043b\u0438 \u0445\u043e\u0445\u0443\u0301\u043b\u044f, \u2014 \u0432\u0438\u0434 \u043c\u043b\u0435\u043a\u043e\u043f\u0438\u0442\u0430\u044e\u0449\u0438\u0445 \u043e\u0442\u0440\u044f\u0434\u0430 \u043d\u0430\u0441\u0435\u043a\u043e\u043c\u043e\u044f\u0434\u043d\u044b\u0445 \u0438\u0437 \u0442\u0440\u0438\u0431\u044b Desmanini \u043f\u043e\u0434\u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 Talpinae \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 \u043a\u0440\u043e\u0442\u043e\u0432\u044b\u0445. \u041e\u0434\u0438\u043d \u0438\u0437 \u0434\u0432\u0443\u0445 \u0432\u0438\u0434\u043e\u0432 \u0442\u0440\u0438\u0431\u044b; \u0432\u0442\u043e\u0440\u044b\u043c \u0432\u0438\u0434\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0438\u0440\u0435\u043d\u0435\u0439\u0441\u043a\u0430\u044f \u0432\u044b\u0445\u0443\u0445\u043e\u043b\u044c.\" }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"parser\" id=\"parser\"><\/a><\/p>\n<h2>\u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c \u043f\u0430\u0440\u0441\u0435\u0440 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u0440\u043e\u0447\u0438\u0435 \u0445\u0443\u043a\u0438<\/h2>\n<pre><code class=\"json\">\/\/ \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0444\u0430\u0439\u043b\u0430 extension.json  \"AutoloadClasses\": { \t\t\"GoogleKnowledgeGraphHooks\": \"includes\/GoogleKnowledgeGraph.hooks.php\", \t\t&lt;...&gt; },\t \"Hooks\": { \t\t\"BeforePageDisplay\": \"GoogleKnowledgeGraphHooks::onBeforePageDisplay\", \t\t\"ParserFirstCallInit\": \"GoogleKnowledgeGraphHooks::onParserSetup\" },<\/code><\/pre>\n<p>\u0412 extension.json \u043c\u044b \u0437\u0430\u044f\u0432\u0438\u043b\u0438, \u0447\u0442\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>GoogleKnowledgeGraphHooks <\/code>\u0438\u0437 \u0444\u0430\u0439\u043b\u0430 <strong>includes\/GoogleKnowledgeGraph.hooks.php<\/strong> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0445\u0443\u043a\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><strong>OutputPageParserOutput<\/strong> \u0432 \u043c\u0435\u0442\u043e\u0434\u0435<strong> <\/strong><code>onBeforeHtmlAddedToOutput<\/code><strong>;<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>ParserFirstCallInit<\/strong> \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>onParserSetup<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0435\u043c\u043d\u043e\u0436\u043a\u043e \u043f\u0440\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0445\u0443\u043a\u0438:<\/p>\n<ul>\n<li>\n<p><strong>OutputPageParserOutput<\/strong> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0430\u0440\u0441\u0435\u0440 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c html, \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a html \u0431\u044b\u043b \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043a \u0430\u0443\u0442\u043f\u0443\u0442\u0443. \u0417\u0434\u0435\u0441\u044c \u043c\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434. \u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u043c\u044b \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0438 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435 <code>ext.GoogleKnowledgeGraph<\/code>, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0435\u0433\u043e.<\/p>\n<\/li>\n<li>\n<p><strong>ParserFirstCallInit <\/strong>\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438. \u041c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043f\u0430\u0440\u0441\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0442\u0435\u0433\u0430 <code>&lt;GoogleKnowledgeGraph&gt;<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0442\u0430\u043a, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f (\u0444\u0430\u0439\u043b <strong>includes\/GoogleKnowledgeGraph.hooks.php<\/strong>):<\/p>\n<pre><code class=\"php\">&lt;?php  \/**  * \u0425\u0443\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f GoogleKnowledgeGraph   *\/ class GoogleKnowledgeGraphHooks {  \t\/** \t * \u0421\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0445\u0443\u043a \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0430\u0440\u0441\u0435\u0440\u0430, \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0432\u043e\u0434\u043e\u043c html.  \t * \u0414\u0435\u0442\u0430\u043b\u0438 \u0442\u0443\u0442: https:\/\/www.mediawiki.org\/wiki\/Manual:Hooks\/OutputPageParserOutput \t *\/ \tpublic static function onBeforeHtmlAddedToOutput( OutputPage &amp;$out, ParserOutput $parserOutput ) { \t\t\/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0443 \u043c\u043e\u0434\u0443\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0435\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438\u0449\u0438 \u0432 extension.json \t\t$out-&gt;addModules( 'ext.GoogleKnowledgeGraph' ); \t\treturn true; \t}  \t \t\/** \t * \u0420\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c \u043f\u0430\u0440\u0441\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0442\u0435\u0433\u0430 &lt;GoogleKnowledgeGraphHooks&gt; \t *\/ \tpublic static function onParserSetup( Parser $parser ) { \t\t$parser-&gt;setHook( 'GoogleKnowledgeGraph', 'GoogleKnowledgeGraphHooks::processGoogleKnowledgeGraphTag' ); \t\treturn true; \t}   \t\/** \t * \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0442\u0435\u0433\u0430 &lt;GoogleKnowledgeGraph&gt;  \t *\/ \tpublic static function processGoogleKnowledgeGraphTag( $input, array $args, Parser $parser, PPFrame $frame ) { \t\t\/\/ \u041f\u0430\u0440\u0441\u0438\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 &lt;GoogleKnowledgeGraph arg1=\"val1\" arg2=\"val2\" ...&gt;  \t\tif( isset( $args['query'] ) ){ \t\t\t$query = $args['query']; \t\t} \t\telse{ \t\t\t\/\/ \u0412 \u0442\u0435\u0433 \u043d\u0435 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 query, \u0442\u0430\u043a \u0447\u0442\u043e \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430\u043c \u043d\u0435\u0447\u0435\u0433\u043e \t\t\treturn ''; \t\t}  \t\treturn '&lt;span class=\"googleKnowledgeGraph\"&gt;' . htmlspecialchars( $query ) . '&lt;\/span&gt;'; \t}  }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"front\" id=\"front\"><\/a><\/p>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434<\/h2>\n<p>\u0424\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0441\u0432\u044f\u0436\u0435\u0442 \u0432\u043e\u0435\u0434\u0438\u043d\u043e \u0432\u0441\u0435, \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0432\u044b\u0448\u0435. <\/p>\n<pre><code class=\"json\">\t\/\/ \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0444\u0430\u0439\u043b\u0430 extension.json      \"ResourceModules\": { \t\t\"ext.GoogleKnowledgeGraph\": { \t\t\t\"localBasePath\": \"modules\", \t\t\t\"remoteExtPath\": \"GoogleKnowledgeGraph\/modules\", \t\t\t\"scripts\": [ \t\t\t\t\"ext.GoogleKnowledgeGraph.js\" \t\t\t], \t\t\t\"styles\": [ \t\t\t\t\"ext.GoogleKnowledgeGraph.css\" \t\t\t], \t\t\t\"dependencies\": [ \t\t\t] \t\t} \t},   \"ResourceFileModulePaths\": { \t\t\"localBasePath\": \"modules\", \t\t\"remoteExtPath\": \"GoogleKnowledgeGraph\/modules\" \t},<\/code><\/pre>\n<p>\u0412 extension.json \u043c\u044b \u0437\u0430\u044f\u0432\u0438\u043b\u0438, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u043e\u0434\u0443\u043b\u044c <code>ext.GoogleKnowledgeGraph<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 <strong>modules <\/strong>\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><strong>modules\/ext.GoogleKnowledgeGraph\/ext.GoogleKnowledgeGraph.js<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>modules\/ext.GoogleKnowledgeGraph\/ext.GoogleKnowledgeGraph.css<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043c\u043e\u0434\u0443\u043b\u044f \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0447\u0443\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>onBeforeHtmlAddedToOutput<\/code>. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u0438 \u0441\u0430\u043c \u043a\u043e\u0434 \u043c\u043e\u0434\u0443\u043b\u044f. <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0438\u043b\u0438 <br \/>(\u0444\u0430\u0439\u043b <strong>modules\/ext.GoogleKnowledgeGraph\/ext.GoogleKnowledgeGraph.css)<\/strong>:<\/p>\n<pre><code class=\"css\">.googleKnowledgeGraph{     border-bottom: 1px dotted #000;     text-decoration: none; }<\/code><\/pre>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u044c\u043c\u0435\u043c\u0441\u044f \u0437\u0430 JS <br \/>(\u0444\u0430\u0439\u043b <strong>modules\/ext.GoogleKnowledgeGraph\/ext.GoogleKnowledgeGraph.js):<\/strong><\/p>\n<pre><code class=\"javascript\">( function ( mw, $ ) {   \/**    * \u0418\u0449\u0435\u043c \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 &lt;span class=\"googleKnowledgeGraph\"&gt;MyText&lt;\/span&gt;,    * \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u043c MyText \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441    * \/api.php?action=askgoogleknowledgegraph&amp;query=MyText    * \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 'title'.    *\/ \t$( \".googleKnowledgeGraph\" ).each( function( index, element ) { \t\t$.ajax({ \t\t\ttype: \"GET\",  \t\t\turl: mw.util.wikiScript( 'api' ), \t\t\tdata: {  \t\t\t\taction: 'askgoogleknowledgegraph',  \t\t\t\tquery: $( element ).text(), \t\t\t\tformat: 'json', \t\t\t}, \t\t\tdataType: 'json', \t\t\tsuccess: function( jsondata ){ \t\t\t\t$( element ).prop( 'title', jsondata.description ); \t\t\t} \t\t}); \t}); }( mediaWiki, jQuery ) );<\/code><\/pre>\n<p>JS \u043a\u043e\u0434 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442. jQuery \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0434\u0430\u0440\u043e\u043c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 MediaWiki \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<p><a class=\"anchor\" name=\"load\" id=\"load\"><\/a><\/p>\n<h2>\u041f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u0430\u0448\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0434\u0443\u0435\u043c\u0441\u044f<\/h2>\n<p>\u0414\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b\u0438, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b <strong>LocalSettings.php<\/strong>. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u043d\u0435\u0446:<\/p>\n<pre><code class=\"php\">\/\/ \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0444\u0430\u0439\u043b\u0430 LocalSettings.php  &lt;?php &lt;...&gt;    wfLoadExtension( 'GoogleKnowledgeGraph' ); $wgGoogleApiToken = \"your-google-token\"; $wgGoogleApiLanguage = 'ru';<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c! \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u044d\u0434\u0430\u043a\u043e\u0435:<\/p>\n<pre><code>\u0414\u0430\u0436\u0435 &lt;GoogleKnowledgeGraph query=\"\u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u044b\u0439 \u0444\u043b\u043e\u0442\"\/&gt; \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u0442\u0441\u0442\u043e\u0439\u043d\u044b\u043c.<\/code><\/pre>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/161\/f81\/0c0\/161f810c034bb15210dc506093811a41.png\" width=\"827\" height=\"91\"><figcaption><\/figcaption><\/figure>\n<p><a class=\"anchor\" name=\"share_mw\" id=\"share_mw\"><\/a><\/p>\n<h2>\u0414\u0435\u043b\u0438\u043c\u0441\u044f \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c<\/h2>\n<p>\u0415\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \u0441 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.mediawiki.org\/wiki\/Extension:GoogleKnowledgeGraph\">\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043d\u0430 MediaWiki \u0441 \u043a\u0440\u0430\u0442\u043a\u0438\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c<\/a> (\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b: \u043b\u0443\u0447\u0448\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0435\u043c \u0441\u0442\u043e \u0440\u0430\u0437 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c). \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 <a href=\"https:\/\/www.mediawiki.org\/wiki\/Template:Extension\">\u0448\u0430\u0431\u043b\u043e\u043d Extension<\/a>, \u043f\u043e\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0438 \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043f\u043e\u043b\u044f. <\/p>\n<figure class=\"bordered full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ff\/f4a\/6a4\/4fff4a6a468afcea825912d1a1e46a54.PNG\" alt=\"\u0422\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\" title=\"\u0422\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\" width=\"1103\" height=\"816\"><figcaption>\u0422\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/figcaption><\/figure>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u044b\u043b \u043e\u043f\u0438\u0441\u0430\u043d \u0441\u043b\u0443\u0447\u0430\u0439 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043d\u043e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0442\u0430\u043a\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043a\u0430\u043a iFrame, CategoryTree, Drawio \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u043b\u0435\u043a\u043e \u0443\u0448\u043b\u0438 \u043f\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0417\u0430 \u0441\u043a\u043e\u0431\u043a\u0430\u043c\u0438 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u043e\u0439, \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, OOUI \u0438 \u043c\u043d\u043e\u0433\u043e-\u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435. \u0412\u0441\u0435 \u0436 \u044f \u0432\u0430\u0441 \u043d\u0435 \u043d\u0430\u043f\u0443\u0433\u0430\u0442\u044c \u0445\u043e\u0442\u0435\u043b, \u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 \u2014  \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u0432\u0438\u043a\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e. <\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/Griboedow\/GoogleKnowledgeGraph\">\u041a\u043e\u0434 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430 github<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.mediawiki.org\/wiki\/Extension:GoogleKnowledgeGraph\">\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430 MediaWiki<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Developing_extensions\">\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u043e\u043c\u043e\u0449\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443<\/a> \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 MediaWIki<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.mediawiki.org\/wiki\/Extension:Examples\">Example extension<\/a> \u2014  \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441 \u043f\u0430\u0447\u043a\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0436\u0438\u0437\u043d\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/doc.wikimedia.org\/mediawiki-core\/master\/php\/index.html\">\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f MediaWiki \u043a\u043e\u0434\u0430 <\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/wikimedia\/banana-i18n\">banana-i18n <\/a>(\u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Extension.json\/Schema\">\u0421\u0445\u0435\u043c\u0430 extension.json <\/a>(\u0444\u0430\u0439\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439)<a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Extension.json\/Schema\"> <\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534\/\"> https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0412 \u0440\u0443\u043d\u0435\u0442\u0435 \u044f \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f MediaWIki (\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0431\u044b\u043b \u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u043d\u043e \u0442\u0430\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Developing_extensions\">\u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d <\/a>\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0440\u0443\u0436\u0435\u043b\u044e\u0431\u043d\u043e \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0436\u0435 \u044d\u0442\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u041c\u0435\u0434\u0438\u0430\u0432\u0438\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0432 \u0441\u0435\u0431\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 API, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e js\/css \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430. \u0410 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0443\u0447\u043d\u043e, \u043f\u0440\u0438\u043f\u043b\u0435\u0442\u0435\u043c \u0441\u044e\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/Knowledge_Graph\">Google Knowledge Graph<\/a>.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f MediaWiki<\/h2>\n<p>MediaWiki \u2014 \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430, \u043a\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430. \u041f\u043e\u043c\u0438\u043c\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u0432\u043e\u0439 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u044b), \u043e\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u0438\u043b\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Extensions\">\u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/a><\/p>\n<p>\u041f\u0438\u0448\u0443\u0442\u0441\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0430 php+jQuery. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u0434 \u044f\u0434\u0440\u0430 MediaWiki (\u0438\u043b\u0438 \u0432 \u043a\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439) \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:Hooks\">\u0442.\u043d. \u0445\u0443\u043a\u0438<\/a>. \u0425\u0443\u043a\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c. \u041f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0442\u0430\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c: \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u044b\u0437\u043e\u0432 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u043e \u0441\u0430\u0439\u0442\u0443, \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. <\/p>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f MediaWiki \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e: \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0431\u0430\u0437\u043e\u0439, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u043a\u0438-\u0434\u0432\u0438\u0436\u043e\u043a, \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0443\u0433\u043e\u0434\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0432\u0430\u0441 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u0438\u0440\u0438\u043a\u0438, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<h2>\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c?<\/h2>\n<blockquote>\n<p>\u0413\u043e\u0442\u043e\u0432\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0442\u0443\u0442: <br \/><a href=\"https:\/\/github.com\/Griboedow\/GoogleKnowledgeGraph\">https:\/\/github.com\/Griboedow\/GoogleKnowledgeGraph<\/a><\/p>\n<\/blockquote>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0432\u043b\u0435\u0447\u0435\u043c\u0441\u044f \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435. \u0421\u043a\u0430\u0436\u0435\u043c, \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441 <a href=\"https:\/\/developers.google.com\/knowledge-graph\">Google Knowledge Graph<\/a>.<\/p>\n<p><strong>\u0422.\u0435. \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0442 \u044d\u0442\u043e:<\/strong><\/p>\n<pre><code class=\"xml\">\u041a\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442 \u0438 \u0438\u0437\u044f\u0449\u0435\u043d \u043a\u0430\u043a  &lt;GoogleKnowledgeGraph query=\"\u041c\u044d\u043b\u044c\u0445\u044d\u043d\u0430\u043d\u0432\u0435\u043d\u0430\u043d\u0445\u044b\u0442\u0431\u0435\u043b\u044c\u0445\u044b\u043d\"\/&gt;<\/code><\/pre>\n<p><strong>\u041f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0432 \u044d\u0442\u043e:<\/strong><\/p>\n<figure class=\"bordered full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0428\u0442\u0443\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f, \u043d\u043e \u043e\u043d\u0430 \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0435\u0439. \u0415\u0449\u0435 \u0438 \u0441 \u0433\u0440\u0430\u0444\u043e\u043c \u0437\u043d\u0430\u043d\u0438\u0439 \u0413\u0443\u0433\u043b\u0430 \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c\u0441\u044f! <\/p>\n<blockquote>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432 \u0443\u0447\u0435\u0431\u043d\u044b\u0445 \u0446\u0435\u043b\u044f\u0445, <strong>\u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0432\u0438\u043a\u0438<\/strong>. \u0413\u0443\u0433\u043b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 100 000 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c. \u0414\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0432\u0438\u043a\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043d\u043e \u043d\u0430 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u0440\u0435\u0441\u0443\u0440\u0441 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e.<\/p>\n<\/blockquote>\n<h3>\u041a\u0430\u043a \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c<\/h3>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0433\u0434\u0435 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u0435\u0433\u0438 <code>&lt;GoogleKnowledgeGraph query=\"\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u043e\u043a\u0438\u043d\u0437\"&gt;<\/code>. <\/p>\n<ul>\n<li>\n<p>MediaWIki \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u043c\u0430\u0442 \u0442\u0435\u0433\u0430, \u043d\u043e \u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 &lt;link&gt;:<code> {{#GoogleKnowledgeGraph||query=\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u043e\u043a\u0438\u043d\u0437}}<\/code>. <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u0433 \u0432 html \u043a\u043e\u0434 <code>&lt;span class=\"googleKnowledgeGraph\"&gt;\u0420\u0438\u0447\u0430\u0440\u0434 \u0414\u043e\u043a\u0438\u043d\u0437&lt;\/span&gt;<\/code><\/p>\n<\/li>\n<li>\n<p>JS \u043a\u043e\u0434 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0434\u0435\u0442 \u043f\u043e \u0432\u0441\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c <code>.googleKnowledgeGraph<\/code> \u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 API \u043d\u0430\u0448\u0435\u0433\u043e \u0436\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0438\u0445 \u0432 <a href=\"https:\/\/www.w3schools.com\/tags\/att_global_title.asp\">title<\/a>.<\/p>\n<\/li>\n<li>\n<p>API \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u043c: \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u043d\u0430 Google API, \u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0447\u0438\u0449\u0435\u043d\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u0431\u0435\u0437 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430, \u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0441\u0430\u0439\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e. \u041b\u0443\u0447\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u0440\u0430\u043d\u044c\u0448\u0435, \u0438 \u0432 \u0444\u043e\u043d\u0435 \u0434\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u043c\u044b \u0442\u0443\u0442 \u0443\u0447\u0438\u043c\u0441\u044f, \u0430 \u043d\u0435 \u043f\u0438\u0448\u0435\u043c \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0439 \u043a\u043e\u0434, \u0432\u0435\u0440\u043d\u043e?<\/p>\n<p><strong>\u0418\u0442\u043e\u0433\u043e, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f:<\/strong><\/p>\n<ol>\n<li>\n<p><a href=\"#manifest\">\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442<\/a> \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><a href=\"#api\">\u0420\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c MediaWIki API<\/a>, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u0437 Google Knowledge Graph<\/p>\n<\/li>\n<li>\n<p><a href=\"#parser\">\u0420\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u043f\u0430\u0440\u0441\u0435\u0440 MediaWiki<\/a>, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u0433\u0430.<\/p>\n<\/li>\n<li>\n<p><a href=\"#front\">\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c JS \u043a\u043e\u0434<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b<\/p>\n<\/li>\n<li>\n<p><a href=\"#load\">\u041f\u043e\u0434\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043d\u0430\u0448\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435<\/a> \u0432 MediaWiki <\/p>\n<\/li>\n<li>\n<p><a href=\"#share_mw\">\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043d\u0430\u0448\u0438\u0445 \u0442\u0440\u0443\u0434\u043e\u0432<\/a> \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>\u0410 \u0435\u0449\u0435 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043a\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Google Knowledge Graph API. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/console.developers.google.com\/flows\/enableapi?apiid=kgsearch.googleapis.com&amp;credential=client_key\">\u0442\u0443\u0442<\/a>.<\/p>\n<h3>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0422\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u0430\u043f\u043e\u043a \u0434\u043b\u044f MediaWIki \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"lua\">extensions                    &lt;-- \u041f\u0430\u043f\u043a\u0430 \u0432\u0441\u0435\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 MediaWiki \u2514\u2500\u2500 GoogleKnowledgeGraph      &lt;-- \u041f\u043e\u0434\u043f\u0430\u043f\u043a\u0430 \u0441 \u043d\u0430\u0448\u0438\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c      \u251c\u2500\u2500 extension.json   &lt;-- \u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f     \u251c\u2500\u2500 i18n           &lt;-- \u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432     \u2502&nbsp;&nbsp; \u251c\u2500\u2500 en.json    &lt;-- \u0421\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c     \u2502&nbsp;&nbsp; \u251c\u2500\u2500 qqq.json   &lt;-- \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u0436\u0438\u0437\u043d\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u043e\u0432     \u2502&nbsp;&nbsp; \u2514\u2500\u2500 ru.json    &lt;-- \u0421\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c     \u251c\u2500\u2500 includes                             &lt;-- PHP \u043a\u043e\u0434     \u2502&nbsp;&nbsp; \u251c\u2500\u2500 ApiGoogleKnowledgeGraph.php      &lt;-- \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 API     \u2502&nbsp;&nbsp; \u2514\u2500\u2500 GoogleKnowledgeGraph.hooks.php   &lt;-- \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0445\u0443\u043a\u0438     \u2514\u2500\u2500 modules                                &lt;-- \u041f\u0430\u043f\u043a\u0430 \u0441 JS \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438          \u2514\u2500\u2500 ext.GoogleKnowledgeGraph           &lt;-- \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u0442\u043e\u043b\u044c\u043a\u043e 1             \u251c\u2500\u2500 ext.GoogleKnowledgeGraph.css   &lt;-- CSS \u0441\u0442\u0438\u043b\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f             \u2514\u2500\u2500 ext.GoogleKnowledgeGraph.js    &lt;-- JS \u043a\u043e\u0434 \u043d\u0430\u0448\u0435\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f<\/code><\/pre>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u0438 \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e.<\/p>\n<h2>\u0418\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f (i18n)<\/h2>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0438\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u044f\u0437\u044b\u043a\u0430\u0445, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/wikimedia\/banana-i18n\">banana-i18n<\/a>. \u041f\u043e\u043c\u0438\u043c\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u044d\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 (\u0430 \u043d\u0435 \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e \u043a\u043e\u0434\u0443). \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\n<p><strong>qqq.json<\/strong><\/p>\n<pre><code class=\"json\">{ \t\"@metadata\": { \t\t\"authors\": [ \"Developer Name\" ] \t}, \t\"googleknowledgegraph-description\": \"Description of the extension, to be show in Special:Vesion.\", \t\"apihelp-askgoogleknowledgegraph-summary\" : \"Help string for 'askgoogleknowledgegraph' API request\", \t\"apihelp-askgoogleknowledgegraph-param-query\": \"Help string for 'query' parameter of API request 'askgoogleknowledgegraph'\" }<\/code><\/pre>\n<p><strong>en.json<\/strong><\/p>\n<pre><code class=\"json\">{ \t\"@metadata\": { \t\t\"authors\": [ \"Nikolai Kochkin\" ] \t}, \t\"googleknowledgegraph-description\": \"The extension gets brief description from Google Knowledge Graph\", \t\"apihelp-askgoogleknowledgegraph-summary\" : \"API to get description from Google Knowledge Graph\", \t\"apihelp-askgoogleknowledgegraph-param-query\": \"String to ask from Google Knowledge Graph\" }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"manifest\" id=\"manifest\"><\/a><\/p>\n<h2>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f (extension.json)<\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u043d\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c MediaWiki, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0442\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435. \u041f\u0443\u0442\u0435\u0439 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0434\u0432\u0430:<\/p>\n<ul>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c<code>require_once( '\/path\/to\/file.php' )<\/code>. \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u043c\u044b \u0435\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c. <\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>wfLoadExtension('ExtensionName')<\/code>. \u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u043d\u0435\u043c \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f. <a href=\"https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534\/\">https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0444\u0430\u0439\u043b\u0430 extension.json \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f (\u043a\u0430\u043a \u043e\u043d\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442, \u043a\u0430\u043a\u0438\u0435 \u0445\u0443\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435).<\/p>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 (\u0444\u0430\u0439\u043b <strong>extension.json<\/strong>):<\/p>\n<pre><code class=\"json\">{ \t\"name\": \"GoogleKnowledgeGraph\", \t\"version\": \"0.1.0\", \t\"author\": [ \t\t\"Nikolai Kochkin\" \t], \t\"url\": \"https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534\/\", \t\"descriptionmsg\": \"googleknowledgegraph-description\", \t\"license-name\": \"GPL-2.0-or-later\", \t\"type\": \"parserhook\", \t\"requires\": { \t\t\"MediaWiki\": \"&gt;= 1.29.0\" \t}, \t\"MessagesDirs\": { \t\t\"GoogleKnowledgeGraph\": [ \t\t\t\"i18n\" \t\t] \t}, \t\"AutoloadClasses\": { \t\t\"GoogleKnowledgeGraphHooks\": \"includes\/GoogleKnowledgeGraph.hooks.php\", \t\t\"ApiAskGoogleKnowledgeGraph\": \"includes\/ApiAskGoogleKnowledgeGraph.php\" \t}, \t\"APIModules\": { \t\t\"askgoogleknowledgegraph\": \"ApiAskGoogleKnowledgeGraph\" \t}, \t\"Hooks\": { \t\t\"OutputPageParserOutput\": \"GoogleKnowledgeGraphHooks::onBeforeHtmlAddedToOutput\", \t\t\"ParserFirstCallInit\": \"GoogleKnowledgeGraphHooks::onParserSetup\" \t}, \t\"ResourceFileModulePaths\": { \t\t\"localBasePath\": \"modules\", \t\t\"remoteExtPath\": \"GoogleKnowledgeGraph\/modules\" \t}, \t\"ResourceModules\": { \t\t\"ext.GoogleKnowledgeGraph\": {\t \t\t\t\"localBasePath\": \"modules\/ext.GoogleKnowledgeGraph\", \t\t\t\"remoteExtPath\": \"GoogleKnowledgeGraph\/modules\/ext.GoogleKnowledgeGraph\", \t\t\t\"scripts\": [ \t\t\t\t\"ext.GoogleKnowledgeGraph.js\" \t\t\t], \t\t\t\"styles\": [ \t\t\t\t\"ext.GoogleKnowledgeGraph.css\" \t\t\t] \t\t} \t}, \t\"config\": { \t\t\"GoogleApiLanguage\": { \t\t\t\"value\": \"ru\", \t\t\t\"path\": false, \t\t\t\"description\": \"In which language you want to get result from the Knowledge Graph\", \t\t\t\"public\": true \t\t}, \t\t\"GoogleApiToken\": { \t\t\t\"value\": \"\", \t\t\t\"path\": false, \t\t\t\"description\": \"API token to be used with Google API\", \t\t\t\"public\": false \t\t} \t}, \t\"ConfigRegistry\": { \t\t\"GoogleKnowledgeGraph\": \"GlobalVarConfig::newInstance\" \t}, \t\"manifest_version\": 2 }<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c extension.json \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0432\u0438\u0434\u0438\u0442 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 Special:Version<\/p>\n<pre><code class=\"json\">\t\"name\": \"GoogleKnowledgeGraph\", \t\"version\": \"0.1.0\", \t\"author\": [ \t\t\"Nikolai Kochkin\" \t], \t\"url\": \"https:\/\/habr.com\/ru\/company\/veeam\/blog\/544534\/\", \t\"descriptionmsg\": \"googleknowledgegraph-description\", \t\"license-name\": \"GPL-2.0-or-later\", \t\"type\": \"parserhook\",<\/code><\/pre>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f: \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 MediaWIki \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 php \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<pre><code class=\"json\">\"requires\": { \t\t\"MediaWiki\": \"&gt;= 1.29.0\" \t},<\/code><\/pre>\n<p>\u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u0433\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 i18n<\/p>\n<pre><code class=\"json\">\"MessagesDirs\": { \t\t\"GoogleKnowledgeGraph\": [ \t\t\t\"i18n\" \t\t] \t},<\/code><\/pre>\n<p>\u0418 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u043c, \u0432 \u043a\u0430\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438\u0441\u043a\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043f\u043e\u0434\u0433\u0440\u0443\u0437\u043a\u0438. <a href=\"https:\/\/www.mediawiki.org\/wiki\/Manual:%24wgAutoloadClasses\">\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0442\u0443\u0442<\/a>.<\/p>\n<pre><code class=\"json\">\"AutoloadClasses\": { \t\t\"GoogleKnowledgeGraphHooks\": \"includes\/GoogleKnowledgeGraph.hooks.php\", \t\t\"ApiAskGoogleKnowledgeGraph\": \"includes\/ApiAskGoogleKnowledgeGraph.php\" \t},<\/code><\/pre>\n<p>\u0417\u0430\u044f\u0432\u043b\u044f\u0435\u043c, \u0447\u0442\u043e \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u043c API \u043c\u0435\u0442\u043e\u0434 <strong>askgoogleknowledgegraph <\/strong>\u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>ApiAskGoogleKnowledgeGraph<\/code><\/p>\n<pre><code class=\"json\">\t\"APIModules\": { \t\t\"askgoogleknowledgegraph\": \"ApiAskGoogleKnowledgeGraph\" \t},<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043b\u043b\u0431\u0435\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u043a\u0438\u0445 \u0445\u0443\u043a\u043e\u0432 \u0443 \u043d\u0430\u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b<\/p>\n<pre><code class=\"json\">\t\"Hooks\": { \t\t\"BeforePageDisplay\": \"GoogleKnowledgeGraphHooks::onBeforePageDisplay\", \t\t\"ParserFirstCallInit\": \"GoogleKnowledgeGraphHooks::onParserSetup\" \t},<\/code><\/pre>\n<p>\u0421\u043e\u043e\u0431\u0449\u0430\u0435\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0430\u0448\u0438 \u043b\u0435\u0436\u0430\u0442 \u0432 \u043f\u0430\u043f\u043a\u0435 modules<\/p>\n<pre><code class=\"json\">\t\"ResourceFileModulePaths\": {<\/code><\/pre>\n<\/div>\n<\/details>\n<\/blockquote>\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-322958","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/322958","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=322958"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/322958\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=322958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=322958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=322958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}