{"id":494041,"date":"2026-09-09T11:08:36","date_gmt":"2026-09-09T11:08:36","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=494041"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=494041","title":{"rendered":"\u0427\u0435\u0442\u044b\u0440\u0435 CMS, \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438: WordPress, 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441, InSales \u0438 Joomla"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u043e\u043b\u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u044f \u0434\u0435\u043b\u0430\u043b \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0441\u0430\u043c \u043a\u043b\u0430\u0434\u0451\u0442 \u0438\u0445 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0439, \u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u2014 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e: \u043d\u0443 \u0434\u0451\u0440\u043d\u0435\u043c REST API, \u0447\u0442\u043e \u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c.<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u2014 \u044d\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442\u0432\u0435\u0442\u0430. \u0410 \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0451 \u0432 CMS \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438, \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0435\u0439 \u0438 \u043c\u0435\u0442\u0430-\u0442\u0435\u0433\u0430\u043c\u0438 \u2014 \u044d\u0442\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0438\u0440\u0430, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0432\u043e\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u0441\u0432\u043e\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u043e\u0432\u0440\u0430\u0442\u044c \u0432\u0430\u043c \u043e\u0431 \u0443\u0441\u043f\u0435\u0445\u0435.<\/p>\n<p>\u041d\u0438\u0436\u0435 \u2014 \u0447\u0442\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e API \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u0438\u0441\u0442\u0435\u043c: WordPress, 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441, InSales \u0438 Joomla. \u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0437\u0430\u0439\u043c\u0451\u0442 \u0411\u0438\u0442\u0440\u0438\u043a\u0441, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 API \u043d\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435, \u0438 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a43\/374\/fb6\/a43374fb6d4d39bf23c08e1e56eef0f0.png\" alt=\"\u0427\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 CMS: REST \u0443 WordPress \u0438 Joomla, admin-API \u0443 InSales \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 PHP-\u0444\u0430\u0439\u043b \u0443 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a43\/374\/fb6\/a43374fb6d4d39bf23c08e1e56eef0f0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a43\/374\/fb6\/a43374fb6d4d39bf23c08e1e56eef0f0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0427\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 CMS: REST \u0443 WordPress \u0438 Joomla, admin-API \u0443 InSales \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 PHP-\u0444\u0430\u0439\u043b \u0443 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441<\/figcaption><\/div>\n<\/figure>\n<p><em>\u041a\u043e\u0440\u043e\u0442\u043a\u043e \u0432\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439: \u0442\u0440\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e HTTP, \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434.<\/em> <\/p>\n<h3>\u041e\u0431\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h3>\n<p>\u041d\u0430\u0447\u043d\u0443 \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u0438\u0442\u043e\u0433\u0435, \u2014 \u0438\u043d\u0430\u0447\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a \u0447\u0435\u043c\u0443 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u0441\u0442\u044b\u043b\u0438.<\/p>\n<p>\u0412\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 CMS \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u044b \u0437\u0430 \u043e\u0434\u043d\u0438\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c. \u041f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0443\u0434\u0430 \u043e\u043d \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442:<\/p>\n<pre><code class=\"python\">@dataclassclass PublishResult:    post_id: str                 # \u0432\u0435\u0437\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0430: \u0443 WP \u0438 \u0411\u0438\u0442\u0440\u0438\u043a\u0441\u0430 int, \u0443 Joomla \u0442\u043e\u0436\u0435, \u043d\u043e \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u043e    post_url: Optional[str]    status: str                  # \"publish\" | \"draft\"class BaseCMSPublisher(ABC):    @abstractmethod    async def test_connection(self) -&gt; dict: ...    @abstractmethod    async def publish(        self,        *,        title: str,        content_html: str,        slug: str,        status: str,        category_ids: list,        featured_media_id: Optional[int],    # WP: media ID, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0440\u0430\u043d\u0435\u0435        cover_image_bytes: Optional[bytes],  # \u0411\u0438\u0442\u0440\u0438\u043a\u0441: \u0441\u044b\u0440\u044b\u0435 \u0431\u0430\u0439\u0442\u044b \u043f\u0440\u044f\u043c\u043e \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435        cover_filename: Optional[str],        meta_title: Optional[str],        meta_description: Optional[str],    ) -&gt; PublishResult: ...    @abstractmethod    async def update_seo_meta(self, post_id: str, meta_title: str, meta_description: str) -&gt; None: ...<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u043b\u044f \u043e\u0431\u043b\u043e\u0436\u043a\u0438: <code>featured_media_id<\/code> \u0438 <code>cover_image_bytes<\/code>. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435, \u043e\u0431\u043e \u0447\u0442\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0432\u043d\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f. \u0412 WordPress \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u0434\u0438\u0430\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u0438 \u0432 \u043f\u043e\u0441\u0442 \u0443\u0445\u043e\u0434\u0438\u0442 \u0435\u0451 ID. \u0412 \u0411\u0438\u0442\u0440\u0438\u043a\u0441\u0435 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043c\u0435\u0434\u0438\u0430\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 REST-\u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043d\u0435\u0442, \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043b\u0430\u0442\u044c \u0431\u0430\u0439\u0442\u0430\u043c\u0438 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u0447\u0442\u043e \u0438 \u0441\u0442\u0430\u0442\u044c\u044e. \u0421\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442 \u2014 \u043c\u043e\u0434\u0435\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043e\u0431\u044f\u0437\u0430\u043d\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c, \u0430 \u043d\u0435 \u043f\u0440\u044f\u0442\u0430\u0442\u044c.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435, \u0447\u0442\u043e \u043d\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f: <strong>\u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a<\/strong>. \u0412 WordPress \u044d\u0442\u043e <code>status: \"draft\"<\/code>. \u0412 Joomla \u2014 <code>state: 0<\/code>. \u0412 InSales \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u043e\u0432 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442 \u0432\u043e\u0432\u0441\u0435, \u043e \u0447\u0451\u043c \u043d\u0438\u0436\u0435.<\/p>\n<h3>WordPress: \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c<\/h3>\n<p>WordPress \u0437\u0434\u0435\u0441\u044c \u044d\u0442\u0430\u043b\u043e\u043d, \u0438 \u0432\u0435\u0441\u044c publisher \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442 \u0441\u0442\u0440\u043e\u043a \u2014 \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u043e\u043d\u043a\u0430\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c.<\/p>\n<p>\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u2014 Application Password, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0432\u043e\u0434\u0438\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 OAuth-\u043f\u043b\u044f\u0441\u043e\u043a, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Basic Auth \u043f\u043e\u0432\u0435\u0440\u0445 HTTPS. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430 \u2014 \u043e\u0434\u0438\u043d POST \u043d\u0430 <code>\/wp-json\/wp\/v2\/posts<\/code>, \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 <code>id<\/code> \u0438 <code>link<\/code>.<\/p>\n<pre><code class=\"python\">post = await self._wp.create_post(    title=title,    content=content_html,    slug=slug,    status=status,    categories=category_ids or [],    featured_media=featured_media_id,)return PublishResult(post_id=str(post[\"id\"]), post_url=post.get(\"link\"), status=status)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u2014 SEO-\u043c\u0435\u0442\u0430. \u041d\u0438 Yoast, \u043d\u0438 Rank Math, \u043d\u0438 SEOPress \u043d\u0435 \u043a\u043b\u0430\u0434\u0443\u0442 title \u0438 description \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u043f\u043e\u0441\u0442\u0430: \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u0430-\u043a\u043b\u044e\u0447\u0438, \u0430 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u0438\u0442 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2014 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435.<\/p>\n<p>\u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. WordPress \u043c\u043e\u043b\u0447\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0432 <code>meta<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c:<\/p>\n<pre><code class=\"python\">await client.post(f\"{self.api_base}\/posts\/{post_id}\", json={\"meta\": {    \"_yoast_wpseo_title\":     title,   # Yoast SEO    \"_yoast_wpseo_metadesc\":  desc,    \"rank_math_title\":        title,   # Rank Math    \"rank_math_description\":  desc,    \"_seopress_titles_title\": title,   # SEOPress    \"_seopress_titles_desc\":  desc,}}, headers=self.headers)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0441\u044f\u0434\u0435\u0442 \u0432 \u0431\u0430\u0437\u0435 \u0431\u0435\u0437\u0432\u0440\u0435\u0434\u043d\u044b\u043c \u043c\u0443\u0441\u043e\u0440\u043e\u043c.<\/p>\n<p>\u0414\u0435\u0440\u0436\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043a\u0430\u043a \u0442\u043e\u0447\u043a\u0443 \u043e\u0442\u0441\u0447\u0451\u0442\u0430. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0445\u0443\u0436\u0435.<\/p>\n<h3>InSales: \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442<\/h3>\n<p>InSales \u2014 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432, \u0438 \u0431\u043b\u043e\u0433 \u0442\u0430\u043c \u2014 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0440\u0442\u0430. API \u043e\u043f\u0438\u0441\u0430\u043d, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e, \u043d\u043e \u043e\u0434\u043d\u0430 \u0434\u0435\u0442\u0430\u043b\u044c \u043b\u043e\u043c\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443.<\/p>\n<p><strong>\u0423 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u00ab\u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u00bb.<\/strong> \u0417\u0430\u0442\u043e <code>published_at<\/code> \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a <code>required<\/code> \u2014 \u043e\u043d \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d \u0432\u0441\u0435\u0433\u0434\u0430, \u0438 \u0432\u043e\u0442 \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e:<\/p>\n<blockquote>\n<p><code>article[published_at]<\/code> <em>required<\/em> \u2014 publication date, the article is invisible to users while publication date &gt; current time<\/p>\n<\/blockquote>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u043a\u0440\u044b\u0442\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u043e\u0434\u0438\u043d: \u0434\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430 \u0436\u0434\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2014 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443, \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0434\u043e\u0436\u0438\u0432\u0451\u0442\u0435:<\/p>\n<pre><code class=\"python\">if is_draft:    # InSales \u0442\u0440\u0435\u0431\u0443\u0435\u0442 published_at \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430.    # \u0414\u0430\u0442\u0430 \u0432 \u0434\u0430\u043b\u0451\u043a\u043e\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0451\u0442 \u043d\u0438\u0433\u0434\u0435.    article[\"published_at\"] = \"2099-12-31T23:59:59+00:00\"    article[\"notice\"] = \"\"else:    article[\"published_at\"] = datetime.now(timezone.utc).isoformat()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0445\u0430\u043a, \u043d\u043e \u044d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 InSales. \u041d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0442\u0443\u0442 \u0434\u0440\u0443\u0433\u043e\u0435: \u0435\u0441\u043b\u0438 \u043f\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443 \u0438 \u043f\u043e\u043d\u0430\u0434\u0435\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u043b\u0430\u0433, \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u043d\u0430 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f\u043c \u2014 \u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a.<\/p>\n<p>\u0415\u0449\u0451 \u043c\u0435\u043b\u043e\u0447\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u043b\u0447\u0430\u0441\u0430: \u043e\u0431\u043b\u043e\u0436\u043a\u0430 \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u043d\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u044e, \u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043d\u0430 <code>\/admin\/files.json<\/code> \u2014 \u0444\u0430\u0439\u043b \u0432 base64 \u0432\u043d\u0443\u0442\u0440\u0438 JSON, \u0430 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 <code>absolute_url<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u043b\u043e \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h3>Joomla: \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/h3>\n<p>Joomla \u0441 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 REST API \u0441 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438. \u0417\u0432\u0443\u0447\u0438\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u043a\u0430\u043f\u0440\u0438\u0437\u043d\u0430\u044f \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u2014 \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e\u00bb.<\/p>\n<h4>\u0414\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0443\u0442\u0438 \u043a API<\/h4>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u043e\u0431\u043e \u0447\u0442\u043e \u0441\u043f\u043e\u0442\u044b\u043a\u0430\u0435\u0448\u044c\u0441\u044f \u043d\u0430 \u0447\u0443\u0436\u0438\u0445 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430\u0445:<\/p>\n<pre><code class=\"python\"># \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \/api\/v1 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \/api\/ \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e# \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 URL. \u041d\u0430 \u0447\u0430\u0441\u0442\u0438 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432 \u0435\u0433\u043e \u043d\u0435\u0442, \u0438 \u0436\u0438\u0432\u0451\u0442 \u043b\u0438\u0448\u044c \/api\/index.php\/v1.self._base     = self._site_url + \"\/api\/index.php\/v1\"   # \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430self._base_alt = self._site_url + \"\/api\/v1\"             # \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435, \u043d\u043e \u043d\u0435 \u0432\u0435\u0437\u0434\u0435<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0438 \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u0430 \u0448\u0430\u0440\u0435\u0434-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0435 \u0431\u0435\u0437 \u043d\u0443\u0436\u043d\u043e\u0433\u043e <code>.htaccess<\/code> \u2014 404. \u041f\u0440\u044f\u043c\u043e\u0439 \u043f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <code>index.php<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0435\u0437\u0434\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u0434\u0435\u043b\u0430\u043b \u0435\u0433\u043e, \u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435.<\/p>\n<h4>Alias, \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430 \u0438 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438<\/h4>\n<p>\u0412 Joomla <code>alias<\/code> (\u0427\u041f\u0423) \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d <strong>\u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438<\/strong>. \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437, slug \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435, \u0438 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442:<\/p>\n<pre><code>Another Article in this category has the same alias<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041b\u0435\u0447\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c:<\/p>\n<pre><code class=\"python\">base_alias = payload[\"alias\"]for attempt in range(1, 7):    payload[\"alias\"] = base_alias if attempt == 1 else f\"{base_alias}-{attempt}\"    r = await client.post(f\"{self._base}\/content\/articles\", headers=self._headers, json=payload)    if r.status_code &lt; 400 or \"same alias\" not in r.text:        break<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0421 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0441\u0430\u0434\u0430: <strong>\u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0443 \u0432 alias \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043e\u043e\u0431\u0449\u0435<\/strong>. Joomla \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435-ASCII \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0438 \u043e\u0442 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043c\u0443\u0441\u043e\u0440 \u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0443\u0441\u0442\u043e\u0439 alias \u2014 \u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u0440\u043e \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442. \u0422\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438.<\/p>\n<h4>\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0430<\/h4>\n<p>\u0412\u043e\u0442 \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u043b\u043e \u043c\u043d\u0435 \u043f\u0430\u0440\u044b \u0447\u0430\u0441\u043e\u0432 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0443\u0431\u043b\u0435\u0439 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0430\u0439\u0442\u0435.<\/p>\n<p>\u041f\u043b\u0430\u0433\u0438\u043d\u044b Joomla \u2014 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u00ab\u0423\u043c\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a\u00bb (Smart Search) \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f <strong>\u043f\u043e\u0441\u043b\u0435<\/strong> \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u044c\u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0431\u0430\u0437\u0443. \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0430\u0434\u0430\u0435\u0442, API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 400. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435.<\/p>\n<p>\u041d\u0430\u0438\u0432\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u043e\u0442 \u0447\u0442\u043e: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u00ab\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c\u00bb, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442 \u00ab\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c\u00bb, \u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440. \u0418 \u0442\u0440\u0435\u0442\u0438\u0439.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043b\u044e\u0431\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0451\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u043e\u0441\u044c \u043b\u0438:<\/p>\n<pre><code class=\"python\">if r.status_code &gt;= 400:    # \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043f\u0430\u0434\u0430\u044e\u0442 \u0443\u0436\u0435 \u041f\u041e\u0421\u041b\u0415 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u0431\u0430\u0437\u0443: Joomla \u043e\u0442\u0434\u0430\u0451\u0442 400,    # \u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0435\u0451 \u043d\u0435 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u2014 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0434\u0443\u0431\u043b\u044c.    saved = await self._find_article(client, payload[\"alias\"], title)    if saved:        return PublishResult(post_id=str(saved), post_url=..., status=status)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u043e\u043d\u043a\u043e\u0441\u0442\u044c: \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e. \u0421\u0442\u0430\u0442\u044c\u044f \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0433\u043b\u0430 \u043b\u0435\u0436\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u2014 \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u044b\u0434\u0430\u0434\u0438\u043c \u0447\u0443\u0436\u0443\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0437\u0430 \u0441\u0432\u043e\u044e \u0438 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0435\u0451 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c. \u0417\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441.<\/p>\n<p>\u0422\u0430 \u0436\u0435 \u043b\u043e\u0433\u0438\u043a\u0430 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code>File exists and overwriting not requested<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0448\u0438\u0431\u043a\u0430. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u2014 \u0431\u0435\u0440\u0451\u043c \u0435\u0451 \u0438 \u0438\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435, \u0430 \u043d\u0435 \u0442\u0435\u0440\u044f\u0435\u043c \u043e\u0431\u043b\u043e\u0436\u043a\u0443.<\/p>\n<p>\u0418 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435, \u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 \u0441\u0442\u043e\u044f\u043b\u0430 \u0434\u0432\u043e\u0439\u043a\u0430 \u043a\u0430\u043a ID \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u044d\u0442\u043e \u00abUncategorised\u00bb \u0441\u0432\u0435\u0436\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Joomla. \u041d\u0430 \u0441\u0430\u0439\u0442\u0430\u0445, \u0433\u0434\u0435 \u044d\u0442\u0443 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u0443\u0434\u0430\u043b\u0438\u043b\u0438, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0432\u043e\u0434\u0438\u043b\u0430 <strong>\u043d\u043e\u0432\u0443\u044e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab2\u00bb<\/strong>. \u0425\u0430\u0440\u0434\u043a\u043e\u0434 \u0434\u0435\u0444\u043e\u043b\u0442\u043e\u0432 \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f; \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 \u0441\u0430\u0439\u0442\u0430, \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c.<\/p>\n<h3>1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441: API \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0431\u043b\u044e\u0434\u043e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0443\u0433\u043b\u0438\u0442\u044c \u00ab\u0411\u0438\u0442\u0440\u0438\u043a\u0441 API \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u0430\u00bb, \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 <code>iblock.element.add<\/code> \u0438 \u043e\u0431\u0440\u0430\u0434\u0443\u0435\u0442\u0435\u0441\u044c. \u0420\u0430\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u043d\u043e: \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435\u0442. \u041e\u0431\u044b\u0447\u043d\u043e \u0435\u0433\u043e \u043f\u0443\u0442\u0430\u044e\u0442 \u0441 <code>lists.element.add<\/code> \u0438\u0437 \u0411\u0438\u0442\u0440\u0438\u043a\u044124 \u2014 \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c API.<\/p>\n<p>\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f REST \u0434\u043b\u044f \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u043e\u0432 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u0440\u044f\u043c\u043e:<\/p>\n<blockquote>\n<p>\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <strong>Read-only<\/strong> \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u0430. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439: <code>iblock.Element.get<\/code>, <code>iblock.Element.list<\/code><\/p>\n<\/blockquote>\n<p>\u041e\u0433\u043e\u0432\u043e\u0440\u043a\u0430 \u0442\u0430\u043c \u0436\u0435: \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <a href=\"https:\/\/dev.1c-bitrix.ru\/api_d7\/bitrix\/iblock\/rest\/index.php\" rel=\"noopener nofollow\">\u0441\u0432\u043e\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/a> \u2014 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0441\u0432\u043e\u0439 \u0438\u043b\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0441 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0421\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0447\u0438\u0439, \u043d\u043e \u0437\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u043e\u043d \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435: \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0437\u0432\u043d\u0435, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0432\u043e\u0439 PHP-\u043a\u043e\u0434 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u043e\u0442 \u0447\u0435\u0433\u043e \u043c\u044b \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0443\u0439\u0442\u0438, \u0432\u044b\u0431\u0438\u0440\u0430\u044f REST.<\/p>\n<p>\u0422\u0430\u043a \u0447\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043d\u0435 \u043c\u0435\u0436\u0434\u0443 \u00ab\u0447\u0435\u0440\u0435\u0437 API\u00bb \u0438 \u00ab\u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b\u00bb, \u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0447\u0443\u0436\u043e\u0439 \u0441\u0430\u0439\u0442.<\/p>\n<p>\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0440\u0438: \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u0437 \u041c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441\u0430 (\u0434\u043e\u043b\u0433\u043e, \u0434\u043e\u0440\u043e\u0433\u043e, \u0432\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u0442\u0435 \u043e\u0442 \u0447\u0443\u0436\u043e\u0433\u043e \u043a\u043e\u0434\u0430), \u0441\u0432\u043e\u0439 REST-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 (\u043d\u0443\u0436\u043d\u043e \u043b\u0435\u0437\u0442\u044c \u0432 <code>\/local\/<\/code>, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c urlrewrite \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c REST \u0434\u043b\u044f \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u0430) \u2014 \u0438\u043b\u0438 \u043e\u0434\u0438\u043d PHP-\u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043a\u043b\u0430\u0434\u0451\u0442 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c \u0441\u0430\u0439\u0442\u0430. \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u0442\u0440\u0435\u0442\u044c\u0435 \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f: \u0444\u0430\u0439\u043b, \u0441\u0435\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0432\u043d\u0443\u0442\u0440\u0438, \u043f\u0440\u0438\u0451\u043c JSON \u043f\u043e POST.<\/p>\n<pre><code class=\"php\">define('BRIDGE_API_KEY', 'CHANGE_ME');\/\/ \u0413\u0440\u0443\u0437\u0438\u043c \u044f\u0434\u0440\u043e \u0411\u0438\u0442\u0440\u0438\u043a\u0441\u0430define('NO_KEEP_STATISTIC', true);define('NO_AGENT_CHECK', true);define('NOT_CHECK_PERMISSIONS', true);define('DisableEventsCheck', true);$docRoot = realpath(__DIR__);$_SERVER['DOCUMENT_ROOT'] = $docRoot;require_once($docRoot . '\/bitrix\/modules\/main\/include\/prolog_before.php');<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u044f \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0435\u043b \u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e.<\/p>\n<h4>\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c<\/h4>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043f\u0440\u043e\u043b\u043e\u0433 \u0411\u0438\u0442\u0440\u0438\u043a\u0441\u0430 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u0432\u044b\u0432\u043e\u0434. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0438 \u043f\u043e\u0442\u043e\u043c \u043e\u0442\u0434\u0430\u0442\u044c JSON, \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f HTML-\u043c\u0443\u0441\u043e\u0440, \u0430 \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c \u2014 \u0432\u0430\u0448 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a <code>Content-Type: application\/json<\/code>.<\/p>\n<p>\u041b\u0435\u0447\u0438\u0442\u0441\u044f \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439. \u041d\u043e \u043e\u0434\u043d\u043e\u0433\u043e <code>ob_start()<\/code> \u043c\u0430\u043b\u043e:<\/p>\n<pre><code class=\"php\">require_once($prologFile);\/\/ \u0421\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434 \u043f\u0440\u043e\u043b\u043e\u0433\u0430, \u043d\u043e \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u041d\u0415 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u043c: \u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0441\u0442\u0430\u0432\u0438\u0442\/\/ \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0447\u0430\u0442\u0430\u0435\u0442 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043e\u0448\u0438\u0431\u043a\u0438.\/\/ \u0411\u0435\u0437 \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u043d\u0430 \u0443\u0435\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0448\u0435\u0433\u043e JSON, \u0438 \u0431\u044d\u043a\u0435\u043d\u0434 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\/\/ \u043d\u0435\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u0439 500.ob_end_clean();ob_start();header('Content-Type: application\/json; charset=utf-8');<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043b\u044e\u0441 \u043a \u044d\u0442\u043e\u043c\u0443 \u2014 \u0441\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0444\u0430\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u0438\u043d\u0430\u0447\u0435 \u043b\u044e\u0431\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0447\u0443\u0436\u043e\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u0432 HTML-\u0434\u0430\u043c\u043f:<\/p>\n<pre><code class=\"php\">register_shutdown_function(function () {    $err = error_get_last();    if ($err &amp;&amp; in_array($err['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR])) {        while (ob_get_level()) ob_end_clean();        http_response_code(500);        header('Content-Type: application\/json; charset=utf-8');        echo json_encode(['error' =&gt; 'PHP fatal: ' . $err['message']]);    }});<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043e\u0437\u0434\u0430\u043d, \u043d\u043e ID \u0432\u0430\u043c \u043d\u0435 \u0432\u0435\u0440\u043d\u0443\u043b\u0438<\/h4>\n<p>\u0421\u0430\u043c\u0430\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u0437 \u0432\u0441\u0435\u0445.<\/p>\n<p><code>CIBlockElement::Add()<\/code> \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0438\u0448\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u0431\u0430\u0437\u0443, \u0430 <strong>\u043f\u043e\u0442\u043e\u043c<\/strong> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 <code>OnAfterIBlockElementAdd<\/code>. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0432\u0438\u0441\u0438\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u2014 \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0438\u043d\u043e\u0432\u0430\u0442 \u043c\u043e\u0434\u0443\u043b\u044c seo \u0438\u043b\u0438 \u043a\u0430\u0440\u0442\u0430 \u0441\u0430\u0439\u0442\u0430 \u2014 \u0438 \u043e\u043d \u043f\u0430\u0434\u0430\u0435\u0442, \u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u0431\u0430\u0437\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u0430 \u0432\u0430\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0431\u0435\u0437 ID.<\/p>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0430\u043b\u0438\u043b\u0430\u0441\u044c. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0430\u0439\u0442\u0430 \u2014 \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0434\u0443\u0431\u043b\u044c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u044b \u0438\u0434\u0451\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442:<\/p>\n<pre><code class=\"php\">\/** * \u041d\u0430\u0439\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d, \u043d\u043e \u0447\u0435\u0439 ID \u0434\u043e \u043d\u0430\u0441 \u043d\u0435 \u0434\u043e\u0435\u0445\u0430\u043b. *\/function bridge_find_element($iblockId, $code, $name = ''){    if ($code !== '') {        $res = \\CIBlockElement::GetList(            ['ID' =&gt; 'DESC'],            ['IBLOCK_ID' =&gt; (int)$iblockId, '=CODE' =&gt; $code],            false, ['nTopCount' =&gt; 1], ['ID']        );        if ($row = $res-&gt;Fetch()) return (int)$row['ID'];    }    \/\/ \u0410\u0432\u0442\u043e\u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u044f \u043c\u043e\u0433\u043b\u0430 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c CODE \u2014 \u0438\u0449\u0435\u043c \u043f\u043e \u0442\u043e\u0447\u043d\u043e\u043c\u0443 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e    if ($name !== '') {        $res = \\CIBlockElement::GetList(            ['ID' =&gt; 'DESC'],            ['IBLOCK_ID' =&gt; (int)$iblockId, '=NAME' =&gt; $name],            false, ['nTopCount' =&gt; 1], ['ID']        );        if ($row = $res-&gt;Fetch()) return (int)$row['ID'];    }    return false;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u00ab\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u0430\u00bb \u0432 \u00ab\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0448\u043b\u0430\u00bb. \u0412\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0442\u043e\u0438\u0442 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0444\u043b\u0430\u0433\u043e\u043c: \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435, \u043d\u043e \u0443 \u0432\u0430\u0441 \u0441\u043b\u043e\u043c\u0430\u043d \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u2014 \u0447\u0438\u043d\u0438\u0442\u044c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443 \u0441\u0430\u0439\u0442\u0430, \u0430 \u043d\u0435 \u043d\u0430\u043c.<\/p>\n<h4>CODE, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0437\u0430 \u0432\u0430\u0448\u0435\u0439 \u0441\u043f\u0438\u043d\u043e\u0439<\/h4>\n<p>\u0417\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043a\u0443\u0441\u043a\u0435 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e? \u041e\u043d \u0442\u0430\u043c \u043d\u0435 \u0434\u043b\u044f \u043a\u0440\u0430\u0441\u043e\u0442\u044b.<\/p>\n<p>\u041d\u0430 \u0447\u0430\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u043a \u0411\u0438\u0442\u0440\u0438\u043a\u0441\u0430 \u0432\u0438\u0441\u0438\u0442 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a <code>OnBeforeIBlockElementAdd<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 <code>CODE<\/code> \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0438\u0437 <code>NAME<\/code>. \u0412\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 slug <code>how-to-choose-oil-viscosity<\/code>, \u0430 \u0432 \u0431\u0430\u0437\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c <code>kak-vybrat-vyazkost-masla<\/code>. \u0421\u0441\u044b\u043b\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u0432\u0435\u0434\u0443\u0442 \u0432 \u043d\u0438\u043a\u0443\u0434\u0430.<\/p>\n<p>\u041e\u0431\u043e\u0439\u0442\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e API \u043d\u0435\u043b\u044c\u0437\u044f. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c CODE \u043f\u0440\u044f\u043c\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"php\">\/\/ \u0424\u043e\u0440\u0441\u0438\u043c CODE \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u0432 \u043e\u0431\u0445\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0430\u0432\u0442\u043e\u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438$con = \\Bitrix\\Main\\Application::getConnection();$safeCode = $con-&gt;getSqlHelper()-&gt;forSql($baseSlug);$con-&gt;query(\"UPDATE b_iblock_element SET CODE='\" . $safeCode . \"' WHERE ID=\" . (int)$elementId);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u0430, \u044d\u0442\u043e \u043b\u0435\u0437\u0442\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043c\u0438\u043c\u043e API. \u0414\u0440\u0443\u0433\u043e\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u044f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b: \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0430 \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u00bb \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e \u0431\u044b \u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043b\u0435\u0437\u0442\u044c \u0432 \u043a\u043e\u0434 \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430.<\/p>\n<h4>SEO-\u043c\u0435\u0442\u0430: \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441 \u043f\u0438\u0448\u0435\u0442, \u0434\u0440\u0443\u0433\u043e\u0439 \u0447\u0438\u0442\u0430\u0435\u0442<\/h4>\n<p>\u041c\u0435\u0442\u0430-\u0442\u0435\u0433\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u0430 \u0436\u0438\u0432\u0443\u0442 \u0432 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u0445 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u0445 (InheritedProperty). \u0412 D7 \u0434\u043b\u044f \u043d\u0438\u0445 \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441 \u043e\u0431\u043c\u0430\u043d\u0447\u0438\u0432\u043e \u043f\u043e\u0445\u043e\u0436\u0438\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><code>ElementTemplates<\/code> \u2014 <strong>\u0437\u0430\u043f\u0438\u0441\u044c<\/strong>, \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c <code>set()<\/code><\/p>\n<\/li>\n<li>\n<p><code>ElementValues<\/code> \u2014 <strong>\u0447\u0442\u0435\u043d\u0438\u0435<\/strong>, \u0443 \u043d\u0435\u0433\u043e <code>getValues()<\/code> \u0438 <code>clearValues()<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0442\u044c \u0438\u0445 \u043b\u0435\u0433\u043a\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 <code>set()<\/code> \u0431\u044b\u043b \u0438 \u0443 \u0432\u0442\u043e\u0440\u043e\u0433\u043e. \u0418\u0442\u043e\u0433 \u2014 \u0442\u0440\u0438 \u0443\u0440\u043e\u0432\u043d\u044f fallback: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0448\u0442\u0430\u0442\u043d\u044b\u0439 <code>ElementTemplates::set()<\/code>, \u043f\u043e\u0442\u043e\u043c <code>ElementValues<\/code> \u0434\u043b\u044f \u0441\u0442\u0430\u0440\u044b\u0445 \u0441\u0431\u043e\u0440\u043e\u043a, \u0430 \u0435\u0441\u043b\u0438 \u0438 \u044d\u0442\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u2014 \u043f\u0440\u044f\u043c\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439, \u043a \u0441\u043b\u043e\u0432\u0443, <strong>\u0440\u0430\u0437\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445<\/strong>: \u0432 \u043d\u043e\u0432\u044b\u0445 \u0441\u0432\u044f\u0437\u044c \u0447\u0435\u0440\u0435\u0437 <code>IBLOCK_ID<\/code>, \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u2014 \u0447\u0435\u0440\u0435\u0437 <code>ENTITY_TYPE<\/code> \u0438 <code>ENTITY_ID<\/code>.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0443\u0440\u043e\u043a \u043e\u0442\u0442\u0443\u0434\u0430 \u0436\u0435. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u00ab\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u043b\u0438 \u0447\u0442\u043e-\u0442\u043e, \u043a\u0440\u043e\u043c\u0435 \u043c\u0435\u0442\u044b\u00bb \u0441\u0442\u043e\u044f\u043b\u0430 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u043b\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0441\u044f <code>IBLOCK_ID<\/code>. \u0410 \u043e\u043d \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u043e\u0436\u043d\u044b\u043c, \u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430-\u0442\u0435\u0433\u043e\u0432 \u0432\u044b\u0437\u044b\u0432\u0430\u043b\u043e \u043f\u043e\u043b\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441 \u043f\u0435\u0440\u0435\u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0438\u0441\u043a\u0430. \u0420\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u043f\u0434\u0435\u0439\u0442 \u0434\u0432\u0443\u0445 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0441\u0442\u043e\u0438\u043b \u043a\u0430\u043a \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h4>\u0418 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u044e<\/h4>\n<p>\u041c\u0435\u043b\u043e\u0447\u044c \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a: URL \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u043c\u0443. \u041e\u043d \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0441\u0432\u043e\u0439. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0441\u0430\u043c \u0411\u0438\u0442\u0440\u0438\u043a\u0441:<\/p>\n<pre><code class=\"php\">$elRes = \\CIBlockElement::GetList([], ['=ID' =&gt; $elementId, '=IBLOCK_ID' =&gt; $iblockId], ...);$el = $elRes-&gt;GetNext();   \/\/ \u0438\u043c\u0435\u043d\u043d\u043e GetNext(): \u043e\u043d \u0441\u0447\u0438\u0442\u0430\u0435\u0442 DETAIL_PAGE_URL \u043f\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0443<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>GetNext()<\/code>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>Fetch()<\/code>, \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0448\u0430\u0431\u043b\u043e\u043d URL. \u0415\u0441\u043b\u0438 \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>#ELEMENT_ID#<\/code> \u0432\u043c\u0435\u0441\u0442\u043e <code>#ELEMENT_CODE#<\/code>, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 ID \u043d\u0430 slug.<\/p>\n<h3>\u0427\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0432\u0435\u0441\u0442\u0438 \u0447\u0435\u0442\u044b\u0440\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043c\u044b\u0441\u043b\u044f\u043c.<\/p>\n<p><strong>\u041a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u00ab\u0441\u043e\u0437\u0434\u0430\u043b\u043e\u0441\u044c \u043b\u0438\u00bb.<\/strong> \u042d\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0433\u043b\u0430\u0432\u043d\u044b\u043c. \u0418 Joomla \u0441 \u043f\u0430\u0434\u0430\u044e\u0449\u0438\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c, \u0438 \u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e: \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0431\u0430\u0437\u0435 \u0435\u0441\u0442\u044c, \u043e\u0442\u0432\u0435\u0442 \u2014 \u043e\u0448\u0438\u0431\u043a\u0430. \u041b\u044e\u0431\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0438\u0448\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0447\u0443\u0436\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043e\u0431\u044f\u0437\u0430\u043d\u0430 \u0443\u043c\u0435\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0441\u0442\u0444\u0430\u043a\u0442\u0443\u043c, \u0447\u0442\u043e \u0442\u0430\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u0418\u043d\u0430\u0447\u0435 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435 \u0434\u0443\u0431\u043b\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u0435, \u043f\u0440\u0438\u0447\u0451\u043c \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0430 \u043d\u0435 \u0443 \u0441\u0435\u0431\u044f.<\/p>\n<p><strong>\u0418\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u0435\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a.<\/strong> \u0414\u0435\u0448\u0435\u0432\u043b\u0435 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b \u0432\u0442\u043e\u0440\u043e\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440, \u0447\u0435\u043c \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0447\u0443\u0436\u0430\u044f CMS \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0432\u0440\u0430\u0442\u044c.<\/p>\n<p><strong>\u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043e\u0431\u044f\u0437\u0430\u043d\u0430 \u043f\u0440\u0438\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f, \u0430 \u043d\u0435 \u043f\u0440\u044f\u0442\u0430\u0442\u044c \u0438\u0445.<\/strong> \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u0432\u0435\u0441\u0442\u0438 \u043c\u0435\u0434\u0438\u0430 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443, \u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u044b \u043a \u043e\u0434\u043d\u043e\u043c\u0443 enum \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u0436\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0433\u0434\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u0440\u0443\u0433\u0430\u044f. \u041b\u0443\u0447\u0448\u0435 \u0447\u0435\u0441\u0442\u043d\u044b\u0435 \u0434\u0432\u0430 \u043f\u043e\u043b\u044f \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u0445 \u0434\u0432\u0430.<\/p>\n<p><strong>\u0425\u0430\u0440\u0434\u043a\u043e\u0434 \u0434\u0435\u0444\u043e\u043b\u0442\u043e\u0432 \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u2014 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0430\u043c\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u0431\u0430\u0433\u043e\u0432.<\/strong> \u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab2\u00bb \u043d\u0430 \u0447\u0443\u0436\u043e\u043c \u0441\u0430\u0439\u0442\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a.<\/p>\n<p><strong>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u044b\u0439 \u043f\u0443\u0442\u044c, \u0430 \u043d\u0435 \u0432\u0430\u0448.<\/strong> Read-only \u0440\u0435\u0436\u0438\u043c \u0443 \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u043e\u0432 \u0411\u0438\u0442\u0440\u0438\u043a\u0441\u0430 \u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 <code>published_at<\/code> \u0443 InSales \u0447\u0435\u0441\u0442\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u2014 \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u043f\u043e\u0442\u043a\u043d\u0451\u0442\u0441\u044f. \u0410 \u0432\u043e\u0442 \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043f\u0443\u0442\u044c \u043a API Joomla \u0442\u0440\u0435\u0431\u0443\u0435\u0442 rewrite, \u0438 \u043f\u0440\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u043e\u043d\u044f\u044e\u0442 \u043e\u0442\u0432\u0435\u0442 \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0431\u0430\u0437\u0443, \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0438\u0433\u0434\u0435: \u044d\u0442\u043e \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0436\u0438\u0432\u044b\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u043c\u0438 CMS \u2014 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u043e \u0411\u0438\u0442\u0440\u0438\u043a\u0441, \u2014 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. \u0421\u0443\u0434\u044f \u043f\u043e \u0442\u043e\u043c\u0443, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044f \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043e\u0442\u0432\u0435\u0442\u043e\u0432, \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0430\u043b\u043e.<\/p>\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\/articles\/1080270\/\">https:\/\/habr.com\/ru\/articles\/1080270\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u043e\u043b\u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u044f \u0434\u0435\u043b\u0430\u043b \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438 \u0441\u0430\u043c \u043a\u043b\u0430\u0434\u0451\u0442 \u0438\u0445 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0439, \u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u2014 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e: \u043d\u0443 \u0434\u0451\u0440\u043d\u0435\u043c REST API, \u0447\u0442\u043e \u0442\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c.\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u2014 \u044d\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0440\u0430\u0437\u0431\u043e\u0440 \u043e\u0442\u0432\u0435\u0442\u0430. \u0410 \u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0451 \u0432 CMS \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438, \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0435\u0439 \u0438 \u043c\u0435\u0442\u0430-\u0442\u0435\u0433\u0430\u043c\u0438 \u2014 \u044d\u0442\u043e \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0438\u0440\u0430, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0432\u043e\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438 \u0441\u0432\u043e\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0441\u043e\u0432\u0440\u0430\u0442\u044c \u0432\u0430\u043c \u043e\u0431 \u0443\u0441\u043f\u0435\u0445\u0435.\u041d\u0438\u0436\u0435 \u2014 \u0447\u0442\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u043e API \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u0438\u0441\u0442\u0435\u043c: WordPress, 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441, InSales \u0438 Joomla. \u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0437\u0430\u0439\u043c\u0451\u0442 \u0411\u0438\u0442\u0440\u0438\u043a\u0441, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 API \u043d\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435, \u0438 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f.\u0427\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 CMS: REST \u0443 WordPress \u0438 Joomla, admin-API \u0443 InSales \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 PHP-\u0444\u0430\u0439\u043b \u0443 1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441\u041a\u043e\u0440\u043e\u0442\u043a\u043e \u0432\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u0434\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439: \u0442\u0440\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u043e HTTP, \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434. \u041e\u0431\u0449\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u041d\u0430\u0447\u043d\u0443 \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u0438\u0442\u043e\u0433\u0435, \u2014 \u0438\u043d\u0430\u0447\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a \u0447\u0435\u043c\u0443 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u0441\u0442\u044b\u043b\u0438.\u0412\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 CMS \u0441\u043f\u0440\u044f\u0442\u0430\u043d\u044b \u0437\u0430 \u043e\u0434\u043d\u0438\u043c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c. \u041f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0443\u0434\u0430 \u043e\u043d \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442:@dataclassclass PublishResult:    post_id: str                 # \u0432\u0435\u0437\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0430: \u0443 WP \u0438 \u0411\u0438\u0442\u0440\u0438\u043a\u0441\u0430 int, \u0443 Joomla \u0442\u043e\u0436\u0435, \u043d\u043e \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u043e    post_url: Optional[str]    status: str                  # &#171;publish&#187; | &#171;draft&#187;class BaseCMSPublisher(ABC):    @abstractmethod    async def test_connection(self) -&gt; dict: &#8230;    @abstractmethod    async def publish(        self,        *,        title: str,        content_html: str,        slug: str,        status: str,        category_ids: list,        featured_media_id: Optional[int],    # WP: media ID, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0440\u0430\u043d\u0435\u0435        cover_image_bytes: Optional[bytes],  # \u0411\u0438\u0442\u0440\u0438\u043a\u0441: \u0441\u044b\u0440\u044b\u0435 \u0431\u0430\u0439\u0442\u044b \u043f\u0440\u044f\u043c\u043e \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435        cover_filename: Optional[str],        meta_title: Optional[str],        meta_description: Optional[str],    ) -&gt; PublishResult: &#8230;    @abstractmethod    async def update_seo_meta(self, post_id: str, meta_title: str, meta_description: str) -&gt; None: &#8230;\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0434\u043b\u044f \u043e\u0431\u043b\u043e\u0436\u043a\u0438: featured_media_id \u0438 cover_image_bytes. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435, \u043e\u0431\u043e \u0447\u0442\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0432\u043d\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f. \u0412 WordPress \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u0434\u0438\u0430\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c, \u0438 \u0432 \u043f\u043e\u0441\u0442 \u0443\u0445\u043e\u0434\u0438\u0442 \u0435\u0451 ID. \u0412 \u0411\u0438\u0442\u0440\u0438\u043a\u0441\u0435 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043c\u0435\u0434\u0438\u0430\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 REST-\u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043d\u0435\u0442, \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043b\u0430\u0442\u044c \u0431\u0430\u0439\u0442\u0430\u043c\u0438 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u0447\u0442\u043e \u0438 \u0441\u0442\u0430\u0442\u044c\u044e. \u0421\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0443 \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442 \u2014 \u043c\u043e\u0434\u0435\u043b\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f \u043e\u0431\u044f\u0437\u0430\u043d\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c, \u0430 \u043d\u0435 \u043f\u0440\u044f\u0442\u0430\u0442\u044c.\u0412\u0442\u043e\u0440\u043e\u0435, \u0447\u0442\u043e \u043d\u0435 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f: \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a. \u0412 WordPress \u044d\u0442\u043e status: &#171;draft&#187;. \u0412 Joomla \u2014 state: 0. \u0412 InSales \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u043e\u0432 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442 \u0432\u043e\u0432\u0441\u0435, \u043e \u0447\u0451\u043c \u043d\u0438\u0436\u0435.WordPress: \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044cWordPress \u0437\u0434\u0435\u0441\u044c \u044d\u0442\u0430\u043b\u043e\u043d, \u0438 \u0432\u0435\u0441\u044c publisher \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442 \u0441\u0442\u0440\u043e\u043a \u2014 \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u043e\u043d\u043a\u0430\u044f \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c.\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u2014 Application Password, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0432\u043e\u0434\u0438\u0442 \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0435. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 OAuth-\u043f\u043b\u044f\u0441\u043e\u043a, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Basic Auth \u043f\u043e\u0432\u0435\u0440\u0445 HTTPS. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430 \u2014 \u043e\u0434\u0438\u043d POST \u043d\u0430 \/wp-json\/wp\/v2\/posts, \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 id \u0438 link.post = await self._wp.create_post(    title=title,    content=content_html,    slug=slug,    status=status,    categories=category_ids or [],    featured_media=featured_media_id,)return PublishResult(post_id=str(post[&#171;id&#187;]), post_url=post.get(&#171;link&#187;), status=status)\u0415\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0433\u0434\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0442\u044c \u043f\u0440\u043e \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u2014 SEO-\u043c\u0435\u0442\u0430. \u041d\u0438 Yoast, \u043d\u0438 Rank Math, \u043d\u0438 SEOPress \u043d\u0435 \u043a\u043b\u0430\u0434\u0443\u0442 title \u0438 description \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u043f\u043e\u0441\u0442\u0430: \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u0441\u0432\u043e\u0438 \u043c\u0435\u0442\u0430-\u043a\u043b\u044e\u0447\u0438, \u0430 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u043e\u0438\u0442 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2014 \u0432\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435.\u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. WordPress \u043c\u043e\u043b\u0447\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438 \u0432 meta, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c:await client.post(f&#187;{self.api_base}\/posts\/{post_id}&#187;, json={&#171;meta&#187;: {    &#171;_yoast_wpseo_title&#187;:     title,   # Yoast SEO    &#171;_yoast_wpseo_metadesc&#187;:  desc,    &#171;rank_math_title&#187;:        title,   # Rank Math    &#171;rank_math_description&#187;:  desc,    &#171;_seopress_titles_title&#187;: title,   # SEOPress    &#171;_seopress_titles_desc&#187;:  desc,}}, headers=self.headers)\u0421\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e, \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0441\u044f\u0434\u0435\u0442 \u0432 \u0431\u0430\u0437\u0435 \u0431\u0435\u0437\u0432\u0440\u0435\u0434\u043d\u044b\u043c \u043c\u0443\u0441\u043e\u0440\u043e\u043c.\u0414\u0435\u0440\u0436\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043a\u0430\u043a \u0442\u043e\u0447\u043a\u0443 \u043e\u0442\u0441\u0447\u0451\u0442\u0430. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0445\u0443\u0436\u0435.InSales: \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442InSales \u2014 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043c\u0430\u0433\u0430\u0437\u0438\u043d\u043e\u0432, \u0438 \u0431\u043b\u043e\u0433 \u0442\u0430\u043c \u2014 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u0440\u0442\u0430. API \u043e\u043f\u0438\u0441\u0430\u043d, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e, \u043d\u043e \u043e\u0434\u043d\u0430 \u0434\u0435\u0442\u0430\u043b\u044c \u043b\u043e\u043c\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443.\u0423 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u00ab\u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u00bb. \u0417\u0430\u0442\u043e published_at \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e\u043c\u0435\u0447\u0435\u043d \u043a\u0430\u043a required \u2014 \u043e\u043d \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d \u0432\u0441\u0435\u0433\u0434\u0430, \u0438 \u0432\u043e\u0442 \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u043b\u043e\u0432\u043d\u043e:article[published_at] required \u2014 publication date, the article is invisible to users while publication date &gt; current time\u0422\u043e \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u043a\u0440\u044b\u0442\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u043e\u0434\u0438\u043d: \u0434\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430 \u0436\u0434\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u2014 \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443, \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0434\u043e\u0436\u0438\u0432\u0451\u0442\u0435:if is_draft:    # InSales \u0442\u0440\u0435\u0431\u0443\u0435\u0442 published_at \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a\u0430.    # \u0414\u0430\u0442\u0430 \u0432 \u0434\u0430\u043b\u0451\u043a\u043e\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0451\u0442 \u043d\u0438\u0433\u0434\u0435.    article[&#171;published_at&#187;] = &#171;2099-12-31T23:59:59+00:00&#187;    article[&#171;notice&#187;] = &#171;&#187;else:    article[&#171;published_at&#187;] = datetime.now(timezone.utc).isoformat()\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u0445\u0430\u043a, \u043d\u043e \u044d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 InSales. \u041d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0442\u0443\u0442 \u0434\u0440\u0443\u0433\u043e\u0435: \u0435\u0441\u043b\u0438 \u043f\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0434\u0430\u0442\u0443 \u0438 \u043f\u043e\u043d\u0430\u0434\u0435\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u043b\u0430\u0433, \u0441\u0442\u0430\u0442\u044c\u044f \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u043d\u0430 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u0435\u043b\u044f\u043c \u2014 \u0430 \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0438 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a.\u0415\u0449\u0451 \u043c\u0435\u043b\u043e\u0447\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u043b\u0447\u0430\u0441\u0430: \u043e\u0431\u043b\u043e\u0436\u043a\u0430 \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u043d\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u044e, \u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043d\u0430 \/admin\/files.json \u2014 \u0444\u0430\u0439\u043b \u0432 base64 \u0432\u043d\u0443\u0442\u0440\u0438 JSON, \u0430 \u0432 \u043e\u0442\u0432\u0435\u0442\u0435 absolute_url, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0442\u0435\u043b\u043e \u0441\u0442\u0430\u0442\u044c\u0438.Joomla: \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438Joomla \u0441 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 REST API \u0441 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438. \u0417\u0432\u0443\u0447\u0438\u0442 \u043e\u0442\u043b\u0438\u0447\u043d\u043e. \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u043a\u0430\u043f\u0440\u0438\u0437\u043d\u0430\u044f \u0438\u0437 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u0438\u0441\u0442\u0435\u043c, \u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u2014 \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e\u00bb.\u0414\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0443\u0442\u0438 \u043a API\u041f\u0435\u0440\u0432\u043e\u0435, \u043e\u0431\u043e \u0447\u0442\u043e \u0441\u043f\u043e\u0442\u044b\u043a\u0430\u0435\u0448\u044c\u0441\u044f \u043d\u0430 \u0447\u0443\u0436\u0438\u0445 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430\u0445:# \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \/api\/v1 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0432 \u043f\u0430\u043f\u043a\u0435 \/api\/ \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e# \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 URL. \u041d\u0430 \u0447\u0430\u0441\u0442\u0438 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u0432 \u0435\u0433\u043e \u043d\u0435\u0442, \u0438 \u0436\u0438\u0432\u0451\u0442 \u043b\u0438\u0448\u044c \/api\/index.php\/v1.self._base     = self._site_url + &#171;\/api\/index.php\/v1&#187;   # \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430self._base_alt = self._site_url + &#171;\/api\/v1&#187;             # \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435, \u043d\u043e \u043d\u0435 \u0432\u0435\u0437\u0434\u0435\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0438 \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041d\u0430 \u0448\u0430\u0440\u0435\u0434-\u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0435 \u0431\u0435\u0437 \u043d\u0443\u0436\u043d\u043e\u0433\u043e .htaccess \u2014 404. \u041f\u0440\u044f\u043c\u043e\u0439 \u043f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 index.php \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0435\u0437\u0434\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0441\u0434\u0435\u043b\u0430\u043b \u0435\u0433\u043e, \u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0437\u0430\u043f\u0430\u0441\u043d\u044b\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435.Alias, \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0430 \u0438 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438\u0412 Joomla alias (\u0427\u041f\u0423) \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u0435\u043d \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438. \u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437, slug \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0442 \u0436\u0435, \u0438 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442:Another Article in this category has the same alias\u041b\u0435\u0447\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043c \u0441 \u0441\u0443\u0444\u0444\u0438\u043a\u0441\u043e\u043c:base_alias = payload[&#171;alias&#187;]for attempt in range(1, 7):    payload[&#171;alias&#187;] = base_alias if attempt == 1 else f&#187;{base_alias}-{attempt}&#187;    r = await client.post(f&#187;{self._base}\/content\/articles&#187;, headers=self._headers, json=payload)    if r.status_code &lt; 400 or &#171;same alias&#187; not in r.text:        break\u0421 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0441\u0430\u0434\u0430: \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u0443 \u0432 alias \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043e\u043e\u0431\u0449\u0435. Joomla \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0435-ASCII \u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0438 \u043e\u0442 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043c\u0443\u0441\u043e\u0440 \u0438\u043b\u0438 \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043f\u0443\u0441\u0442\u043e\u0439 alias \u2014 \u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u0440\u043e \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442. \u0422\u0440\u0430\u043d\u0441\u043b\u0438\u0442\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435, \u0434\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438.\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0430\u0412\u043e\u0442 \u044d\u0442\u043e \u0441\u0442\u043e\u0438\u043b\u043e \u043c\u043d\u0435 \u043f\u0430\u0440\u044b \u0447\u0430\u0441\u043e\u0432 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0443\u0431\u043b\u0435\u0439 \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0430\u0439\u0442\u0435.\u041f\u043b\u0430\u0433\u0438\u043d\u044b Joomla \u2014 \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u00ab\u0423\u043c\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a\u00bb (Smart Search) \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u044c\u044f \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0431\u0430\u0437\u0443. \u0415\u0441\u043b\u0438 \u043f\u043b\u0430\u0433\u0438\u043d \u043f\u0430\u0434\u0430\u0435\u0442, API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 400. \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435.\u041d\u0430\u0438\u0432\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u043e\u0442 \u0447\u0442\u043e: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u00ab\u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c\u00bb, \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u0442 \u00ab\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c\u00bb, \u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440. \u0418 \u0442\u0440\u0435\u0442\u0438\u0439.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u043b\u044e\u0431\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0451\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u043e\u0441\u044c \u043b\u0438:if r.status_code &gt;= 400:    # \u041f\u043b\u0430\u0433\u0438\u043d\u044b \u043f\u0430\u0434\u0430\u044e\u0442 \u0443\u0436\u0435 \u041f\u041e\u0421\u041b\u0415 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0432 \u0431\u0430\u0437\u0443: Joomla \u043e\u0442\u0434\u0430\u0451\u0442 400,    # \u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u0435\u0451 \u043d\u0435 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u2014 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0434\u0443\u0431\u043b\u044c.    saved = await self._find_article(client, payload[&#171;alias&#187;], title)    if saved:        return PublishResult(post_id=str(saved), post_url=&#8230;, status=status)\u0422\u043e\u043d\u043a\u043e\u0441\u0442\u044c: \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0430\u0434\u043e \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e. \u0421\u0442\u0430\u0442\u044c\u044f \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0433\u043b\u0430 \u043b\u0435\u0436\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u2014 \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u0432\u044b\u0434\u0430\u0434\u0438\u043c \u0447\u0443\u0436\u0443\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0437\u0430 \u0441\u0432\u043e\u044e \u0438 \u043f\u043e\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u0435\u0451 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c. \u0417\u0430\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441.\u0422\u0430 \u0436\u0435 \u043b\u043e\u0433\u0438\u043a\u0430 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u0436\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b:File exists and overwriting not requested\u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0448\u0438\u0431\u043a\u0430. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u2014 \u0431\u0435\u0440\u0451\u043c \u0435\u0451 \u0438 \u0438\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435, \u0430 \u043d\u0435 \u0442\u0435\u0440\u044f\u0435\u043c \u043e\u0431\u043b\u043e\u0436\u043a\u0443.\u0418 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435, \u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 \u0441\u0442\u043e\u044f\u043b\u0430 \u0434\u0432\u043e\u0439\u043a\u0430 \u043a\u0430\u043a ID \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 \u044d\u0442\u043e \u00abUncategorised\u00bb \u0441\u0432\u0435\u0436\u0435\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 Joomla. \u041d\u0430 \u0441\u0430\u0439\u0442\u0430\u0445, \u0433\u0434\u0435 \u044d\u0442\u0443 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u0443\u0434\u0430\u043b\u0438\u043b\u0438, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0432\u043e\u0434\u0438\u043b\u0430 \u043d\u043e\u0432\u0443\u044e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u00ab2\u00bb. \u0425\u0430\u0440\u0434\u043a\u043e\u0434 \u0434\u0435\u0444\u043e\u043b\u0442\u043e\u0432 \u0438\u0437 \u0441\u0432\u043e\u0435\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f; \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 \u0441\u0430\u0439\u0442\u0430, \u0447\u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c.1\u0421-\u0411\u0438\u0442\u0440\u0438\u043a\u0441: API \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442\u0422\u0435\u043f\u0435\u0440\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0431\u043b\u044e\u0434\u043e.\u0415\u0441\u043b\u0438 \u0437\u0430\u0433\u0443\u0433\u043b\u0438\u0442\u044c \u00ab\u0411\u0438\u0442\u0440\u0438\u043a\u0441 API \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u0430\u00bb, \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 iblock.element.add \u0438 \u043e\u0431\u0440\u0430\u0434\u0443\u0435\u0442\u0435\u0441\u044c. \u0420\u0430\u0434\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u043d\u043e: \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u043d\u0435\u0442. \u041e\u0431\u044b\u0447\u043d\u043e \u0435\u0433\u043e \u043f\u0443\u0442\u0430\u044e\u0442 \u0441 lists.element.add \u0438\u0437 \u0411\u0438\u0442\u0440\u0438\u043a\u044124 \u2014 \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c API.\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f REST \u0434\u043b\u044f \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u043e\u0432 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043f\u0440\u044f\u043c\u043e:\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Read-only \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0438\u043d\u0444\u043e\u0431\u043b\u043e\u043a\u0430. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439: iblock.Element.get, iblock.Element.list\u041e\u0433\u043e\u0432\u043e\u0440\u043a\u0430 \u0442\u0430\u043c \u0436\u0435: \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u2014 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0441\u0432\u043e\u0439 \u0438\u043b\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0430 \u0448\u0442\u0430\u0442\u043d\u043e\u0433\u043e \u0441 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0421\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0447\u0438\u0439, \u043d\u043e \u0437\u0430\u043c\u0435\u0442\u044c\u0442\u0435, \u0447\u0442\u043e \u043e\u043d \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435: \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0437\u0432\u043d\u0435, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0432\u043e\u0439 PHP-\u043a\u043e\u0434 \u043d\u0430 \u0441\u0430\u0439\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430. \u0422\u043e \u0435\u0441\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u043e\u0442 \u0447\u0435\u0433\u043e \u043c\u044b \u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0443\u0439\u0442\u0438, \u0432\u044b\u0431\u0438\u0440\u0430\u044f REST.\u0422\u0430\u043a \u0447\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043d\u0435 \u043c\u0435\u0436\u0434\u0443 \u00ab\u0447\u0435\u0440\u0435\u0437 API\u00bb \u0438 \u00ab\u0447\u0435\u0440\u0435\u0437 \u0444\u0430\u0439\u043b\u00bb, \u0430 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u0447\u0443\u0436\u043e\u0439 \u0441\u0430\u0439\u0442.\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0440\u0438: \u043c\u043e\u0434\u0443\u043b\u044c \u0438\u0437 \u041c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441\u0430 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-494041","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/494041","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=494041"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/494041\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=494041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=494041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=494041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}