Как изменить название вкладки в Flask приложении

Flask название вкладки как сделать

Содержание статьи

Flask название вкладки как сделать

Название вкладки в браузере формируется через тег <title> в HTML-шаблоне. В Flask это реализуется с помощью шаблонизатора Jinja2, который позволяет подставлять значения из переменных Python напрямую в заголовок страницы. Такой подход упрощает поддержку нескольких страниц с уникальными заголовками без дублирования кода.

Для статических страниц достаточно указать заголовок в шаблоне, например: <title>Главная страница</title>. Для динамических маршрутов рекомендуется передавать название через контекст функции Flask с использованием render_template. Это позволяет менять заголовок в зависимости от URL, параметров запроса или данных из базы.

Наследование шаблонов упрощает поддержку единого формата заголовков для всех страниц. Используя базовый шаблон с блоком title, можно задавать общие элементы страницы и изменять только конкретное значение заголовка в дочернем шаблоне. Такой подход снижает риск ошибок при обновлении дизайна и структуры сайта.

Для интерактивных страниц или одностраничных приложений можно обновлять название вкладки через JavaScript. С помощью метода document.title заголовок меняется без перезагрузки страницы, что удобно для страниц с динамически подгружаемым контентом или при использовании AJAX-запросов.

Добавление тега <title> в шаблон Jinja2

Добавление тега <title> в шаблон Jinja2

В шаблоне Jinja2 заголовок страницы задается через тег <title> внутри блока <head>. Например, в базовом шаблоне можно прописать: <title>Главная</title>. Этот текст будет отображаться во вкладке браузера при открытии страницы.

Для динамического изменения заголовка стоит использовать переменные Jinja2. В шаблоне это выглядит так: <title>{{ page_title }}</title>. Значение page_title передается через функцию Flask render_template, что позволяет задавать уникальный заголовок для каждой страницы.

Если проект использует несколько шаблонов, рекомендуется вынести тег <title> в базовый шаблон и создать блок {% block title %}{% endblock %}. В дочерних шаблонах достаточно переопределить этот блок: {% block title %}О продукте{% endblock %}. Такой подход упрощает поддержку и изменение заголовков без дублирования кода.

Динамическое изменение заголовка через переменные Flask

Для изменения названия вкладки на разных страницах Flask передает значение заголовка через переменные в функцию render_template. Например, return render_template(‘page.html’, page_title=’Контакты’) подставляет текст «Контакты» в шаблон Jinja2.

В шаблоне тег <title> связывается с переменной: <title>{{ page_title }}</title>. Такой подход позволяет задавать уникальный заголовок для каждой функции маршрута без изменения HTML-файлов вручную.

При использовании циклов или генерации страниц на основе данных из базы можно формировать заголовок динамически, объединяя строки и значения. Например: page_title = f»Статья: {article.title}». Это обеспечивает автоматическое обновление заголовка при добавлении новых записей.

Для поддержки нескольких языков или версий сайта переменные можно хранить в словаре с ключами страниц и локализаций, передавая нужное значение в шаблон. Такой метод упрощает масштабирование проекта и управление заголовками на больших сайтах.

Использование контекста запроса для разных страниц

Flask позволяет определять заголовок вкладки в зависимости от текущего маршрута и параметров запроса. Контекст запроса содержит информацию о URL, аргументах и методе запроса, что позволяет формировать уникальные заголовки для каждой страницы.

Примеры использования контекста запроса для динамического заголовка:

  • Получение пути маршрута: request.path позволяет определять текущую страницу и задавать соответствующий заголовок.
  • Использование GET-параметров: request.args.get(‘category’) позволяет включать в заголовок название категории или фильтра.
  • Формирование заголовка на основе метода запроса: request.method помогает отображать разные заголовки для GET и POST страниц.

Пример реализации в функции маршрута:

  1. Импортировать контекст запроса: from flask import request
  2. Определить заголовок: page_title = f»Категория: {request.args.get(‘category’, ‘Все’)}»
  3. Передать значение в шаблон: return render_template(‘page.html’, page_title=page_title)

Такой подход позволяет управлять заголовками без изменения HTML, адаптируя их под параметры пользователя и текущий маршрут.

Подключение базового шаблона с наследованием заголовка

Базовый шаблон Flask позволяет централизованно управлять структурой страниц и заголовками вкладок. В нем задается общий HTML-каркас и блок для заголовка: {% block title %}Главная{% endblock %}.

Дочерние шаблоны подключают базовый с помощью директивы {% extends ‘base.html’ %} и переопределяют блок title, например: {% block title %}О компании{% endblock %}. Это автоматически изменяет заголовок вкладки при рендеринге страницы.

Преимущество такого подхода:

  • Единое место для редактирования общих элементов <head>, включая метатеги и стили.
  • Отсутствие дублирования кода для каждого шаблона.
  • Простая интеграция динамических переменных через render_template, например: {% block title %}{{ page_title }}{% endblock %}.

Такое наследование облегчает поддержку сайта при добавлении новых страниц или изменении структуры заголовков, позволяя быстро обновлять все страницы через базовый шаблон.

Изменение названия вкладки для маршрутов с параметрами

Изменение названия вкладки для маршрутов с параметрами

Маршруты Flask с параметрами позволяют отображать одинаковый шаблон для разных данных, например: /product/<int:id>. Для каждого параметра заголовок вкладки можно формировать индивидуально.

В функции маршрута рекомендуется получать параметр и использовать его для создания заголовка:

product = get_product(id)

page_title = f»Продукт: {product.name}»

return render_template(‘product.html’, page_title=page_title)

В шаблоне Jinja2 переменная page_title подставляется в тег <title>: <title>{{ page_title }}</title>. Такой метод гарантирует, что каждая страница с уникальным ID будет иметь соответствующий заголовок вкладки.

Для маршрутов с несколькими параметрами заголовок можно составлять из нескольких значений, объединяя их в строку: page_title = f»{category.name} – {product.name}». Это обеспечивает точную идентификацию страницы для пользователя и поисковых систем.

Обновление заголовка через JavaScript в Flask

Обновление заголовка через JavaScript в Flask

Для страниц с динамическим контентом можно изменять заголовок вкладки без перезагрузки через JavaScript. Используется свойство document.title, которое заменяет текст внутри тега <title>.

Пример использования в шаблоне Flask:

<script>

document.title = «{{ page_title }}»;

</script>

Такой метод особенно полезен при загрузке данных через AJAX или обновлении содержимого на одной странице. Например, при подгрузке комментариев к статье заголовок можно дополнять количеством новых сообщений: document.title = `Статья: {{ article.title }} (${newComments})`.

Для взаимодействия с динамическими элементами страницы можно использовать события DOM. Например, при переключении вкладок внутри SPA можно обновлять заголовок в обработчике события click или change, гарантируя актуальное отображение информации во вкладке браузера.

Отладка и проверка отображения названия вкладки

Отладка и проверка отображения названия вкладки

Для проверки корректного отображения заголовка вкладки важно учитывать как статические, так и динамические значения. Использование инструментов разработчика браузера позволяет быстро определить текущее содержимое тега <title>.

Пример последовательности проверки:

Шаг Действие Цель
1 Открыть страницу в браузере и перейти в DevTools (F12) Проверка текущего заголовка вкладки
2 Перейти во вкладку «Elements» и найти тег <title> Убедиться, что значение соответствует ожидаемому
3 Обновить страницу с разными параметрами маршрута Проверка динамических заголовков через Flask переменные
4 Использовать консоль для проверки JavaScript-обновлений: document.title Подтверждение корректного изменения заголовка без перезагрузки

При обнаружении несоответствий рекомендуется проверить:

  • Передается ли переменная page_title в шаблон.
  • Корректно ли переопределяется блок title в дочерних шаблонах.
  • Нет ли конфликтов с JavaScript, который изменяет document.title после рендеринга.

Вопрос-ответ:

Как задать уникальное название вкладки для каждой страницы в Flask?

Для каждой страницы можно использовать переменные, передаваемые в шаблон через функцию render_template. В шаблоне Jinja2 тег </em> связывается с переменной: <em><title>{{ page_title }}. В функции маршрута достаточно определить значение переменной, например: page_title = «Главная» или сформировать динамически на основе данных из базы.

Можно ли менять заголовок вкладки без перезагрузки страницы?

Да, для этого используется JavaScript. Свойство document.title позволяет изменить текст в </em> на лету. Например, при подгрузке новых данных через AJAX можно написать: <em>document.title = Статья: ${newTitle}</em>, чтобы отображать актуальную информацию во вкладке без обновления страницы.</p> <h4>Как реализовать наследование заголовков через базовый шаблон?</h4> <p>В базовом шаблоне задается блок <em>{% block title %}Главная{% endblock %}</em>. Дочерние шаблоны подключают его с помощью <strong>{% extends ‘base.html’ %}</strong> и переопределяют блок <em>title</em> с нужным текстом: <em>{% block title %}О продукте{% endblock %}</em>. Такой подход упрощает управление заголовками и предотвращает дублирование HTML-кода.</p> <h4>Как формировать заголовок для маршрутов с параметрами?</h4> <p>Для маршрутов типа <em>/product/<int:id></em> в функции маршрута можно получить параметр и использовать его для создания заголовка: <em>product = get_product(id); page_title = f»Продукт: {product.name}»</em>. После этого передать значение в шаблон через <strong>render_template</strong>. В шаблоне переменная подставляется в тег <em><title></em>, обеспечивая уникальный заголовок для каждой страницы с конкретным параметром.</p> </div> </article> <div class="post-meta"> <div class="post-rating"> <div class="post-rating__title">Оценка статьи:</div> <div id="post-ratings-18830" class="post-ratings" data-nonce="f69ce636f6"><img id="rating_18830_1" src="https://qubstore.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="1 звезда" title="1 звезда" onmouseover="current_rating(18830, 1, '1 звезда');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_18830_2" src="https://qubstore.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="2 звезды" title="2 звезды" onmouseover="current_rating(18830, 2, '2 звезды');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_18830_3" src="https://qubstore.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="3 звезды" title="3 звезды" onmouseover="current_rating(18830, 3, '3 звезды');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_18830_4" src="https://qubstore.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="4 звезды" title="4 звезды" onmouseover="current_rating(18830, 4, '4 звезды');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /><img id="rating_18830_5" src="https://qubstore.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="5 звезд" title="5 звезд" onmouseover="current_rating(18830, 5, '5 звезд');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" /> (пока оценок нет)<br /><span class="post-ratings-text" id="ratings_18830_text"></span></div><div id="post-ratings-18830-loading" class="post-ratings-loading"><img src="https://qubstore.ru/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" /> Загрузка...</div> </div> <div class="post-share"> <div class="post-share__title">Поделиться с друзьями:</div> <div class="likely"> <div class="twitter">Твитнуть</div> <div class="facebook">Поделиться</div> <div class="vkontakte">Поделиться</div> <div class="telegram">Отправить</div> <div class="odnoklassniki">Класснуть</div> </div> </div> </div> <meta itemprop="headline" content="Как изменить название вкладки в Flask приложении"> <meta itemprop="author" content="admin"> <meta itemprop="datePublished" content="2025-11-28"> <meta itemprop="dateModified" content="2025-11-28"> <a itemprop="url" href="https://qubstore.ru/tehnika/41/flask-nazvanie-vkladki-kak-sdelat" style="display:none">Flask название вкладки как сделать</a> <a itemprop="mainEntityOfPage" href="https://qubstore.ru/tehnika/41/flask-nazvanie-vkladki-kak-sdelat" style="display:none">Ссылка на основную публикацию</a> <div style="display: none;" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"> <img itemprop="url" src="https://qubstore.ru/wp-content/cache/thumb/7c/6ae1d47f80bc77c_320x200.jpg" alt="Flask название вкладки как сделать"> <meta itemprop="width" content="320"> <meta itemprop="height" content="200"> </div> <div style="display: none;" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <meta itemprop="name" content="QubStore"> <div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"> <img itemprop="url" src="https://qubstore.ru/wp-content/uploads/2025/10/Programmy.jpg" alt="QubStore"> </div> </div> </div><!-- .article-wrap --> <div class='yarpp yarpp-related yarpp-related-website yarpp-template-yarpp-template-related'> <div class="title">Похожие публикации</div> <ul class="related"> <li class="related__item"> <div class="related__item-img"> <img src="https://qubstore.ru/wp-content/cache/thumb/43/a1b28e67a645e43_150x95.jpg" width="150" height="95" alt="Oracle jre usage что это за папка" /> </div> <a href="https://qubstore.ru/tehnika/41/oracle-jre-usage-chto-eto-za-papka">Oracle jre usage что это за папка</a> </li> <li class="related__item"> <div class="related__item-img"> <img src="https://qubstore.ru/wp-content/cache/thumb/a7/8dac64c956dcaa7_150x95.jpg" width="150" height="95" alt="Как запустить скрипт на виндовс" /> </div> <a href="https://qubstore.ru/tehnika/41/kak-zapustit-skript-na-vindovs">Как запустить скрипт на виндовс</a> </li> <li class="related__item"> <div class="related__item-img"> <img src="https://qubstore.ru/wp-content/cache/thumb/a8/125a39f77b6cba8_150x95.jpg" width="150" height="95" alt="Как получить позицию объекта unity" /> </div> <a href="https://qubstore.ru/tehnika/41/kak-poluchit-pozitsiyu-obekta-unity">Как получить позицию объекта unity</a> </li> <li class="related__item"> <div class="related__item-img"> <img src="https://qubstore.ru/wp-content/cache/thumb/dc/a18afa6072553dc_150x95.jpg" width="150" height="95" alt="Интернет соединение какие бывают" /> </div> <a href="https://qubstore.ru/tehnika/41/internet-soedinenie-kakie-bivayut">Интернет соединение какие бывают</a> </li> </ul> </div> <aside class="comments-block"> <div id="respond" class="respond"> <div class="respond__title">Добавить комментарий</div> <div id="cancel-comment-reply"><a rel="nofollow" id="cancel-comment-reply-link" href="/tehnika/41/flask-nazvanie-vkladki-kak-sdelat#respond" style="display:none;">Нажмите, чтобы отменить ответ.</a></div> <!--noindex--> <form action="https://qubstore.ru/wp-comments-post.php" method="post" class="respond-form"> <input type="text" name="author" id="author" placeholder="Ваше имя:" class="respond-form__field respond-form__name" value="" aria-required='true' /> <input type="text" name="email" id="email" placeholder="Ваш e-mail:" class="respond-form__field respond-form__email" value="" aria-required='true' /> <input type="text" name="url" id="url" placeholder="Ваш сайт:" class="respond-form__field respond-form__site" value="" /> <textarea name="comment" id="comment_textarea" rows="7" placeholder="Ваш комментарий:" class="respond-form__text respond-form__textarea"></textarea> <input name="submit" type="submit" class="respond-form__button" value="Отправить" /> <input type='hidden' name='comment_post_ID' value='18830' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </form> <!--/noindex--> </div><!-- #respond --> </aside> </main> <aside class="sidebar sidebar_midle"> <div class="section-posts-box section"> <div class="title">Популярные статьи</div> <div class="section-posts"> <div class="section-posts__item"> <img src="https://qubstore.ru/wp-content/cache/thumb/c5/2c8d65493a2fec5_300x180.jpg" width="300" height="180" class="section-posts__item-img" alt="He him что это" /> <div class="section-posts__item-title"> <a href="https://qubstore.ru/tehnika/41/he-him-chto-eto">He him что это</a> </div> <div class="section-posts__item-text"> He и him применяются для указания на человека мужского гендера... </div> <div class="post-info section-posts__item-info"> <div class="post-info__comment">0</div> <time class="post-info__time post-info__time_popular" datetime="2025-11-28">28.11.2025</time> </div> </div> <div class="section-posts__item"> <img src="https://qubstore.ru/wp-content/cache/thumb/17/428685182bedb17_300x180.jpg" width="300" height="180" class="section-posts__item-img" alt="Atop linux как пользоваться" /> <div class="section-posts__item-title"> <a href="https://qubstore.ru/tehnika/41/atop-linux-kak-polzovatsya">Atop linux как пользоваться</a> </div> <div class="section-posts__item-text"> Atop – это инструмент для глубокого мониторинга Linux, который показывает... </div> <div class="post-info section-posts__item-info"> <div class="post-info__comment">0</div> <time class="post-info__time post-info__time_popular" datetime="2025-11-28">28.11.2025</time> </div> </div> <div class="section-posts__item"> <img src="https://qubstore.ru/wp-content/cache/thumb/bb/7ac93884f02b2bb_300x180.jpg" width="300" height="180" class="section-posts__item-img" alt="Как найти количество вершин правильного многоугольника" /> <div class="section-posts__item-title"> <a href="https://qubstore.ru/tehnika/41/kak-najti-kolichestvo-vershin-pravilnogo-mnogougolnika">Как найти количество вершин правильного многоугольника</a> </div> <div class="section-posts__item-text"> Правильный многоугольник задаётся строгими геометрическими параметрами, и число его вершин... </div> <div class="post-info section-posts__item-info"> <div class="post-info__comment">0</div> <time class="post-info__time post-info__time_popular" datetime="2025-11-28">28.11.2025</time> </div> </div> </div> </div> </aside></div><!-- /.content-wrapper --> </div><!-- /.main-box --> <footer class="footer" id="footer"> <nav class="footer-nav"><ul><li id="menu-item-53698" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-53698"><a href="https://qubstore.ru/o-proekte">О проекте</a></li> <li id="menu-item-53699" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-53699"><a href="https://qubstore.ru/obratnaya-svyaz">Обратная связь</a></li> </ul></nav> <div class="footer-bottom"> <div class="copy">© 2026 Все права защищены.</div> </div> </footer> </div><!-- /.wrapper --> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/marafon/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://qubstore.ru/wp-includes/js/comment-reply.min.js?ver=7.0"></script> <script id="wp-postratings-js-extra"> var ratingsL10n = {"plugin_url":"https://qubstore.ru/wp-content/plugins/wp-postratings","ajax_url":"https://qubstore.ru/wp-admin/admin-ajax.php","text_wait":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043d\u0435 \u0433\u043e\u043b\u043e\u0441\u0443\u0439\u0442\u0435 \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.","image":"stars","image_ext":"gif","max":"5","show_loading":"1","show_fading":"1","custom":"0"}; var ratings_mouseover_image=new Image();ratings_mouseover_image.src="https://qubstore.ru/wp-content/plugins/wp-postratings/images/stars/rating_over.gif";; //# sourceURL=wp-postratings-js-extra </script> <script id="wp-postratings-js" src="https://qubstore.ru/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.91.2"></script> <script id="fancybox-purify-js" src="https://qubstore.ru/wp-content/plugins/easy-fancybox/vendor/purify.min.js?ver=7.0"></script> <script id="jquery-fancybox-js-extra"> var efb_i18n = {"close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","next":"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439","prev":"\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439","startSlideshow":"\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043b\u0430\u0439\u0434-\u0448\u043e\u0443","toggleSize":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0442\u0443\u043c\u0431\u043b\u0435\u0440\u0430"}; //# sourceURL=jquery-fancybox-js-extra </script> <script id="jquery-fancybox-js" src="https://qubstore.ru/wp-content/plugins/easy-fancybox/fancybox/1.5.4/jquery.fancybox.min.js?ver=7.0"></script> <script id="jquery-fancybox-js-after"> var fb_timeout, fb_opts={'autoScale':true,'showCloseButton':true,'width':560,'height':340,'margin':20,'pixelRatio':'false','padding':10,'centerOnScroll':false,'enableEscapeButton':true,'speedIn':300,'speedOut':300,'overlayShow':true,'hideOnOverlayClick':true,'overlayColor':'#000','overlayOpacity':0.6,'minViewportWidth':320,'minVpHeight':320,'disableCoreLightbox':'true','enableBlockControls':'true','fancybox_openBlockControls':'true' }; if(typeof easy_fancybox_handler==='undefined'){ var easy_fancybox_handler=function(){ jQuery([".nolightbox","a.wp-block-file__button","a.pin-it-button","a[href*='pinterest.com\/pin\/create']","a[href*='facebook.com\/share']","a[href*='twitter.com\/share']"].join(',')).addClass('nofancybox'); jQuery('a.fancybox-close').on('click',function(e){e.preventDefault();jQuery.fancybox.close()}); /* IMG */ var unlinkedImageBlocks=jQuery(".wp-block-image > img:not(.nofancybox,figure.nofancybox>img)"); unlinkedImageBlocks.wrap(function() { var href = jQuery( this ).attr( "src" ); return "<a href='" + href + "'></a>"; }); var fb_IMG_select=jQuery('a[href*=".jpg" i]:not(.nofancybox,li.nofancybox>a,figure.nofancybox>a),area[href*=".jpg" i]:not(.nofancybox),a[href*=".png" i]:not(.nofancybox,li.nofancybox>a,figure.nofancybox>a),area[href*=".png" i]:not(.nofancybox),a[href*=".webp" i]:not(.nofancybox,li.nofancybox>a,figure.nofancybox>a),area[href*=".webp" i]:not(.nofancybox),a[href*=".jpeg" i]:not(.nofancybox,li.nofancybox>a,figure.nofancybox>a),area[href*=".jpeg" i]:not(.nofancybox)'); fb_IMG_select.addClass('fancybox image'); var fb_IMG_sections=jQuery('.gallery,.wp-block-gallery,.tiled-gallery,.wp-block-jetpack-tiled-gallery,.ngg-galleryoverview,.ngg-imagebrowser,.nextgen_pro_blog_gallery,.nextgen_pro_film,.nextgen_pro_horizontal_filmstrip,.ngg-pro-masonry-wrapper,.ngg-pro-mosaic-container,.nextgen_pro_sidescroll,.nextgen_pro_slideshow,.nextgen_pro_thumbnail_grid,.tiled-gallery'); fb_IMG_sections.each(function(){jQuery(this).find(fb_IMG_select).attr('rel','gallery-'+fb_IMG_sections.index(this));}); jQuery('a.fancybox,area.fancybox,.fancybox>a').each(function(){jQuery(this).fancybox(jQuery.extend(true,{},fb_opts,{'transition':'elastic','transitionIn':'elastic','transitionOut':'elastic','opacity':false,'hideOnContentClick':false,'titleShow':true,'titlePosition':'over','titleFromAlt':true,'showNavArrows':true,'enableKeyboardNav':true,'cyclic':false,'mouseWheel':'true','changeSpeed':250,'changeFade':300}))}); };}; jQuery(easy_fancybox_handler);jQuery(document).on('post-load',easy_fancybox_handler); //# sourceURL=jquery-fancybox-js-after </script> <script id="jquery-easing-js" src="https://qubstore.ru/wp-content/plugins/easy-fancybox/vendor/jquery.easing.min.js?ver=1.4.1"></script> <script id="jquery-mousewheel-js" src="https://qubstore.ru/wp-content/plugins/easy-fancybox/vendor/jquery.mousewheel.min.js?ver=3.1.13"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://qubstore.ru/wp-includes/js/wp-emoji-release.min.js?ver=7.0"}} </script> <script type="module"> /*! This file is auto-generated */ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))}); //# sourceURL=https://qubstore.ru/wp-includes/js/wp-emoji-loader.min.js </script> </div><!-- /#main --> </body> </html> <!-- Dynamic page generated in 0.155 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2026-06-20 10:02:33 --> <!-- super cache -->