Bodysite — 15 лет! Скидка 15% на все готовые решения нашей разработки! Перейти
База знаний
Баг-репорты

Мультивитрина + SEO фильтр $category-name - не верно подставляет

Serghey
28 ноября 2022 03:24
+1
  1. 1. Если не задан фильтр в плагине, то находясь не на основной витрине, например на /ru/, пользователь выбирает значения фильтрации, ТО в этом блоке <div class="in-blocks__title-name category-name">{$category.name}</div> меняется название {$category.name} с того названия которое сейчас на витрине, на {$category.name} основной витрины

  2. 2. При очистке всех значений характеристик - не возвращается {$category.name} - соответствующее витрине, на которой находится пользователь… это касается: кнопок - ОЧИСТИТЬ, так же если просто снять все CHECKBOX со значений характеристик - то же {$category.name} - принимает значение основной витрины…


7 комментариев
Поддержка Bodysite
Поддержка Bodysite
+1

Добрый день. Ожидаем в заявке по поддержке доступы от вашего сайта для диагностики. Спасибо.

Serghey
+2

Здравтсвуйте! Что именно Вы хотите увидеть? Я предоставлю скриншоты. Лицензии куплены, не переживайте., много Ваших лицензий, большинство, у нас куплено и применяются мною на разных проектах.

У вас на support почте есть от меня письма, где я подробно указываю параметры сборки проекта, какие версии каких компонентов я использую, какой сервер и какой php

Так же на ту же почту я отправлял запись экрана с визуализацией проблемы6 что бы протестировать данный БАГ вам достаточно будет две витрины, SEO - filter (проблема в нем, так как при отключении компонента SEO-filter и срабатывании событий по фильтрации - этот баг не проявляется, category.name - остается без изменений, а значит этот баг вызывает событие навешенное скриптами компонента SEO-filter)

Для родительской категории, к которой применяется фильтрация указаны в настройках две языковые версии названия..

Для фильтров созданных но не имеющих правил указаны по витринно такие заглушки:

Заголовок Н1 ->

 {$category.name} {$seo_name} 

Шаблон inSales - базово имеет интергацию компонентов от бодисайт, включая тот, о котором тут речь. Более того, я проверил -

【 Убедитесь, что название категории расположено в блоке с классом 'category-name'】 и убедился название расположено верно


более того, я вывел принт массива,

{$c = $wa->shop->category(52)}

<pre>

    {print_r($c)}


</pre>

что бы посмотреть, что происходит с category.name, вдруг локальная версия второй витрины записана под каким то другим ключем, но нет, php на моменте сборки страницы выбирает под ключ name: значение той языковой версии, по которой приходит клиентский запрос.. А значит, если бы Ваш скрипт подбирал category.name по DOMу ориентируясь на класс category-name то он бы подобрал contentTEXT. (innerHTML) вообщем текстовое значение под тегом с классом category-name подобрал бы верное, НО НЕТ - при срабатывании события фильтрации или очищения фильтрации в


<div class="in-blocks__title-name category-name">{$category.name}</div>

возвращается значение присущее основной, по роутингу, языковой версии...


Serghey
+2

Важное уточнение!!!

1. При прямом запросе URL сформированный SEO фильтром - отдача идет правильная.

2. Если клиент вызывает событие по фильтрации товаров в каталоге, первично формируется category-name для главное витрины, но если обновить страницу - все без изменений, КРОМЕ

3. Кроме если очищаем фильтр, если очистили фильтр - category-name подставляет изначально главную языковую версию, после обновления страницы возвращает категори наме в соответсвии с локал

Поддержка Bodysite
Поддержка Bodysite
+1

> Что именно Вы хотите увидеть?

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

> я подробно указываю параметры сборки проекта, какие версии каких компонентов я использую, какой сервер и какой php

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

> Для родительской категории, к которой применяется фильтрация указаны в настройках две языковые версии названия..

Вероятно, мультиязычность настроена при помощи стороннего решения. Наши плагины не поддерживают работу с MyLang.

Serghey
+2

Вы внимательно прочитали мое описание?

1. Я воссоздал данную проблему на голой сборке, при использовании стандартного шаблона: гипермаркет и дефолт3 куда поставил лишь MyLang + SEO-filter

2. Выводим массив категории:

{$c = $wa->shop->category(52)}
<pre>

    {print_r($c)}

</pre>

И что мы видим:


Array
(
    [id] => 52
    [left_key] => 11
    [right_key] => 18
    [depth] => 2
    [parent_id] => 51
    [name] => Реле напряжения
    [meta_title] => 
    [meta_keywords] => 

$category.name - выводится в нужной локали...

[name] => Реле напряжения

Но SEO-filter, видимо не на уровне JS, а на уровне БД и php подбирает $category.name - с основной витрины???? Я только начал изучать исходники компонента SEO-filter

как я понимаю, SEO-filter записывает $category.name только базовой витрины и не в момент рендеринга страницы, а заранее из БД? так как Рендеринг страницы выдается из массива, в котором [name] записан верно



То , что Вы охренительно невдувательно опупенные чуваки, БОГИ вебасиста - я знаю и без подсказок, тем не мение ... в 2022м году создавать компоненты для продукта, который представлен в мультивитринном, и мультиязычном исполнении без поддержки мультиязычности ....

Вероятно, мультиязычность настроена при помощи стороннего решения

Какое у вас решение для мультиязычности?



Serghey
+2

дело ведь не в дружбе со сторонним компонентом...

в момент обработки сервером клиентского запроса и отдачи на клиент по запросу ответа, страница рендерится из массива

$wa->shop->category(category_id)}

и в этом массиве

Array
(
    [id] => 52
    [left_key] => 11
    [right_key] => 18
    [depth] => 2
    [parent_id] => 51
    [name] => Реле напряжения
    [meta_title] => 
    [meta_keywords] => 

{$category.name} - уже соответсвует запрашиваемой клиентом URL (локали, витрине, как хотите называйте) ..

Но, кривоватая логика работы компонента SEO фильтр, отдает на клиент {$category.name} не из текущего массива, а , как я понял, из БД ссылаясь на основную витрину запрашеваемго ID категории...

по сути это не является: "мультиязычность настроена при помощи стороннего решения"

Тут больше подходит: "наша логика на скорую руку без зазора на расширение и адекватность работы функционала и плевать нам, что на улице 2022 год"


Гирей
+1

Аналогичная проблема!

Считаю что Сергей все подробно описал, нужно решить эту проблему!

Добавить комментарий
Чтобы добавить комментарий, войдите в личный кабинет