templates/ProfileList/list.html.twig line 1

Open in your IDE?
  1. {% extends 'grid.html.twig' %}
  2. {%- block title -%}
  3.     {{- seo_title() -}}
  4. {%- endblock -%}
  5. {%- block metaDescription -%}
  6.     <meta name="description" content="{{- seo_description() -}}">
  7. {%- endblock -%}
  8. {%- block metaRobots -%}{%- if app.request.attributes.get('page') > 1 -%}<meta name="robots" content="noindex, follow" />{%- endif -%}{%- endblock -%}
  9. {%- block name_page -%}girls-list{%- endblock -%}
  10. {%- block current_menu_map -%} current{%- endblock -%}
  11. {%- block mainContainer -%}
  12.     {%- set excludeRecommendationProfileIds = [] -%}
  13.     {%- set conditionList = [
  14.         '/otzyvy/',
  15.         '/video/',
  16.         '/selfie/',
  17.         '/price/dorogie/',
  18.         '/price/deshevye/',
  19.         '/stancii/',
  20.         '/raiony/',
  21.         '/novye/',
  22.         '/massajistki/',
  23.         '/bdsm/',
  24.         '/intim-karta/',
  25.         '/proverennye/',
  26.         '/hudye/',
  27.         '/stroinye/',
  28.         '/sportivnye/',
  29.         '/plotnye/',
  30.         '/tolstye/',
  31.         '/russkie/',
  32.         '/ukrainki/',
  33.         '/kazashki/',
  34.         '/negrityanki/',
  35.         '/tatarki/',
  36.         '/aziatki/',
  37.         '/kirgizki/',
  38.         '/yaponki/',
  39.         '/kitayanki/',
  40.         '/taiki/',
  41.         '/armyanki/',
  42.         '/mulatki/',
  43.         '/tadzhichki/',
  44.         '/uzbechki/',
  45.         '/brunetki/',
  46.         '/shatenki/',
  47.         '/ryzhie/',
  48.         '/rusye/',
  49.         '/blondinki/',
  50.         '/nizkie/',
  51.         '/vysokie/',
  52.         '/molodye/',
  53.         '/zrelye/'
  54.         ]
  55.     %}
  56.     {%- set onlyThisPageSeoShow = false -%}
  57.     {%- for str in conditionList -%}
  58.         {%- if str in app.request.pathInfo -%}
  59.             {%- set onlyThisPageSeoShow = true -%}
  60.         {%- endif -%}
  61.     {%- endfor -%}
  62.     {%- set isMainCity = city.uriIdentity == default_city().uriIdentity -%}
  63.     {%- set isIndexPage = app.request.pathInfo == '/' -%}
  64.     {%- set isFirstPage = profiles.currentPage == 1 -%}
  65.     {%- set isStationPage = app.request.attributes.get('_route') == "profile_list.list_by_station" -%}
  66.     {# {%- set isShowTopSeo = (isFirstPage and onlyThisPageSeoShow) or isIndexPage -%}
  67.     {%- set isShowBottomSeo = (isFirstPage and onlyThisPageSeoShow) or isIndexPage -%} #}
  68.     {%- set isShowTopSeo = false -%}
  69.     {%- set isShowTopOnBottomSeo = true -%}
  70.     {%- set isShowBottomSeo = true -%}
  71.     {{- knp_menu_render('breadcrumbs', {'template': '_menu/breadcrumbs.html.twig'}) -}}
  72.     <header class="list_heading">
  73.         <h1 class="border-line list_heading__title">{{ seo_heading() ? seo_heading() : 'Проститутки города Москва' }}</h1>
  74.         <span class="list_heading__count">{% trans with {'count': profiles.totalCount} from 'profile_list' %}profile_count{% endtrans %}</span>
  75.     </header>
  76.     {# <div class="visually_hidden">
  77.         <svg class="profile_filter__item__button__icon" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 24">
  78.             <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="#fff"/>
  79.         </svg>
  80.     </div> #}
  81.     <div aria-hidden="true" class="no-display" style="display: none;">
  82.         <svg xmlns="http://www.w3.org/2000/svg">
  83.             <symbol id="close" viewBox="0 0 25 24">
  84.                 <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="#fff"/>
  85.             </symbol>
  86.             <symbol id="expand" viewBox="0 0 25 24">
  87.                 <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="#fff"/>
  88.             </symbol>
  89.             <symbol id="range" viewBox="0 0 25 24">
  90.                 <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"/>
  91.             </symbol>
  92.         </svg>
  93.     </div>
  94.     {%- if isShowTopSeo -%}
  95.         {{- include('components/seo_text.html.twig', { "type": 'top', "noindex": true }) -}}
  96.     {%- endif -%}
  97.     {%- set isArchivePage =  'profile_list.list_archived' in app.request.attributes.get('_route') -%}
  98.     {# {% set isFormExist = profile_filter_form is defined and not isArchivePage %}
  99.     {% if isFormExist %}
  100.         <noindex>
  101.             <button class="filter_hide_button rounding" type="button" id="filter_hide_button">
  102.                 <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>
  103.                 <span class="filter_hide_button__text" data-filter-hide-text-show>Показать фильтры</span>
  104.                 <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>
  105.             </button>
  106.             <div class="filter_hide_block" id="filter_hide_block">
  107.                 {# Форма полей фильтрации #!}
  108.                 {{ form_start(profile_filter_form, {
  109.                     'attr': {
  110.                         'id': 'filter-form',
  111.                         'class': 'filter_form',
  112.                         'data-process-url': path('profile_ctr.increase_shows'),
  113.                         'data-main-class': 'profile_filter'
  114.                     }
  115.                 }) }}
  116.                     {{ include('ProfileList/filter/form.partial.twig', {filterData: profile_filter_form.vars.value}) }}
  117.                 {{ form_end(profile_filter_form) }}
  118.             </div>
  119.             <div class="profile_filter__tags__container fade_slider__container">
  120.                 <div class="profile_filter__tags d-none fade_slider" id="filter_tags"></div>
  121.             </div>
  122.             <div class="profile_filter__line" id="filter_line">
  123.                 <div class="profile_filter__line__title">Найдено <span class="profile_filter__line__title__count">{{ profiles.totalCount }} {{ profiles.totalCount|incline_numeral(['анкета', 'анкеты', 'анкет']) }}</span></div>
  124.                 <button class="profile_filter__line__reset" type="button" id="filter_line_reset">
  125.                     Сбросить фильтры
  126.                     <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>
  127.                 </button>
  128.             </div>
  129.         </noindex>
  130.     {% endif %} #}
  131.     {# {% if source is defined and source and source_default != 'station' %}
  132.         <div class="empty-category level d-flex overflow-hidden mb-4 rounding">
  133.             <div class="empty-category__icon d-flex align-items-center justify-content-center">
  134.                 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 34 30"><path fill="#FF3F40" fill-rule="evenodd" d="M.5 29.25L17 .75l16.5 28.5H.5zm27.8-3L17 6.73 5.7 26.25h22.6zm-12.8-4.5v3h3v-3h-3zm0-9h3v6h-3v-6z" clip-rule="evenodd"/></svg>
  135.             </div>
  136.             <div class="flex-fill px-3 px-sm-4 py-3 d-flex align-items-center">
  137.                 <p class="m-0">
  138.                     {% if source == 'county' %}К сожалению, все девушки из округа
  139.                         <a href="{{ category_url }}">{{ county.name }}</a>
  140.                         сейчас отдыхают, посмотрите проституток из других округов города
  141.                         {{ city.name|trans }}.
  142.                     {% endif %}
  143.                     {% if source == 'district' %}К сожалению, все девушки из района
  144.                         <a href="{{ category_url }}">{{ district.name }}</a>
  145.                         сейчас отдыхают, посмотрите проституток из других районов города
  146.                         {{ city.name|trans }}.
  147.                     {% endif %}
  148.                     {% if source == 'station' %}К сожалению, все девушки работающие вблизи метро
  149.                         <a href="{{ category_url }}">{{ station.name }}</a>
  150.                         сейчас отдыхают, посмотрите проституток у других станций метро в этом районе города
  151.                         {{ city.name|trans }}.
  152.                     {% endif %}
  153.                     {% if source == 'approved' or source == 'with_comments' or  source == 'with_video' or source == 'elite' or source == 'with_selfie' %}
  154.                         {% if source == 'approved' %}
  155.                             {% set source_name = '<a href="' ~ path('profile_list.list_approved', {city:city.uriIdentity}) ~ '">Проверенные анкеты</a>' %}
  156.                         {% elseif source == 'with_comments' %}
  157.                             {% set source_name = '<a href="' ~ path('profile_list.list_with_comments', {city:city.uriIdentity}) ~ '">Анкеты с отзывами</a>' %}
  158.                         {% elseif source == 'with_video' %}
  159.                             {% set source_name = '<a href="' ~ path('profile_list.list_with_video', {city:city.uriIdentity}) ~ '">Анкеты с видео</a>' %}
  160.                         {% elseif source == 'with_selfie' %}
  161.                             {% set source_name = '<a href="' ~ path('profile_list.list_with_selfie', {city:city.uriIdentity}) ~ '">Анкеты с селфи</a>' %}
  162.                         {% elseif source == 'elite' %}
  163.                             {% set source_name = '<a href="' ~ path('profile_list.list_for_elite_girls', {city:city.uriIdentity}) ~ '">Элитные проститутки</a>' %}
  164.                         {% else %}
  165.                             {% set source_name = '' %}
  166.                         {% endif %}
  167.                         {% if source_default == 'approved' %}К сожалению, все
  168.                             <a href="{{ category_url }}">проверенные девушки</a>
  169.                             сейчас отдыхают, посмотрите раздел
  170.                             {{ source_name|raw }}
  171.                         {% endif %}
  172.                         {% if source_default == 'with_comments' %}К сожалению, все
  173.                             <a href="{{ category_url }}">девушки, у которых есть отзывы</a>
  174.                             сейчас отдыхают, посмотрите раздел
  175.                             {{ source_name|raw }}
  176.                         {% endif %}
  177.                         {% if source_default == 'with_video' %}К сожалению, все
  178.                             <a href="{{ category_url }}">девушки, у которых есть видео</a>
  179.                             сейчас отдыхают, посмотрите раздел
  180.                             {{ source_name|raw }}
  181.                         {% endif %}
  182.                         {% if source_default == 'with_selfie' %}
  183.                             К сожалению, все <a href="{{ category_url }}">девушки, у которых есть селфи</a> сейчас отдыхают, посмотрите раздел {{ source_name|raw }}
  184.                         {% endif %}
  185.                     {% endif %}
  186.                     {% if source == 'by_params' %}К сожалению, раздел пуст. Посмотрите другие анкеты, которые мы подобрали для Вас.
  187.                     {% endif %}
  188.                     {% if source == 'service' %}К сожалению, все девушки, которые практикуют услугу
  189.                         <a href="{{ category_url }}">{{ service.name }}</a>
  190.                         сейчас отдыхают. Но мы подобрали для Вас девушек которые не против оказать Вам похожие услуги, взгляните!
  191.                     {% endif %}
  192.                     {% if source == 'city' %}К сожалению, данный раздел пуст. Взгляните на другие анкеты, которые мы нашли для Вас в городе
  193.                         {{ city.name|trans }}.
  194.                     {% endif %}
  195.                     {% if source == 'country' %}К сожалению, данный раздел пуст. Взгляните на анкеты которые мы подобрали для Вас.
  196.                     {% endif %}
  197.                     {% if source == 'massage_service' %}К сожалению, все девушки для которых массаж — это призвание сейчас отдыхают. Посмотрите проституток, которые также готовы сделать Вам массаж.
  198.                     {% endif %}
  199.                 </p>
  200.             </div>
  201.         </div>
  202.     {% endif %} #}
  203. {# {{ dump({source: source, source_default: source_default})}} #}
  204.     <div id="filter-form-root">
  205.         <button class="filter_hide_button rounding" type="button" id="filter_hide_button">
  206.             <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>
  207.             <span class="filter_hide_button__text" data-filter-hide-text-show>Показать фильтры</span>
  208.             <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>
  209.         </button>
  210.         <div class="filter_hide_block" id="filter_hide_block">
  211.             {# Форма полей фильтрации #}
  212.             <form name="profile_filter_form" method="post" action="/filter/" class="filter_form" id="filter-form" data-process-url="/profile_ctr/increase-shows/" data-main-class="profile_filter">
  213.                 <div class="profile_filter">
  214.                     <button class="profile_filter__mobile_button" type="button"><span class="profile_filter__mobile_button__text">Показать фильтры</span> <svg class="profile_filter__mobile_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" fill="#fff"></path></svg></button>
  215.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  216.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  217.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  218.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  219.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  220.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  221.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  222.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  223.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  224.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  225.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  226.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  227.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  228.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  229.                     <div class="profile_filter__item rounding profile_filter__item--loading"></div>
  230.                 </div>
  231.             </form>
  232.         </div>
  233.         <div class="profile_filter__tags__container fade_slider__container">
  234.             <div class="profile_filter__tags d-none fade_slider" id="filter_tags"></div>
  235.         </div>
  236.         <div class="profile_filter__line" id="filter_line">
  237.             <div class="profile_filter__line__title">Найдено <span class="profile_filter__line__title__count">{{ profiles.totalCount }} {{ profiles.totalCount|incline_numeral(['анкета', 'анкеты', 'анкет']) }}</span></div>
  238.             <button class="profile_filter__line__reset" type="button" id="filter_line_reset">Сбросить фильтры <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>
  239.             </button>
  240.         </div>
  241.     </div>
  242.     {%- set fakeStationList = source_default is defined and source is defined and source_default == 'station' and source_default != source -%}
  243.     <div class="models-items-row flex-wrap" id="profile-list" data-show-more-append>
  244.         {%- block profileList -%}
  245.             {%- include 'ProfileList/list.profiles.html.twig' with {fakeStationList: fakeStationList|default(false)} -%}
  246.         {%- endblock -%}
  247.     </div>
  248.     {%- if profiles and profiles.totalCount > profiles.currentPage * profiles.currentLimit -%}
  249.         {%- block showMore -%}
  250.             {%- include 'ProfileList/_show_more.profiles.html.twig' -%}
  251.         {%- endblock showMore -%}
  252.     {%- endif -%}
  253.     {{- porpaginas_render(profiles) -}}
  254.     {# {% if profiles and profiles.currentPage >= 2 %}
  255.         {{ include('components/_profile_recommendations.html.twig') }}
  256.     {% endif %} #}
  257.     {# Реки #}
  258.     {# {%- if profiles and profiles.currentPage >= 2 -%} #}
  259.         <div id="recommendations">
  260.             {%- set excludeRecommendationProfileIds = profiles|map(p => p.id)|join(', ') -%}
  261.             {%- include 'recommendations/_profile_recommendations.html.twig' with {'hidden': not (profiles and profiles.currentPage >= 2)} -%}
  262.         </div>
  263.     {# {%- endif -%} #}
  264.     {# {% set stations_circle = station_pages_linkage_circle() %}
  265.     {% if stations_circle is not null %}
  266.         <div class="station-pages-linkage-circle">
  267.             {% 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 %}
  268.             {% if stations_circle[0] is defined and stations_circle[0] is not null
  269.                 and stations_circle[1] is defined and stations_circle[1] is not null %}<i class="sep"></i>{% endif %}
  270.             {% 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 %}
  271.         </div>
  272.     {% endif %} #}
  273.     {%- if isShowTopOnBottomSeo -%}
  274.         {{- include('components/seo_text.html.twig', { "type": 'top', "noindex": true }) -}}
  275.     {%- endif -%}
  276.     {%- if isShowBottomSeo -%}
  277.         {{- include('components/seo_text.html.twig', { "type": 'bottom', "noindex": true }) -}}
  278.     {%- endif -%}
  279.     {# {% if profiles.currentPage == 1 and app.request.get('_route') == 'profile_list.list_by_station' %}
  280.         <div class="location_counters" id="location_counters">
  281.             {{ knp_menu_render('locations_counters', {'template': '_menu/locations_counters_block.html.twig'}) }}
  282.         </div>
  283.     {% endif %} #}
  284. {%- endblock -%}
  285. {%- block javascripts -%}
  286.     <script>
  287.         window._lD = {
  288.             setLastViewedListing: '{{ app.request.attributes.get('_route') }}',
  289.             cityUrl: "{{city.uriIdentity}}",
  290.         };
  291.     </script>
  292.     {{- parent() -}}
  293.     {%- set route = app.request.get('_route') -%}
  294.     {%- if 'profile_search.page' not in route and not (app.request.method == 'GET' and app.request.isXmlHttpRequest()) -%}
  295.         <script>
  296.             window._mp = {
  297.                 formUrl: "{{ path('profile_filters.form', {city: city.uriIdentity}) }}",
  298.                 setLastViewedListing: '{{ app.request.attributes.get('_route') }}',
  299.                 listingData: [
  300.                     ['listing', '{{ listing }}'],
  301.                     ['listingParams', '{{ listing_parameters|json_encode() }}'.replaceAll('&quot;', '"')],
  302.                 ],
  303.                 stations: {
  304.                     {%- for station in stations() -%}
  305.                         "{{ station.name|trans }}": "{{ path('profile_list.list_by_station', {'city': station.city.uriIdentity, 'station': station.uriIdentity}) }}"{% if not loop.last %},{% endif %}
  306.                     {%- endfor -%}
  307.                 }
  308.             }
  309.             document.addEventListener("DOMContentLoaded", () => {
  310.                 new window._filterLoader({
  311.                     formUrl: "{{ path('profile_filters.form', {city: city.uriIdentity}) }}",
  312.                     defaultProfilesCount: "{{ profiles.totalCount }}"
  313.                 });
  314.                 {# {% if profiles and profiles.totalCount > 0 %}
  315.                     {%- set profilesId = profiles|map(p => p.id)|join(',') -%}
  316.                     window.increase_shows({
  317.                         profiles: [{{ profilesId }}],
  318.                         route: '{{ app.request.attributes.get('_route') }}',
  319.                     })
  320.                 {% endif %} #}
  321.             })
  322.         </script>
  323.         {# {% endif %} #}
  324.     {%- endif -%}
  325. {%- endblock -%}