templates/ProfileList/list.html.twig line 1

Open in your IDE?
  1. {% extends 'ProfileList/grid.html.twig' %}
  2. {# {% extends 'grid.html.twig' %} #}
  3. {%- set linkLangSupport = app.request.locale == 'en' ? '/en' : '' -%}
  4. {%- set excludeRecommendationProfileIds = [] -%} 
  5. {%- set isFirstPage = profiles.currentPage is defined and profiles.currentPage == 1 -%}
  6. {% set isOldDomain = app.request.host == "prostitutki-moskvy-dosug.com" %}
  7. {% set listingPage = profiles.currentPage is defined and profiles.currentPage > 1 %}
  8. {# {%- block stylesheet_postload -%}{{ encore_entry_link_tags("styles/public-girl-list") }}{{ parent() }}{%- endblock -%} #}
  9. {%- block preloadAnyData -%}
  10.     {# {%- set photo = profiles|first|avatar -%}
  11.     {%- if photo -%}
  12.         <link rel="preload" href="{{ responsive_asset(photo.path, 'profile_media', "200x280", "jpg") }}" as="image">
  13.         <link rel="preload" as="image"
  14.             href="{{ responsive_asset(photo.path, 'profile_media', "200x280", "jpg") }}"
  15.             imagesrcset="{{ responsive_asset(photo.path, 'profile_media', "200x280", "jpg") }} 200w,
  16.                         {{ responsive_asset(photo.path, 'profile_media', "185x259", "jpg") }} 185w"
  17.             imagesizes="(max-width: 1740px) 185px, 200px"
  18.             media="(min-width: 1740px)" />
  19.     {%- endif -%} #}
  20. {%- endblock -%}
  21. {%- block metaSpecial -%}
  22.     {%- set pageNumber = app.request.get('page', 1) -%}
  23.     {%- if pageNumber > 1 -%}
  24.         <meta name="yandex" content="noindex, follow" />
  25.     {%- endif -%}
  26. {%- endblock -%}
  27. {%- block mainContainer -%}
  28.     {%- set isMainCity = city.uriIdentity == default_city().uriIdentity -%}
  29.     {%- set conditionList = [
  30.         'usluga-massage-professionalnyij',
  31.         'usluga-massage-rasslablyayuschij',
  32.         'usluga-massage-tajskij',
  33.         'usluga-massage-urologicheskij',
  34.         '/new/',
  35.         '/search/',
  36.         '/checked/',
  37.         '/salons/',
  38.         '/usluga-striptiz-ne-profi/',
  39.         '/usluga-striptiz-profi/',
  40.         '/price/high/',
  41.         '/usluga-seks-analnyij/',
  42.         '/hair-color-blonde/',
  43.         '/hair-color-brunette/',
  44.         '/price/low/',
  45.         '/video/',
  46.         '/comments/',
  47.         '/map/',
  48.         '/usluga-massage-klassicheskij/',
  49.         '/nationality-asian/',
  50.         '/usluga-anilingus-delayu/',
  51.         '/usluga-gospozha/',
  52.         '/selfie/',
  53.         '/massagers/',
  54.         '/usluga-massage-vetka-sakuryi/',
  55.         '/okrug/vostochnyj-vao/',
  56.         '/okrug/zapadnyj-zao/',
  57.         '/okrug/severnyj-sao/',
  58.         '/okrug/severo-zapadnyj-szao/',
  59.         '/okrug/tsentralnyij/',
  60.         '/okrug/yugo-vostochnyj-yuvao/',
  61.         '/usluga-minet-bez-rezinki/',
  62.         '/usluga-minet-v-mashine/',
  63.         '/usluga-minet-v-prezervative/',
  64.         '/usluga-minet-glubokij/',
  65.         '/nationality-negress/',
  66.         '/main-district/',
  67.         '/hair-color-light-brown/',
  68.         '/hair-color-red/',
  69.         '/usluga-seks-gruppovoj/',
  70.         '/usluga-strapon/',
  71.         '/usluga-uslugi-semejnoj-pare/',
  72.         '/usluga-fisting-analnyij/',
  73.         '/usluga-fisting-klassicheskij/',
  74.         '/hair-color-brown/',
  75.         '/nationality-kazakh/',
  76.         '/nationality-mulatto/',
  77.         '/nationality-russian/',
  78.         '/nationality-tatar/',
  79.         '/nationality-ukrainian/',
  80.         '/okrug/yugo-zapadnyj-yuzao/',
  81.         '/okrug/zelenograd/',
  82.         '/body-type-athletic/',
  83.         '/body-type-fat/',
  84.         '/usluga-seks-klassicheskij/',
  85.         '/usluga-rolevyie-igryi/',
  86.         '/usluga-eskort/',
  87.         '/usluga-trampling/',
  88.         '/usluga-fetish/',
  89.         '/usluga-bondaj/',
  90.         '/usluga-rabyinya/',
  91.         '/usluga-porka/',
  92.         '/body-type-thin/',
  93.         '/body-type-slim/',
  94.         '/body-type-tight/',
  95.         '/usluga-okonchanie-na-grud/',
  96.         '/usluga-okonchanie-na-litso/',
  97.         '/usluga-kopro-vyidacha/',
  98.         '/usluga-okonchanie-v-rot/',
  99.         '/usluga-kunnilingus/',
  100.         '/usluga-massage-eroticheskij/',
  101.         '/usluga-massage-tochechnyij/',
  102.         '/usluga-igrushki/',
  103.         '/usluga-zolot-dozhd-vyidacha/',
  104.         '/usluga-zolotoj-dozhd-priem/',
  105.         '/usluga-legkaya-dominatsiya/',
  106.         '/metro-',
  107.         '/prostitytki-'
  108.         ]
  109.     %}
  110.     {%- set onlyThisPageSeoShow = false -%}
  111.     {%- for str in conditionList -%}
  112.         {%- if str in app.request.pathInfo -%}
  113.             {%- set onlyThisPageSeoShow = true -%}
  114.         {%- endif -%}
  115.     {%- endfor -%}
  116.     {% set route = app.request.attributes.get('_route') %}
  117.     {%- set isIndexPage = app.request.pathInfo == '/' -%}
  118.     {%- set isStationPage = route == "profile_list.list_by_station" -%}
  119.     {% set mainListingFirstPage = route == 'profile_list.list_by_city' %}
  120.     {# {%- set isShowTopSeo = (isFirstPage and isMainCity and onlyThisPageSeoShow) or isIndexPage -%}
  121.     {%- set isShowBottomSeo = (isFirstPage and isMainCity and onlyThisPageSeoShow ) or isIndexPage -%} #}
  122.     {%- set isShowTopSeo = not isOldDomain and isFirstPage -%}
  123.     {%- set isShowTopOnBottomSeo = not isOldDomain and isFirstPage -%}
  124.     {%- set isShowBottomSeo = not isOldDomain and isFirstPage -%}
  125.     {{- knp_menu_render('breadcrumbs', {'template': '__design/v2023/_menu/breadcrumbs.html.twig'}) -}}
  126.     <div class="heading d-flex">
  127.         <h1 class="heading-title text-title mr-1" role="heading">{{- seo_heading() ? seo_heading() : 'Проститутки и индивидуалки Москвы' -}}</h1>
  128.         <span class="heading-count clr-main-text fw-700" data-count-profiles>{{ profiles.totalCount }}</span>
  129.     </div>
  130.     {# <div aria-hidden="true" class="no-display" style="display: none;">
  131.         <svg xmlns="http://www.w3.org/2000/svg">
  132.             <symbol id="close" viewBox="0 0 25 24">
  133.                 <path fill-rule="evenodd" clip-rule="evenodd" d="M19.46 6.7a1 1 0 0 0-1.42-1.4l-5.29 5.29-5.3-5.3a1 1 0 0 0-1.4 1.42L11.33 12l-5.3 5.3a1 1 0 1 0 1.42 1.4l5.29-5.29 5.3 5.3a1 1 0 0 0 1.4-1.42L14.17 12l5.3-5.3Z" fill="#A3A3A3"/>
  134.             </symbol>
  135.             <symbol id="expand" viewBox="0 0 25 24">
  136.                 <path fill-rule="evenodd" clip-rule="evenodd" d="M5.54 8.3a1 1 0 0 1 1.42 0l5.29 5.29 5.3-5.3a1 1 0 1 1 1.4 1.42l-6 6a1 1 0 0 1-1.4 0l-6-6a1 1 0 0 1 0-1.42Z" fill="#A3A3A3"/>
  137.             </symbol>
  138.             <symbol id="range" viewBox="0 0 25 24">
  139.                 <path d="M21.5 11h-1.18a2.98 2.98 0 0 0-5.64 0h-4.36a2.98 2.98 0 0 0-5.64 0H3.5a1 1 0 1 0 0 2h1.18a2.98 2.98 0 0 0 5.64 0h4.36a2.98 2.98 0 0 0 5.64 0h1.18a1 1 0 0 0 0-2Zm-14 2a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm10 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"/>
  140.             </symbol>
  141.         </svg>
  142.     </div> #}
  143.     {%- set isArchivePage =  'profile_list.list_archived' in app.request.attributes.get('_route') -%}
  144.     {%- set isFormExist = false -%}{# profile_filter_form is defined and not isArchivePage #}
  145.     {%- if isFormExist -%}
  146.         <noindex>
  147.             <button class="filter_hide_button" type="button" id="filter_hide_button">
  148.                 <svg class="filter_hide_button__icon" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.96 6h10l-5 6.3-5-6.3Zm-2.75-.39L9.96 13v6a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1v-6l5.74-7.39A1 1 0 0 0 18.91 4H5.01a1 1 0 0 0-.8 1.61Z" /></svg>
  149.                 <span class="filter_hide_button__text" data-filter-hide-text-show>Показать фильтры</span>
  150.                 <svg class="filter_hide_button__rotate" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M7.45 9.87a.84.84 0 0 1 1.24 0l3.3 3.5 3.32-3.5a.84.84 0 0 1 1.23 0c.34.36.34.95 0 1.3l-3.92 4.16a.84.84 0 0 1-1.24 0l-3.93-4.15a.96.96 0 0 1 0-1.31Z" /></svg>
  151.             </button>
  152.             <div class="filter_hide_block" id="filter_hide_block">
  153.                 {# Форма полей фильтрации #}
  154.                 {{ form_start(profile_filter_form, {
  155.                     'attr': {
  156.                         'id': 'filter-form',
  157.                         'class': 'filter_form',
  158.                         'data-process-url': path('profile_ctr.increase_shows'),
  159.                         'data-main-class': 'profile_filter'
  160.                     }
  161.                 }) }}
  162.                     {{ include('ProfileList/filter/form.partial.twig', {filterData: profile_filter_form.vars.value, filterListId: 'filter-list'}) }}
  163.                 {{ form_end(profile_filter_form) }}
  164.             </div>
  165.             <div class="profile_filter__tags__container profile_filter__tags__container--mobile fade_slider__container">
  166.                 <div class="profile_filter__tags d-none fade_slider d-none" id="filter_tags"></div>
  167.             </div>
  168.             <div class="profile_filter__line" id="filter_line" style="display: none">
  169.                 <div class="profile_filter__line__title">Найдено <span class="profile_filter__line__title__count">{{ profiles.totalCount }} {{ profiles.totalCount|incline_numeral(['анкета', 'анкеты', 'анкет']) }}</span></div>
  170.                 <button class="profile_filter__line__reset" type="button" id="filter_line_reset">
  171.                     Сбросить фильтры
  172.                     <svg class="profile_filter__line__reset_icon" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.7 1.7A1 1 0 0 0 12.3.3L7 5.58 1.7.29A1 1 0 0 0 .3 1.71L5.58 7l-5.3 5.3a1 1 0 1 0 1.42 1.4L7 8.42l5.3 5.3a1 1 0 0 0 1.4-1.42L8.42 7l5.3-5.3Z" fill="#ED0C34"/></svg>
  173.                 </button>
  174.             </div>
  175.         </noindex>
  176.     {% endif %}
  177.     {% block mainList %}
  178.         <ul class="profile-list d-grid mb-4 full-w-xs" id="profile-list">
  179.             {% include 'ProfileList/list.profiles.html.twig' with {
  180.                 'likeButton': is_user_customer(app.user) == '1'
  181.                 } %}
  182.         </ul>
  183.     {% endblock %}
  184.     
  185.     {% if routeIsHome %}
  186.         {% if profiles and profiles.totalCount > profiles.currentPage * profiles.currentLimit %}
  187.             {% set linkToProfileList = path('profile_list.list_by_city._pagination', {'city': city.uriIdentity, 'page': '1'})|replace({'/page1': ''}) %}
  188.             <a class="homepage-link-more btn btn-main d-flex-c" href="{{ linkToProfileList }}">
  189.                 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="#fff" d="m16.56 22.04-.06.08-.07.1-.09.06-.17.06-.12.02-.02.16-.04.06h-.11l-.02-.24-.1-.03-.26-.02-.11-.07v-.1s.07-.16.2-.13c.09-.1.04-.25.04-.25l-.06-.16-.09-.14v-.2l.01-.19v-.11s-.05-.17-.08-.22q-.03-.1 0-.16c.02-.13 0-.29 0-.29l-.06-.16s-.23-.64-.35-.8a6 6 0 0 1-.68-1.4c-.08-.41-.22-.96-.24-1.03-.09-.16-.44-.7-.48-1.02-.11-.36-.64-1.96-.82-2.27a11 11 0 0 1-.45-1.21c-.06-.05-.1.03-.1.03l-.25.03-.13.01h-.1l-.04.1s-.13.83-.35 1.23c-.14.45-.85 2.52-.87 2.68-.04.22-.15.6-.55 1.07-.1.2-.3.7-.37 1.05-.14.4-.32.59-.37.7-.12.23-.79 1.4-.85 1.73-.03.21 0 .33 0 .33l-.05.1-.04.08v.22l.03.07.02.1-.02.08-.07.04s-.18.27-.13.39l.03.24.03.06v.18l-.05.09-.73.01c-.03 0-.13-.1-.13-.1l-.1-.1-.07-.07-.06-.02-.01-.07.03-.09.05-.09s.27-.44.32-.62c0 0 .02-.14.07-.18v-.36l.03-.06.05-.07s.24-.53.28-1.01c.06-.54.3-2.1.55-2.36.18-.3.42-.88.5-.96.07-.2.36-.93.4-1.2.05-.34.11-.8.11-.98 0-.35.03-1.08.05-1.22.04-.19.17-1.06.24-1.2q.1-.25.08-.24H9.7v-.14l-.04-.18-.01-.22.01-.1.02-.08-.02-.18.04-.08.06-.1.01-.1.06-.14.05-.14s.07-.25.12-.32l-.01-.15s-.08-.14-.07-.2c-.04-.08-.45-.63-.51-.73-.1-.14-.44-.7-.53-.88-.1-.2-.13-.22-.13-.22s-.06-.14-.02-.2l.02-.18.03-.05.06-.07.03-.07.16-.36c0-.03.17-.4.21-.47.07-.12.4-.9.5-1.05l.2-.4.07-.2.08-.12.01-.08-.11.05-.17.06-.1-.03-.04-.1.08.02.09-.05-.12-.04-.06-.1.07.01h.12l-.07-.06-.1-.1-.02-.13.09.06.1.06.01-.06-.1-.09s-.17-.08-.24-.23-.06-.2-.06-.2.1.17.18.19.11-.04.11-.04l.1-.11.05-.08-.08.02-.06-.1h.14l.03-.05H9.9l-.08-.05.02-.07.05.04.08-.05.08-.2V3.1s-.08-.29.08-.55c.08-.23.18-.43.18-.43l.06-.27.08-.23.05-.16s.17-.25.37-.32q.35-.15.62-.15c.13.03.14.05.14.05s.1-.12.37 0c.18.07.7.28.79.4.1.14.35.56.47.9.12.4.21.55.21.55l.03.11-.01.1-.04-.09-.05-.1.03.21s.12.32 0 .56l-.05-.02s-.03.12-.06.15l-.1.1-.03.13c-.02.03-.08.17-.08.2s-.09.14-.09.14-.16.13-.27.15c.03.06.31.27.28.46l-.06.38c0 .11.05.17.05.17s.3.4.46.5.5.38.58.65c0 0 .11.14.04.2-.01 0 .03.43-.14.54 0 0-.34.12-.46 0l.06.53c.01.04.01.24-.03.36.02.13.34 1.12.46 1.23.1.16.52 1.37.48 2.02.04.34.25 1.25.24 1.64.03.14.15.92.07 1.46 0 .14.07.74.14.87a1 1 0 0 1 .08.36l.06.23s.13.46.24.6c.08.15.38.67.4 1.18l.3 1.78c.02.05.04.41.16.75l.1.2.03.1.01.12.01.14.04.1.06.12.03.12.03.07s.08.15.1.36c0 .1.04.15.04.15zM10.9 8.64a6 6 0 0 1-.49-1.46c-.02-.1-.1-.3-.1-.3l-.03.04s-.16.28-.3.4-.3.56-.3.56q-.02.02.04.14c.04.07.16.4.22.61.04.17.33.85.4 1 .07.07.14.3.17.4.06-.09.3-.15.3-.15l.03-.06.04-.05.01-.07.01-.12.04-.08.11-.13c.08-.15-.04-.54-.15-.74"/></svg>
  190.                 <span>Смотреть всех проституток Москвы</span>
  191.             </a>
  192.         {% endif %}
  193.     {% else %}
  194.         {% if profiles and profiles.totalCount > profiles.currentPage * profiles.currentLimit %}
  195.             {% block showMore %}
  196.                 {% include 'ProfileList/_show_more.profiles.html.twig' %}
  197.             {% endblock showMore %}
  198.         {% endif %}
  199.         {{ porpaginas_render(profiles) }}
  200.     {% endif %}
  201.     <div class="map-block mb-4 full-w-xs">
  202.         <picture class="map-picture">
  203.             <source srcset="{{ asset('assets/images/background/map@480.jpg') }}" media="(max-width: 480px)">
  204.             <source srcset="{{ asset('assets/images/background/map@930.jpg') }}" media="(max-width: 960px)">
  205.             <img class="map-image" src="{{ asset('assets/images/background/map@1380.jpg') }}" alt="Интим-карта Москвы" loading="lazy">
  206.         </picture>
  207.         <div class="map-block-content d-flex-c">
  208.             <div class="map-block-title fw-700 mb-2">Интим-карта {{ city.name|geo_name('genitive') }}</div>
  209.             <div class="map-block-text">Поиск анкет рядом с Вами</div>
  210.             <a class="map-block-link btn btn-main" href="{{ path('map.page', {'city': city.uriIdentity}) }}">
  211.                 <svg class="btn-icon" width="25" height="25" fill="none"><path fill-rule="evenodd" d="M4.674 8.944c0-4.314 3.512-7.826 7.826-7.826s7.826 3.512 7.826 7.826c0 5.448-6.809 13.049-7.102 13.372l-.724.802-.724-.802c-.293-.323-7.102-7.924-7.102-13.372Zm1.957 0c0 3.462 3.736 8.667 5.869 11.22 1.712-2.064 5.87-7.474 5.87-11.22a5.874 5.874 0 0 0-5.87-5.87 5.874 5.874 0 0 0-5.87 5.87Zm5.869 0c.812 0 1.467-.656 1.467-1.468 0-.812-.655-1.467-1.467-1.467s-1.467.665-1.467 1.467c0 .812.655 1.468 1.467 1.468Zm-2.935 2.445c0-.978 1.957-1.467 2.935-1.467s2.935.489 2.935 1.467v.118a3.88 3.88 0 0 1-2.935 1.35 3.88 3.88 0 0 1-2.935-1.35v-.118Z" clip-rule="evenodd"/></svg>
  212.                 <span class="btn-text">Искать на карте</span>
  213.             </a>
  214.         </div>
  215.     </div>
  216.     {% if homepage_city_listings_block is defined and homepage_city_listings_block %}
  217.         {# Массажистки в Москве #}
  218.         {% if feature('has_masseurs') and feature('homepage_city_masseurs_block') and homepage_city_listings_block.hasMasseurs %}
  219.         <div>
  220.             {% include 'ProfileList/list.masseur.html.twig' %}
  221.         <div>
  222.         {% endif %}
  223.         {# Интим салоны в Москве #}
  224.         {% if feature('has_saloons') and feature('homepage_city_saloons_block') and homepage_city_listings_block.hasSaloons %}
  225.         <div>
  226.             {% include 'ProfileList/list.saloon.html.twig' %}
  227.         <div>
  228.         {% endif %}
  229.     {% endif %}
  230.     {# Реки #}
  231.     {% if profiles and profiles.currentPage >= 2 %}
  232.         <div id="recommendations">
  233.             {%- set excludeRecommendationProfileIds = profiles|map(p => p.id)|join(', ') -%}
  234.             {%- include 'Recommendations/_profile_recommendations.html.twig' with {componentClass: 'mobile'} -%}
  235.         </div>
  236.     {% endif %}
  237.     {% if route == 'homepage' or
  238.         (mainListingFirstPage and app.request.get('city').id == default_city().id)
  239.     %}
  240.         <div class="widget-profiles-by-categories" id="widget_profiles_by_categories"></div>
  241.         <script>
  242.             document.addEventListener('DOMContentLoaded', () => {
  243.                 const widgetElement = document.querySelector('#widget_profiles_by_categories');
  244.                 function getProfiles() {
  245.                     fetch('{{ path('profile_widget.by_categories', {city: app.request.attributes.get('city', default_city()).uriIdentity}) }}', {
  246.                         method: 'GET',
  247.                         headers: {
  248.                             "X-Requested-With": "XMLHttpRequest"
  249.                         },
  250.                     }).then(response => {
  251.                         if (response.status < 300) {
  252.                             return response.text();
  253.                         } else {
  254.                             console.warn(" ");
  255.                             return null;
  256.                         }
  257.                     }).then(response => {
  258.                         widgetElement.innerHTML = response;
  259.                         const elementsRoot = [...document.querySelectorAll('#profile-list-new', '#profile-list-approved', '#profile-list-elite')];
  260.                         elementsRoot.forEach(root => {
  261.                             if (root.childElementCount === 0) {
  262.                                 root.previousElementSibling.remove();
  263.                                 root.remove();
  264.                             }
  265.                         });
  266.                     });
  267.                 }
  268.                 if ('IntersectionObserver' in window) {
  269.                     const observer = new IntersectionObserver((entries) => {
  270.                         if (entries[0].isIntersecting) {
  271.                             observer.disconnect();
  272.                             getProfiles();
  273.                         }
  274.                     }, { rootMargin: '100px' });
  275.                     observer.observe(widgetElement);
  276.                 } else {
  277.                     getProfiles();
  278.                 }
  279.             });
  280.         </script>
  281.     {% endif %}
  282.     {# {% set circle = app.request.get('_route') == 'profile_list.list_by_provided_service' ? inner_linkage_circle('service') : inner_linkage_circle('prostitutes') %}
  283.     {% if circle is not null %}
  284.         <div class="station-pages-linkage-circle">
  285.             {% if circle[0] is defined and circle[0] is not null %}<a href="{{ circle[0].href }}"><i class="prev"></i>{{ circle[0].text }}</a>{% endif %}
  286.             {% if circle[0] is defined and circle[0] is not null
  287.                 and circle[1] is defined and circle[1] is not null %}<i class="sep"></i>{% endif %}
  288.             {% if circle[1] is defined and circle[1] is not null %}<a href="{{ circle[1].href }}">{{ circle[1].text }}<i class="next"></i></a>{% endif %}
  289.         </div>
  290.     {% endif %}
  291.     {% set stations_circle = station_pages_linkage_circle() %}
  292.     {% if stations_circle is not null %}
  293.         <div class="station-pages-linkage-circle">
  294.             {% if stations_circle[0] is defined and stations_circle[0] is not null %}<a href="{{ stations_circle[0].href }}"><i class="prev"></i>{{ stations_circle[0].text }}</a>{% endif %}
  295.             {% if stations_circle[0] is defined and stations_circle[0] is not null
  296.                 and stations_circle[1] is defined and stations_circle[1] is not null %}<i class="sep"></i>{% endif %}
  297.             {% if stations_circle[1] is defined and stations_circle[1] is not null %}<a href="{{ stations_circle[1].href }}">{{ stations_circle[1].text }}<i class="next"></i></a>{% endif %}
  298.         </div>
  299.     {% endif %}
  300.     {% set cities_circle = city_main_pages_linkage_circle() %}
  301.     {% if cities_circle is not null %}
  302.         <div class="station-pages-linkage-circle">
  303.             {% if cities_circle[0] is defined and cities_circle[0] is not null %}<a href="{{ cities_circle[0].href }}"><i class="prev"></i>{{ cities_circle[0].text }}</a>{% endif %}
  304.             {% if cities_circle[0] is defined and cities_circle[0] is not null
  305.                 and cities_circle[1] is defined and cities_circle[1] is not null %}<i class="sep"></i>{% endif %}
  306.             {% if cities_circle[1] is defined and cities_circle[1] is not null %}<a href="{{ cities_circle[1].href }}">{{ cities_circle[1].text }}<i class="next"></i></a>{% endif %}
  307.         </div>
  308.     {% endif %} #}
  309.     {# {{ include('components/last_girl_list.html.twig') }} #}
  310.     {# комменты анкет для листинга станции #}
  311.     {# {% include 'ProfileList/station_comments.partial.html.twig' %} #}
  312.     {%- if isShowTopOnBottomSeo -%}
  313.         {{- include ('__design/v2023/components/seo-article.html.twig', { 'type': 'top', "noindex": true }) -}}
  314.     {%- endif -%}
  315.     {%- if isShowBottomSeo -%}
  316.         {{- include ('__design/v2023/components/seo-article.html.twig', { 'type': 'bottom', "noindex": true }) -}}
  317.     {%- endif -%}
  318.     {%- if isIndexPage -%}
  319.         <noindex><p>Элитные и дешевые <a href="https://prostitutkipiter.click/" target="_blank">проститутки в Питере</a> на сайте Prostitutkipiter.click</p></noindex>
  320.     {%- endif -%}
  321. {% endblock %}
  322. {% block javascripts %}
  323.     {{parent()}}
  324.     <script>
  325.         const listingRoute = '{{ app.request.attributes.get('_route') }}' == '' ? 'profile_list.list_by_city' : '{{ app.request.attributes.get('_route') }}';
  326.         window._lD = {
  327.             setLastViewedListing: listingRoute,
  328.             cityUrl: "{{city.uriIdentity}}",
  329.         };
  330.         window.siteData = {
  331.             city: "{{ app.request.attributes.get('city', default_city()).uriIdentity }}",
  332.             stations: {
  333.                 {%- for station in stations() -%}
  334.                     "{{ station.name|trans }}": "{{ path('profile_list.list_by_station', {'city': station.city.uriIdentity, 'station': station.uriIdentity}) }}"{% if not loop.last %},{% endif %}
  335.                 {%- endfor -%}
  336.             }
  337.         };
  338.         {# document.addEventListener('DOMContentLoaded', function() {
  339.             {% if profiles and profiles.totalCount > 0 %}
  340.                 {%- set profilesId = profiles|map(p => p.id)|join(',') -%}
  341.                 window.increase_shows({
  342.                     profiles: [{{ profilesId }}],
  343.                     route: '{{ app.request.attributes.get('_route') }}',
  344.                 })
  345.             {% endif %}
  346.         }); #}
  347.         document.addEventListener('header:update', (event) => {
  348.             const userData = event.detail?.data;
  349.             if (userData.user && userData.role === 'advertiser') return;
  350.             {% include 'ProfileList/_favorite-button.partial.script.js' %}
  351.         })
  352.     </script>
  353. {% endblock %}