SEO: поддомены + управление метатегами и текстами

10

Разработчик: ВебФлай

Установлено: 500 - 999

Обновлено: 28.06.2023

Адаптирован под мобильные устройства

Совместим с редакциями Битрикс: «Старт» / «Стандарт» / «Малый бизнес» / «Бизнес»

Смотреть демо

5 500 ₽
Модуль позволяет легко создавать поддомены на сайте и устанавливать для каждого поддомена свои уникальные параметры: телефон, контактную информацию, метатег для webmaster.yandex и многое другое. Вы также можете самостоятельно создавать свои параметры. Управлением всеми поддоменами осуществляется из одного инфоблока.

Дополнительно в модуле реализован удобный помощник SEO-оптимизатора. Инфоблок «SEO», создаваемый модулем, дает возможность управлять метатегами и SEO-текстами на любых страницах сайта.

Плюсы использования:
  • Возможность присвоения отдельного региона каждому поддомену,
  • Простота аналитики (настройка счётчика для каждого поддомена),
  • Подтверждение прав в сервисах для вебмастера Яндекс и Google,
  • Привлечение дополнительного объема трафика из поисковой выдачи, за счет мультивыдачи,
  • Продвижение в нескольких регионах,
  • Назначение/смена meta тегов , <description>, <keywords>, <robots> для любой страницы вашего сайта,<br /><li>Установка и смена SEO текстов для любых страниц сайта и поддоменов,<br /><li>Возможность включения, выключения контента для каждого поддомена в отдельности (инструкция в установке).<br /></ul>В итоге модуль позволит Вам увеличить обхват аудитории за счёт созданных региональных сайтов и увеличить количество клиентов. А поскольку каждый домен будет таргетирован на отдельный город, то позиции сайта при поиске в каждом городе также повысятся.<br /><br />Поддомены создаются динамическими (псевдодомены), они не занимают дополнительного места у вас на сервере (только увеличивается размер кеша). </div> <div class="product-item-detail-tab-content" data-entity="tab-container" data-value="installation" itemprop="installation"> После активации купона установка происходит в автоматическом режиме. <br /><br /><b>Вам необходимо самостоятельно создать</b> псевдонимы на нужные вам поддомены на хостинге.<br /><br /><b>Модуль создаст</b> на Вашем сайте новый тип инфоблока: «Webfly - Поддомены и SEO», с двумя инфоблоками в нём: «Города» — для управления информацией на региональных поддоменах и «SEO» — для установки необходимых метаданных на любых страницах сайта.<br /><br />Для полноценной работы всех функций модуля необходимо, чтобы в настройках сайта был указан параметр <b>"URL сервера (без </b><b>https://):</b><b>"</b> (Настройки -> Сайты -> Список сайтов -> Ваш сайт).<br /><br />С версии 1.0.5 внедрена поддержка доменов третьего и более уровней основного сайта. Например - ваш основной сайт: site.site1.ru - вы можете также работать со всеми функциями модуля, создавая региональные поддомены вида msk.site.site1.ru, spb.site.site1.ru и т.д. При этом в настройке сайта <b>"URL сервера (без </b><b>https://):</b><b>"</b> должен быть указан основной домен - site.site1.ru.<br /><br /><b>ВНИМАНИЕ! Если вам нужно редактировать метатеги из публичной части сайта, вам необходимо разместить вызов компонента "webfly:meta.edit" перед закрывающим тегом </body>.<br /><br />Код вызова компонента "webfly:meta.edit":</b><br /><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre><?$APPLICATION->IncludeComponent( "webfly:meta.edit", ".default", array( "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "WF_JQUERY" => "N" ), false );?> </pre></td></tr></table></div><br /><b>Как работать с инфоблоком «Города»</b><br /><br />Инфоблок «Города» предназначен для вывода уникальных данных, таких как телефон, адрес, название города и др., для каждого поддомена сайта.<br /><br />Инфоблок «Города» нужно заполнить региональными поддоменами сайта с их уникальными свойствами: название города, поддомен (например, kursk, moscow, voronezh), телефон, e-mail, контактная информация и т.д. <i>Для основного сайта поле «Поддомен» нужно оставить пустым.</i><br /><br />Для того чтобы вывести на сайте значения свойств из инфоблока «Города», нужно разместить символьный код соответствующего свойства в решетках, например, <span class="bx-inline-tag" bx-tag-value="WF_CONTACTS#">#WF_CONTACTS#</span>, <span class="bx-inline-tag" bx-tag-value="WF_MAP#">#WF_MAP#</span>, <span class="bx-inline-tag" bx-tag-value="WF_EMAIL#">#WF_EMAIL#</span>. Вы также можете создавать свои свойства и выводить их на сайте.<br /><br /><b>Как работать с инфоблоком «SEO»<br /></b><br />Инфоблок «SEO» предназначен для быстрой установки метатегов и размещения SEO-текстов на любой странице сайта.<br /><br /><b>ВНИМАНИЕ! Для изменения метатегов необходимо разместить вызов компонента "webfly:meta.edit" перед закрывающим тегом </body>.<br /><br />Код вызова компонента "webfly:meta.edit":</b><br /><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre><?$APPLICATION->IncludeComponent( "webfly:meta.edit", ".default", array( "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "WF_JQUERY" => "N" ), false );?> </pre></td></tr></table></div><br />Изменять метатеги можно как из публичной части сайта, воспользовавшись появившейся панелькой "Редактировать метатеги страницы", так и из админки.<br /><br /><b>Редактирование из публичной части<br /><br /></b>После размещения вызова компонента "webfly:meta.edit" в публичной части сайта внизу всех страниц появится красная панелька (видна только пользователям с административными правами), при клике на которую появится форма редактирования метатегов страницы.<br /><br /><b>Редактирование из админки<br /><br /></b>Поле «Страница» инфоблока заполняется адресом конкретной страницы (без https://), для которой необходимо проставить свои метатеги, а свойства «TITLE», «ROBOTS», «DESCRIPTION» и «KEYWORDS» заполняются необходимой информацией.<br /><br />В множественное свойство «WF_SEO_TEXT» можно добавить SEO-тексты для данной страницы. Для того чтобы вывести эти тексты на сайте, необходимо указать символьный код свойства в решетках и порядковый номер SEO-текста, например, <span class="bx-inline-tag" bx-tag-value="WF_SEO_TEXT_1#">#WF_SEO_TEXT_1#</span>, <span class="bx-inline-tag" bx-tag-value="WF_SEO_TEXT_2#">#WF_SEO_TEXT_2#</span> и т.д.<br /><b><br />Дополнительные возможности</b><i><br /><br />Вывести названия всех городов со ссылками на соответствующие поддомены:</i><br /><span class="bx-inline-tag" bx-tag-value="WF_CITIES#">#WF_CITIES#</span><i><br /><br />Вывод городов с разделением на центры, области и округа + избранные города:<div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre><?$APPLICATION->IncludeComponent( "webfly:cities.popup", ".default", array( "COMPONENT_TEMPLATE" => ".default", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", ), false );?> </pre></td></tr></table></div>Нужно создать новое списковое свойство с символьным кодом WF_FAVOURITE, значение списка с кодом "Y". Тогда вы сможете указывать какие города выводить в поп-апе, а какие нужно скрыть от клиентов.<br /><br />Вывести любой город:</i><br />Основной город: <span class="bx-inline-tag" bx-tag-value="WF_CITY_default#">#WF_CITY_default#</span><br />Остальные: <span class="bx-inline-tag" bx-tag-value="WF_CITY_поддомен#">#WF_CITY_поддомен#</span><i><br /><br />Вывести название текущего города:</i><br /><span class="bx-inline-tag" bx-tag-value="WF_CITY_NAME#">#WF_CITY_NAME#</span><br /><b><br />Фильтрация выводимой на сайте информации</b><br /><br />При создании нескольких региональных поддоменов может возникнуть необходимость не выводить некоторые новости или товары для определенных городов. Вы можете Управлять показом таких элементов с помощью фильтрации.<br /><br /><i><b>Для этого Вам необходимо:</b></i><br /><br />1. Создать в инфоблоке, элементы которого вы не хотите выводить для определенных поддоменов, создать новое свойство со следующими параметрами:<br /><br />Название: Не выводить для городов<br />Тип: Привязка к элементам в виде списка<br />Код: NOT_SHOW_IN_CITIES<br />Множественное<br /><br />И настроить его на инфоблок «Города»<br /><br />2. Далее, в элементах инфоблока, которые не нужно выводить для определенных городов, во вновь созданном свойстве «Не выводить для городов» выбрать эти города.<br /><br />3. На странице с вызовом компонента, настроенном на данный инфоблок, перед вызовом компонента, добавить код фильтра:<br /><br /><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre><? if (CModule::IncludeModule("webfly.seocities") and CModule::IncludeModule("iblock")) { $cityID = CSeoCities::getCityId(); global $cityFilter; $cityFilter = array("!ID" => CIBlockElement::SubQuery("ID", array("IBLOCK_ID" => "ID_ИНФОБЛОКА", "PROPERTY_NOT_SHOW_IN_CITIES" => $cityID))); } ?></pre></td></tr></table></div><br />Где "ID ИНФОБЛОКА" — ID Вашего инфоблока<br /><br />Не забудьте указать в настройках компонента значение фильтра — cityFilter.<br /><br /><b><br />Создание разных файлов robots.txt для региональных поддоменов<br /></b><br />1. Создайте в корне сайта папку robots.<br />2. Создайте в этой папке файлы robots.txt для каждого регионального поддомена (прим: robots.txt, robots_msk.txt, robots_spb.txt и т.д.)<br />3. В файле .htaccess укажите пути для созданных файлов robots.txt:<div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre>RewriteCond %{HTTP_HOST} msk.site.ru$ Rewriterule ^robots.txt$ /robots/robots_msk.txt [L] RewriteCond %{HTTP_HOST} spb.site.ru$ Rewriterule ^robots.txt$ /robots/robots_spb.txt [L] RewriteCond %{HTTP_HOST} site.ru$ Rewriterule ^robots.txt$ /robots/robots.txt [L]</pre></td></tr></table></div>в некоторых случаях работает следущая комбинация<div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre>RewriteCond %{HTTP_HOST} msk\.site.ru Rewriterule ^robots.txt$ /robots/robots_msk.txt [L] RewriteCond %{HTTP_HOST} spb\.site.ru Rewriterule ^robots.txt$ /robots/robots_spb.txt [L] RewriteCond %{HTTP_HOST} site.ru Rewriterule ^robots.txt$ /robots/robots.txt [L] </pre></td></tr></table></div><p></p><b>Или второй способ если у вас ооочень много городов</b><p>Правило переадресации для .htaccess</p><p></p><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre># sitemap.xml with sitemap.php only if the latter exists RewriteCond %{REQUEST_FILENAME} sitemap-files.xml RewriteCond %{DOCUMENT_ROOT}/sitemap-files.php -f RewriteRule ^(.*)$ /sitemap-files.php [L] # robots.txt with robots.php only if the latter exists RewriteCond %{REQUEST_FILENAME} robots.txt RewriteCond %{DOCUMENT_ROOT}/robots.php -f RewriteRule ^(.*)$ /robots.php [L]</pre></td></tr></table></div><p></p><p> </p><p> </p><p>Создаем общий файл robots.php</p><p></p><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre><? $arHost = explode( ":", $_SERVER["HTTP_HOST"]); $_SERVER["HTTP_HOST"] = $arHost[0]; $hostname = $_SERVER["HTTP_HOST"]; function echoTextFile($file) { if (! file_exists($file)) return false; if (! is_readable($file)) return false; $timestamp = filemtime($file); $tsstring = gmdate("D, d M Y H:i:s ", $timestamp) . "GMT"; $etag = md5($file . $timestamp); $fs = filesize($file) + 1000; header("Content-Type: text/plain"); header("Content-Length: ".$fs); header("Last-Modified: $tsstring"); header("ETag: \"{$etag}\""); $fc = file_get_contents($file); if($_SERVER["HTTP_HOST"]!="himgroup.ru"){ echo "User-agent: Googlebot\nDisallow: /\n\n" . $fc; } else { echo $fc; } return true;}$robotsHost = dirname(__FILE__) . "/regions/robots/robots_{$hostname}.txt"; $robotsDefault = dirname(__FILE__) . "/robots.txt"; if(!echoTextFile($robotsHost) && !echoTextFile($robotsDefault)) { header("HTTP/1.0 404 Not Found");}</pre></td></tr></table></div><p>Создаем общий файл sitemap.php</p><p></p><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre><? $arHost = explode( ":", $_SERVER["HTTP_HOST"]); $_SERVER["HTTP_HOST"] = $arHost[0]; $hostname = $_SERVER["HTTP_HOST"]; function echoTextFile($file) { if (! file_exists($file)) return false; if (! is_readable($file)) return false; $timestamp = filemtime($file); $tsstring = gmdate("D, d M Y H:i:s ", $timestamp) . "GMT"; $etag = md5($file . $timestamp); header("Content-Type: application/xml"); header("Content-Length: ".filesize($file)); header("Last-Modified: $tsstring"); header("ETag: \"{$etag}\""); readfile($file); return true; } $sitemapHost = dirname(__FILE__) . "/regions/sitemap/sitemap_{$hostname}.xml"; $sitemapDefault = dirname(__FILE__) . "/sitemap.xml"; if(!echoTextFile($sitemapHost) && !echoTextFile($sitemapDefault)) { header("HTTP/1.0 404 Not Found"); }</pre></td></tr></table></div><p> </p> </div> <div class="product-item-detail-tab-content" data-entity="tab-container" data-value="support" itemprop="support"> <b>Просим ознакомиться с правилами поддержки!</b><br />____________________________________________________________<br /><br /><b>Режим работы</b>: 12:00 — 18:00 по московскому времени.<br />Время реакции на обращение – до 3 рабочих дней (стараемся отвечать быстро, в порядке живой очереди). <br />Выходные дни: суббота, воскресенье, праздники. <br /><br /><b>Если у вас возникла проблема или ошибка</b>, пришлите, пожалуйста, сразу же доступы на проект, которые попросит у вас система при создании обращения.<br />____________________________________________________________ <br /><br />Прежде, чем создать обращение, просим <a rel="noindex nofollow" href="https://marketplace.1c-bitrix.ru/solutions/webfly.seocities/#tab-install-link" target="_blank" >ознакомиться с инструкцией</a> по данному решению – мы старались и писали специально для вас <img src="/upload/main/smiles/3/bx_smile_smile.png" border="0" data-code=":)" data-definition="UHD" alt=":)" style="width:20px;height:20px;" title="С улыбкой" class="bx-smile" /><br /><br /><b>Платность:</b><br /><ul><li>Консультации - <b>бесплатно,</b><br /><li>Вопросы - <b>бесплатно,</b><br /><li>Исправление ошибок - <b>бесплатно,</b><br /><li>Работы на сайте - <b>по тарифу «Разовый»</b> <a rel="noindex nofollow" href="https://24.webfly.ru/tariffs/" target="_blank" >https://24.webfly.ru/tariffs/</a><br /></ul>Мы стараемся не брать доработки на сайтах, так как наши ресурсы направлены только на наши модули (в данном случае), но когда происходят исключения, мы просим оплату по норма-часам, которые будут затрачены на решение вашего вопроса (тариф "Разовый" <a rel="noindex nofollow" href="https://24.webfly.ru/tariffs/" target="_blank" >https://24.webfly.ru/tariffs/</a>)<br /><br />Эта цена справедлива и для установки модуля, <b>если мы правили код сайта. </b>Консультации и подсказки<b> бесплатны.<br /></b><br />Отправьте заявку в техподдержку вы можете через <a rel="noindex nofollow" href="https://24.webfly.ru/support/?show_wizard=Y" target="_blank" >систему тикетов</a>.<br /><br />Хорошего вам дня!<br /> </div> </div> </div> <meta itemprop="name" content="SEO: поддомены + управление метатегами и текстами" /> <meta itemprop="category" content="Маркетинг, реклама" /> <span itemprop="offers" itemscope itemtype="http://schema.org/Offer"> <meta itemprop="price" content="5500" /> <meta itemprop="priceCurrency" content="RUB" /> <link itemprop="availability" href="http://schema.org/InStock" /> </span> </div> <script> BX.message({ ECONOMY_INFO_MESSAGE: 'Скидка #ECONOMY#', TITLE_ERROR: 'Ошибка', TITLE_BASKET_PROPS: 'Свойства товара, добавляемые в корзину', BASKET_UNKNOWN_ERROR: 'Неизвестная ошибка при добавлении товара в корзину', BTN_SEND_PROPS: 'Выбрать', BTN_MESSAGE_DETAIL_BASKET_REDIRECT: 'Перейти в корзину', BTN_MESSAGE_CLOSE: 'Закрыть', BTN_MESSAGE_DETAIL_CLOSE_POPUP: 'Продолжить покупки', TITLE_SUCCESSFUL: 'Товар добавлен в корзину', COMPARE_MESSAGE_OK: 'Товар добавлен в список сравнения', COMPARE_UNKNOWN_ERROR: 'При добавлении товара в список сравнения произошла ошибка', COMPARE_TITLE: 'Сравнение товаров', BTN_MESSAGE_COMPARE_REDIRECT: 'Перейти в список сравнения', PRODUCT_GIFT_LABEL: 'Подарок', PRICE_TOTAL_PREFIX: 'на сумму', RELATIVE_QUANTITY_MANY: 'много', RELATIVE_QUANTITY_FEW: 'мало', SITE_ID: 's1' }); var obbx_117848907_60105 = new JCCatalogElement({'CONFIG':{'USE_CATALOG':true,'SHOW_QUANTITY':false,'SHOW_PRICE':true,'SHOW_DISCOUNT_PERCENT':false,'SHOW_OLD_PRICE':true,'USE_PRICE_COUNT':false,'DISPLAY_COMPARE':false,'MAIN_PICTURE_MODE':[],'ADD_TO_BASKET_ACTION':['BUY'],'SHOW_CLOSE_POPUP':false,'SHOW_MAX_QUANTITY':'N','RELATIVE_QUANTITY_FACTOR':'5','TEMPLATE_THEME':'blue','USE_STICKERS':true,'USE_SUBSCRIBE':false,'SHOW_SLIDER':'N','SLIDER_INTERVAL':'4000','ALT':'SEO: поддомены + управление метатегами и текстами','TITLE':'SEO: поддомены + управление метатегами и текстами','MAGNIFIER_ZOOM_PERCENT':'200','USE_ENHANCED_ECOMMERCE':'N','DATA_LAYER_NAME':'','BRAND_PROPERTY':''},'VISUAL':{'ID':'bx_117848907_60105','DISCOUNT_PERCENT_ID':'bx_117848907_60105_dsc_pict','STICKER_ID':'bx_117848907_60105_sticker','BIG_SLIDER_ID':'bx_117848907_60105_big_slider','BIG_IMG_CONT_ID':'bx_117848907_60105_bigimg_cont','SLIDER_CONT_ID':'bx_117848907_60105_slider_cont','OLD_PRICE_ID':'bx_117848907_60105_old_price','PRICE_ID':'bx_117848907_60105_price','DESCRIPTION_ID':'bx_117848907_60105_description','DISCOUNT_PRICE_ID':'bx_117848907_60105_price_discount','PRICE_TOTAL':'bx_117848907_60105_price_total','SLIDER_CONT_OF_ID':'bx_117848907_60105_slider_cont_','QUANTITY_ID':'bx_117848907_60105_quantity','QUANTITY_DOWN_ID':'bx_117848907_60105_quant_down','QUANTITY_UP_ID':'bx_117848907_60105_quant_up','QUANTITY_MEASURE':'bx_117848907_60105_quant_measure','QUANTITY_LIMIT':'bx_117848907_60105_quant_limit','BUY_LINK':'bx_117848907_60105_buy_link','ADD_BASKET_LINK':'bx_117848907_60105_add_basket_link','BASKET_ACTIONS_ID':'bx_117848907_60105_basket_actions','NOT_AVAILABLE_MESS':'bx_117848907_60105_not_avail','COMPARE_LINK':'bx_117848907_60105_compare_link','TREE_ID':'bx_117848907_60105_skudiv','DISPLAY_PROP_DIV':'bx_117848907_60105_sku_prop','DISPLAY_MAIN_PROP_DIV':'bx_117848907_60105_main_sku_prop','OFFER_GROUP':'bx_117848907_60105_set_group_','BASKET_PROP_DIV':'bx_117848907_60105_basket_prop','SUBSCRIBE_LINK':'bx_117848907_60105_subscribe','TABS_ID':'bx_117848907_60105_tabs','TAB_CONTAINERS_ID':'bx_117848907_60105_tab_containers','SMALL_CARD_PANEL_ID':'bx_117848907_60105_small_card_panel','TABS_PANEL_ID':'bx_117848907_60105_tabs_panel'},'PRODUCT_TYPE':'1','PRODUCT':{'ID':'60105','ACTIVE':'Y','PICT':{'ID':'0','SRC':'/local/templates/capybara4/components/bitrix/catalog/marketplace/bitrix/catalog.element/.default/images/no_photo.png','FILE_NAME':'no_photo.png','WIDTH':'150','HEIGHT':'150'},'NAME':'SEO: поддомены + управление метатегами и текстами','SUBSCRIPTION':true,'ITEM_PRICE_MODE':'S','ITEM_PRICES':[{'UNROUND_BASE_PRICE':'5500','UNROUND_PRICE':'5500','BASE_PRICE':'5500','PRICE':'5500','ID':'2061','PRICE_TYPE_ID':'1','CURRENCY':'RUB','DISCOUNT':'0','PERCENT':'0','QUANTITY_FROM':'','QUANTITY_TO':'','QUANTITY_HASH':'ZERO-INF','MEASURE_RATIO_ID':'','PRINT_BASE_PRICE':'5 500 руб.','RATIO_BASE_PRICE':'5500','PRINT_RATIO_BASE_PRICE':'5 500 руб.','PRINT_PRICE':'5 500 руб.','RATIO_PRICE':'5500','PRINT_RATIO_PRICE':'5 500 руб.','PRINT_DISCOUNT':'0 руб.','RATIO_DISCOUNT':'0','PRINT_RATIO_DISCOUNT':'0 руб.','MIN_QUANTITY':'1'}],'ITEM_PRICE_SELECTED':'0','ITEM_QUANTITY_RANGES':{'ZERO-INF':{'HASH':'ZERO-INF','QUANTITY_FROM':'','QUANTITY_TO':'','SORT_FROM':'0','SORT_TO':'INF'}},'ITEM_QUANTITY_RANGE_SELECTED':'ZERO-INF','ITEM_MEASURE_RATIOS':[{'ID':'0','RATIO':'1','IS_DEFAULT':'Y'}],'ITEM_MEASURE_RATIO_SELECTED':'0','SLIDER_COUNT':'1','SLIDER':[{'ID':'0','SRC':'/local/templates/capybara4/components/bitrix/catalog/marketplace/bitrix/catalog.element/.default/images/no_photo.png','FILE_NAME':'no_photo.png','WIDTH':'150','HEIGHT':'150'}],'CAN_BUY':true,'CHECK_QUANTITY':false,'QUANTITY_FLOAT':false,'MAX_QUANTITY':'0','STEP_QUANTITY':'1','CATEGORY':'Маркетинг, реклама'},'BASKET':{'ADD_PROPS':false,'QUANTITY':'quantity','PROPS':'prop','EMPTY_PROPS':true,'BASKET_URL':'/personal/basket.php','ADD_URL_TEMPLATE':'/marketplace/webfly.seocities/?action=ADD2BASKET&id=#ID#','BUY_URL_TEMPLATE':'/marketplace/webfly.seocities/?action=BUY&id=#ID#'},'IS_FACEBOOK_CONVERSION_CUSTOMIZE_PRODUCT_EVENT_ENABLED':false}); </script> <script> document.addEventListener("DOMContentLoaded", function() { // слайдеры проектов let sliderSolution, sliderSolutionThumb; const sliderSolutionDetail = document.querySelector("[data-slider='slider-solution-detail']"); if (sliderSolutionDetail) { sliderSolution = tns({ container: document.querySelector("[data-slider='slider-solution-detail']"), items: 1, loop: !1, // edgePadding: 27, gutter: 12, slideBy: 'page', controls: !1, nav: !0, mouseDrag: !0, autoplay: !1, speed: 300, autoplayButtonOutput: !1, // navContainer: "#customize-thumbnails", // navAsThumbnails: true, responsive: { // 576: { // items: 2 // }, 768: { nav: !1, mouseDrag: !1, }, 1400: {} } }); } const sliderSolutionDetailThumbLeft = document.getElementById("customize-thumbnails-1"); const sliderSolutionDetailThumbBottom = document.getElementById("customize-thumbnails-2"); let axis, thumbParams; thumbParams = { items: 4, loop: !1, // edgePadding: 40, gutter: 10, slideBy: 1, // center: !0, controls: !1, nav: !1, mouseDrag: !0, autoplay: !1, speed: 300, autoplayButtonOutput: !1, controlsText: [ `<svg width="14" height="24" viewBox="0 0 14 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M14 1.6077L3.4343 12L14 22.3923L12.3683 24L0.200001 11.994L12.3683 -1.42648e-07L14 1.6077Z" fill="white"/> </svg> `, `<svg width="14" height="24" viewBox="0 0 14 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M0 22.3923L10.5657 12L0 1.6077L1.6317 0L13.8 12.006L1.6317 24L0 22.3923Z" fill="white"/> </svg>` ], responsive: { // 576: { // items: 2 // }, 768: { controls: !0, }, 992: { items: 4, }, 1400: { items: 5, }, 1800: { items: 6, autoplay: !0, } } }; thumbParams.axis = "vertical"; thumbParams.container = document.getElementById("customize-thumbnails-1"); sliderSolutionThumbLeft = tns(thumbParams); thumbParams.controls = !0; thumbParams.axis = "horizontal"; thumbParams.items = 3; thumbParams.responsive = { 1100: { items: 4, }, }; thumbParams.container = document.getElementById("customize-thumbnails-2"); sliderSolutionThumbBottom = tns(thumbParams); if (sliderSolution && sliderSolutionThumbLeft && sliderSolutionThumbBottom) { sliderSolutionThumbLeft.events.on("indexChanged", function(info, eventName) { if (sliderSolution.getInfo().displayIndex - 1 != info.displayIndex) { sliderSolution.goTo(info.displayIndex - 1); } }); sliderSolutionThumbBottom.events.on("indexChanged", function(info, eventName) { if (sliderSolution.getInfo().displayIndex - 1 != info.displayIndex) { sliderSolution.goTo(info.displayIndex - 1); } }); const thumbs1 = document.getElementById("customize-thumbnails-1"); thumbs1.addEventListener("click", function(e) { let imgSrc = e.target.getAttribute("src"); let slides = thumbs1.querySelectorAll("[src='" + imgSrc + "']"); slides.forEach(function(v) { if (v.parentNode.hasAttribute("id") && v.parentNode.getAttribute("id").length > 0) { let slideIndex = v.parentNode.getAttribute("id").replace(/customize-thumbnails-1-item/, ''); sliderSolution.goTo(slideIndex); v.parentNode.classList.add(); } }); }); const thumbs2 = document.getElementById("customize-thumbnails-2"); thumbs2.addEventListener("click", function(e) { let imgSrc = e.target.getAttribute("src"); let slides = thumbs2.querySelectorAll("[src='" + imgSrc + "']"); slides.forEach(function(v) { if (v.parentNode.hasAttribute("id") && v.parentNode.getAttribute("id").length > 0) { let slideIndex = v.parentNode.getAttribute("id").replace(/customize-thumbnails-2-item/, ''); sliderSolution.goTo(slideIndex); v.parentNode.classList.add(); } }); }); } }); </script> </article> <script src="/local/templates/capybara4/assets/vendor/lightgallery/lightgallery.min.js"></script> <script src="/local/templates/capybara4/assets/vendor/lightgallery/plugins/thumbnail/lg-thumbnail.min.js"></script> <script src="/local/templates/capybara4/assets/vendor/lightgallery/plugins/zoom/lg-zoom.min.js"></script> <script> BX.ready(function() { const plugin = new lightGallery(document.querySelector('[data-slider="slider-solution-detail"]'), { plugins: [lgThumbnail, lgZoom], speed: 500, // selector: ".lg-item", // exThumbImage: 'data-thumb', thumbnail: 1, zoom: 1, mediumZoom: 1 }); plugin.refresh(); }); </script> <script> BX.Currency.setCurrencies([{'CURRENCY':'BYN','FORMAT':{'FORMAT_STRING':'# руб.','DEC_POINT':'.','THOUSANDS_SEP':' ','DECIMALS':2,'THOUSANDS_VARIANT':'B','HIDE_ZERO':'Y'}},{'CURRENCY':'EUR','FORMAT':{'FORMAT_STRING':'# €','DEC_POINT':'.','THOUSANDS_SEP':' ','DECIMALS':2,'THOUSANDS_VARIANT':'B','HIDE_ZERO':'Y'}},{'CURRENCY':'RUB','FORMAT':{'FORMAT_STRING':'# руб.','DEC_POINT':'.','THOUSANDS_SEP':' ','DECIMALS':2,'THOUSANDS_VARIANT':'B','HIDE_ZERO':'Y'}},{'CURRENCY':'UAH','FORMAT':{'FORMAT_STRING':'# грн.','DEC_POINT':'.','THOUSANDS_SEP':' ','DECIMALS':2,'THOUSANDS_VARIANT':'B','HIDE_ZERO':'Y'}},{'CURRENCY':'USD','FORMAT':{'FORMAT_STRING':'$#','DEC_POINT':'.','THOUSANDS_SEP':',','DECIMALS':2,'THOUSANDS_VARIANT':'C','HIDE_ZERO':'Y'}}]); </script> <script> BX.ready(BX.defer(function(){ if (!!window.obbx_117848907_60105) { window.obbx_117848907_60105.allowViewedCount(true); } })); </script> </div> <script src="/local/templates/capybara4/vendor/nice-select2/js/nice-select2.js"></script> <script> // nice select if (document.querySelectorAll("[data-select]")) { document.querySelectorAll("[data-select]").forEach(function(v) { if (v.nextElementSibling && v.nextElementSibling.classList.contains("nice-select")) {} else { let options = {}; if (v.getAttribute("data-select-placeholder")) { options.placeholder = v.getAttribute("data-select-placeholder"); } v.classList.add("wide"); NiceSelect.bind(v, options); } }); } </script> </main> <footer class="site-footer"> <div class="box"> <div class="text-gradient-wrap"> <!-- <img src="{{base}}/assets/img/CAPYBARA DIGITAL.svg" alt=""> --> <p data-aos="fade-down" class="site-footer__text-gradient text-gradient">Capybara<br> Digital</p> </div> </div> <nav class="site-footer__nav box-md"> <ul class="menu-footer"> <li class="menu-footer__item menu-footer__f-contacts"><span>Контакты</span> <div class="box box-md-none"> <ul class="f-contacts"> <li class="f-contacts__item f-contacts__item-tel"> <a href="tel:78462150447">+7 846 215-04-47</a> <a href="tel:79171128282">+7 917 112-82-82</a> </li> <li class="f-contacts__item f-contacts__item-address"> <a href="mailto:support@capyba.ru">support@capyba.ru</a> <span class="f-contacts__address"> г. Самара, ул. Стара-Загора, 27,<br>ОЦ "Информатика", 8 эт., оф. 801 </span> </li> <li class="f-contacts__item"> <a class="link-svg" href="https://vk.com/capybara_digital" target="_blank" title="Веб-студия «CAPYBARA digital»"> <svg width="115" height="20" viewBox="0 0 115 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M34.5479 12.4078C34.5479 13.9261 33.1431 15.0256 31.1659 15.0256H26.5352V5.60156H31.0098C32.9349 5.60156 34.2877 6.64869 34.2877 8.11465C34.2877 9.1094 33.7675 9.73769 32.987 10.1042C33.8195 10.4183 34.5479 11.256 34.5479 12.4078ZM28.5643 7.32931V9.37119H30.9578C31.6862 9.37119 32.1545 8.95235 32.1545 8.37644C32.1545 7.80052 31.6342 7.32931 30.9578 7.32931H28.5643ZM31.1659 13.2979C31.9464 13.2979 32.5187 12.8267 32.5187 12.1461C32.5187 11.4654 31.9984 10.9942 31.1659 10.9942H28.5643V13.2979H31.1659Z" fill="white" /> <path d="M42.1984 14.9733L38.9727 11.256H38.4523V14.9733H36.3711V5.60156H38.4523V9.2141H38.9727L42.0945 5.60156H44.54L40.6376 10.1042L44.904 14.9733H42.1984Z" fill="white" /> <path d="M44.9023 10.3144C44.9023 7.48719 46.9839 5.44531 49.8974 5.44531C52.8112 5.44531 54.8924 7.48719 54.8924 10.3144C54.8924 13.1416 52.8112 15.1835 49.8974 15.1835C46.9839 15.1835 44.9023 13.1416 44.9023 10.3144ZM52.7073 10.3144C52.7073 8.53431 51.5624 7.33015 49.8974 7.33015C48.2324 7.33015 47.0879 8.53431 47.0879 10.3144C47.0879 12.0945 48.2324 13.2987 49.8974 13.2987C51.5624 13.2987 52.7073 12.0945 52.7073 10.3144Z" fill="white" /> <path d="M62.8528 5.60156H64.9344V14.9733H62.8528V11.2036H58.6905V14.9733H56.6094V5.60156H58.6905V9.31881H62.8528V5.60156Z" fill="white" /> <path d="M69.4097 14.9733V7.48635H66.1836V5.60156H74.6648V7.48635H71.4387V14.9733H69.4097Z" fill="white" /> <path d="M83.6129 9.73852V14.9741H82.104L81.6878 13.5081C81.2195 14.2935 80.2311 15.1835 78.7222 15.1835C76.8489 15.1835 75.4961 13.927 75.4961 12.1992C75.4961 10.4715 76.8489 9.26731 79.6067 9.26731H81.6356C81.5317 8.0631 80.9073 7.22544 79.7628 7.22544C78.8261 7.22544 78.2017 7.74898 77.8895 8.3249L76.0166 8.01077C76.4849 6.38773 78.0977 5.44531 79.8667 5.44531C82.1561 5.44531 83.6129 7.01598 83.6129 9.73852ZM81.5839 10.8904H79.6588C78.0977 10.8904 77.5773 11.4139 77.5773 12.0945C77.5773 12.8799 78.2017 13.4034 79.2423 13.4034C80.5951 13.4034 81.5839 12.4087 81.5839 10.8904Z" fill="white" /> <path d="M91.6262 14.9733L88.4005 11.256H87.88V14.9733H85.7988V5.60156H87.88V9.2141H88.4005L91.5222 5.60156H93.9678L90.0655 10.1042L94.3318 14.9733H91.6262Z" fill="white" /> <path d="M98.0772 14.9733V7.48635H94.8516V5.60156H103.333V7.48635H100.107V14.9733H98.0772Z" fill="white" /> <path d="M113.738 10.8904H106.246C106.454 12.3563 107.494 13.2987 109.055 13.2987C110.148 13.2987 110.981 12.8275 111.449 12.1469L113.374 12.461C112.697 14.2411 110.876 15.1835 108.899 15.1835C106.09 15.1835 104.061 13.1416 104.061 10.3144C104.061 7.48719 106.09 5.44531 108.899 5.44531C111.709 5.44531 113.738 7.48719 113.738 10.2097C113.79 10.4715 113.738 10.6809 113.738 10.8904ZM106.402 9.26731H111.553C111.189 8.11548 110.252 7.27777 108.951 7.27777C107.702 7.22544 106.714 8.0631 106.402 9.26731Z" fill="white" /> <path d="M0 9.6C0 5.0745 0 2.81177 1.39716 1.40589C2.79431 0 5.04298 0 9.54037 0H10.3354C14.8328 0 17.0814 0 18.4786 1.40589C19.8758 2.81177 19.8758 5.0745 19.8758 9.6V10.4C19.8758 14.9255 19.8758 17.1882 18.4786 18.5941C17.0814 20 14.8328 20 10.3354 20H9.54037C5.04298 20 2.79431 20 1.39716 18.5941C0 17.1882 0 14.9255 0 10.4V9.6Z" fill="black" /> <path d="M10.577 14.407C6.04694 14.407 3.46313 11.282 3.35547 6.08203H5.62462C5.69915 9.8987 7.37199 11.5154 8.69704 11.8487V6.08203H10.8338V9.3737C12.1423 9.23203 13.5168 7.73203 13.9806 6.08203H16.1173C15.7612 8.11536 14.2705 9.61537 13.2105 10.232C14.2705 10.732 15.9683 12.0404 16.6143 14.407H14.2622C13.757 12.8237 12.4984 11.5987 10.8338 11.432V14.407H10.577Z" fill="white" /> </svg> </a> </li> </ul> </div> </li> <li class="menu-footer__item" onclick="this.classList.toggle('active');"><span>Компания</span> <ul class="menu-footer__submenu"> <li class="menu-footer__submenu-item"><a href="/about/">О нас</a></li> <li class="menu-footer__submenu-item"><a href="/portfolio/">Портфолио</a></li> <li class="menu-footer__submenu-item"><a href="/reviews/">Отзывы</a></li> <li class="menu-footer__submenu-item"><a href="/about/certificates/">Сертификаты</a></li> <li class="menu-footer__submenu-item"><a href="/blog/">Статьи</a></li> <li class="menu-footer__submenu-item"><a href="/marketplace/" class="selected">Маркетплейс</a></li> <li class="menu-footer__submenu-item"><a href="/contacts/">Контакты</a></li> </ul> </li> <li class="menu-footer__item menu-footer__item-rel" onclick="this.classList.toggle('active');"><span>Услуги</span> <ul class="menu-footer__submenu"> <li class="menu-footer__submenu-item"><a href="/services/tekhnicheskaya-podderzhka/">Техническая поддержка</a></li> <li class="menu-footer__submenu-item"><a href="/services/sozdanie-sajtov/">Разработка сайтов</a></li> <li class="menu-footer__submenu-item"><a href="/services/kupit-licenziyu-bitriks/">Лицензии Битрикс</a></li> <li class="menu-footer__submenu-item"><a href="/services/poisk-i-udalenie-virusov/">Удаление вирусов</a></li> <li class="menu-footer__submenu-item"><a href="/services/vosstanovlenie-sajtov/">Восстановление сайтов</a></li> <li class="menu-footer__submenu-item"><a href="/services/perenos-sayta/">Перенос сайта на Битрикс</a></li> <li class="menu-footer__submenu-item"><a href="/services/">Все услуги</a></li> </ul> </li> <li class="menu-footer__item" onclick="this.classList.toggle('active');"><span>Сервисы</span> <ul class="menu-footer__submenu"> <li class="menu-footer__submenu-item"><a href="/tools/fontfinder/">Определение шрифтов</a></li> <li class="menu-footer__submenu-item"><a href="/tools/">Инструменты специалистам</a></li> <li class="menu-footer__submenu-item"><a href="/services/bonuses/">Бонусы всем</a></li> </ul> </li> </ul> </nav> <div class="box"> <div class="site-footer__copyright copyright"> <div class="copyright__desc"> <div class="copyright__copy"> <p>© CAPYBARA digital, 2015—2025</p> <p>Информация, размещенная на сайте, не является публичной офертой</p> </div> <p class="copyright__policy"> <a href="/policy/">Политика конфиденциальности</a> </p> </div> <div class="copyright__btn"> <button class="btn-svg btn-svg--gray" onclick="toTop(event);"> <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M12 6.10042L6.00002 0C4.49931 1.53013 1.50074 4.57025 0 6.10042L0.744976 6.87029C2.09464 5.49384 3.89304 3.6732 5.47045 2.0669L5.4704 12L6.52974 12L6.52976 2.06688L11.247 6.87029L12 6.10042Z" fill="#FFEDED" /> </svg> </button> </div> </div> </div> </footer> <div id="overlay"></div> <script src="/local/templates/capybara4/assets/vendor/aos/aos.js"></script> <script async src="/local/templates/capybara4/assets/vendor/notify/vanilla-notify.js"></script> <script defer src="/local/templates/capybara4/assets/vendor/tiny-slider/min/tiny-slider.js"></script> <script defer src="/local/templates/capybara4/assets/vendor/inputmask/inputmask.min.js"></script> <script defer src="/local/templates/capybara4/assets/vendor/inputmask/bindings/inputmask.binding.js"></script> <script defer src="/local/templates/capybara4/assets/vendor/swiped-events/swiped-events.min.js"></script> <!-- <script defer src="https://unpkg.com/@popperjs/core@2"></script> --> <!-- <script defer src="https://unpkg.com/tippy.js@6"></script> --> <script defer src="/local/templates/capybara4/assets/vendor/tippyjs/popper.min.js"></script> <script defer src="/local/templates/capybara4/assets/vendor/tippyjs/tippy-bundle.umd.min.js"></script> <script defer src="/local/templates/capybara4/assets/js/app.js"></script> <!-- <script data-skip-moving="true"> (function(w,d,u){ var s=d.createElement('script');s.async=1;s.src=u+'?'+(Date.now()/60000|0); var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h); })(window,document,'https://cdn.bitrix24.ru/b5688081/crm/site_button/loader_2_elamd2.js'); </script> --> <script> document.addEventListener("DOMContentLoaded", function() { function getCookie(name) { let matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } function setCookie(name, value, options = {}) { options = { path: '/', // при необходимости добавьте другие значения по умолчанию ...options }; if (options.expires instanceof Date) { options.expires = options.expires.toUTCString(); } let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value); for (let optionKey in options) { updatedCookie += "; " + optionKey; let optionValue = options[optionKey]; if (optionValue !== true) { updatedCookie += "=" + optionValue; } } document.cookie = updatedCookie; } async function sendCookie(data) { BX.ajax({ url: '/local/ajax/cookie.php', data: data, method: 'POST', dataType: 'html', processData: false, preparePost: false, // предобработка передаваемых данных для FormData onsuccess: function(res) { //в случаи успеха, выполняем действия if (res) { let processed = BX.processHTML(res, false); BX.ajax.processScripts(processed.SCRIPT); // document.querySelector("body").innerHTML = document.querySelector("body").innerHTML + processed.HTML; } }, onfailure: function() { //действия в случаи ошибки } }); } function getFormData(cont) { const formData = new FormData(); const arInput = cont.querySelectorAll("input"); arInput.forEach(function(v) { if (v.checked) { formData.append(v.name, v.value); } }); return formData; } window.cookieSet = false; window.cookiePopup = BX.PopupWindowManager.create('cookie-modal', window.body, { content: BX.create("DIV", { props: { className: "modal-content modal-content--bg-yellow", }, children: [ BX.create("SPAN", { props: { className: "popup-window-close-icon visually-hidden", id: "cookie-modal-settings-close" }, events: { click: function () { BX("cookie-modal-base").classList.remove("visually-hidden"); BX("cookie-modal-settings").classList.add("visually-hidden"); BX("cs").classList.remove("visually-hidden"); BX("ca").textContent = "Принять все cookie"; this.classList.add("visually-hidden"); } } }), BX.create("DIV", { props: { id: "cookie-modal-base" } }), BX.create("DIV", { props: { className: "visually-hidden", id: "cookie-modal-settings" } }), ] }), autoHide: false, // lightShadow: true, closeIcon: false, closeByEsc: false, // overlay: { // backgroundColor: '#000', // opacity: 80 // }, events: { onPopupDragEnd: function() { if (!getCookie("BITRIX_SM_selectedCookieGroups")) { return; } }, onPopupShow: function() { // document.querySelector("html").classList.add("stop-scroll"); }, onPopupClose: function(e) { console.log(window.cookieSet); if (!window.cookieSet) { e.destroyed = true; // запретить закрытие return; } // document.querySelector("html").classList.remove("stop-scroll"); } }, buttons: [ new BX.PopupWindowButton({ text: "Принять все cookie", id: "ca", className: "btn btn--black", events: { click: function() { let data = getFormData(BX("popup-window-content-cookie-modal")); window.cookieSet = true; sendCookie(data); this.popupWindow.close(); } } }), new BX.PopupWindowButton({ text: "Настроить", id: "cs", className: "btn btn--black", events: { click: function() { BX("cookie-modal-base").classList.add("visually-hidden"); BX("cookie-modal-settings").classList.remove("visually-hidden"); BX("cs").classList.add("visually-hidden"); BX("ca").textContent = "Сохранить"; BX("cookie-modal-settings-close").classList.remove("visually-hidden"); } } }) ], }); if (!getCookie("BITRIX_SM_selectedCookieGroups")) { BX.ajax.get("/local/ajax/cookie-content-settings.php", function(data) { BX("cookie-modal-settings").innerHTML = data; }); BX.ajax.get("/local/ajax/cookie-content.php", function(data) { BX("cookie-modal-base").innerHTML = data; window.cookiePopup.show(); }); } }); </script></body> </html>