Владимир
С нами с 22 мая 2018; Место в рейтинге пользователей: #449- Заметки 0
- Комментарии 1
Вчера в 14:24
это для старой версии, новые версии v5 без jquery
Доработка Fancybox для вывода видео с Rutube 3
11 марта 2025, 15:00
Сам разобрался, добавил скрытое поле input для псевдонима и оттуда подтягивал значение в админку, По поводу кэша тоже разобрался, после сохранения и и...
Как сделать загрузку изображения с фронтенда в tv поле 3
10 марта 2025, 21:48
В Modx есть очереди, можно было не делать отдельную таблицу, а использовать их. Но это имеет смысл только если на создание уходит больше 30 секунд, чт...
Создание товаров через ЛК из контекста web 6
08 марта 2025, 08:06
Пока нет такого функционала, но постараюсь в ближайшее время добавить
Cabinet 13
07 марта 2025, 23:17
Про код. Про «научиться писать код понятный и логичный». Не в тему поста выше, ситуация вчера/сегодня и смех и грех.
Вчера пришел запрос от Заказчика...
Плюсы и минусы Vue и gtsAPI 23
07 марта 2025, 22:34
Уроки по синхронизации с Битрикс24 имеют весьма опосредованное отношение к Modx. Да и основная сложность при работе с Битрикс24 это структура хранения...
Виджеты в админке или как добавить свою кнопку 6
07 марта 2025, 21:49
Абсолютные пути будут поправлены со следующей версией, готовлю обновление в плане управления темой, не только переключалка тем будет…
[EclipseUI] Обновление до версии 1.1.3 Кнопка переключения тем. 8
07 марта 2025, 04:59
Я делал ровно такое через тегирование, компонентом tvSuperSelect.
На другом сайте клиники пытался сделать через taxonomy, но там что-то пошло не та...
Сайт мнгопрофильного медицинского центра на minishop2 2
06 марта 2025, 13:02
Теперь всё понятно.
Спасибо за разъяснение.
[SendIt 2.2.0] Авторизация по любому полю. Генерация username. 10
06 марта 2025, 11:30
Получается, что бы записать в заказы надо указать в input name="region"?
Как правильно раставить переменные для select в order MiniShop2? 4
Шаг 1.
Создается мультиселект-tv-поле (tv1) для страниц услуг, в котором выводятся все категории (в формате pagetitle==id)
Шаг 2.
Все страницы услуг создаются в едином разделе (во «всех услугах» или каком-то скрытом, например)
Шаг 3.
Создается тв-поле «id подходящих услуг» для категорий с услугами (tv2).
Это нужно для того, чтобы отображения списка подходящих услуг в категории происходила быстрее (не тратя время на where IN для каждой услуги).
Шаг 4.
Вешется плагин на создание/изменение страниц услуги, при котором в tv2 всех выбранных категории из tv1 переносился id сохраненной услуги.
Шаг 5.
Теперь нужно позаботимся о том, чтобы страницы услуг были доступны внутри любой из подходящих категорий. При помощи кастомной маршрутизации на событие OnPageNotFound вешаем подходящий вам паттерн.
Предположим, что все услуги имеют следующий вид ссылок:
Тогда логика будет примерно такая:
— срабатывает событие OnPageNotFound
— превращаем запрошенную ссылку в массив
— если длина массива == 3, а первый элемент в нем == 'services', то работаем дальше
— ищем страницу вида /services/(category_name)
— если находим, то ищем услугу с alias == (service_name)
— если находим и её, то из объекта найденной категории получаем значение tv2 и ищем в нем id услуги
— если есть совпадение, то делаем sendForward, иначе отпускаем плагин на 404.
Шаг 5.
Выводим список подходящих услуг в категории по принципу &resources=`[[*tv2]]`. В чанке вызова формируем ссылку на услуги примерно таким образом:
$_modx->resource.parent | url лучше сформировать вне вызова сниппета и передать готовый результат уже в него, чтобы не плодить кучу одинаковых запросов
Хлебные кроши.
Тут все просто, если у нас сгенерирована виртуальная страница через sendForward, то в плагине передаем в неё какой-либо свой плейсхолдер. Дальше от него в шаблоне формируются if-условия. В случае с хлебными крошками можно просто выводить их до «родителя» и дописывать текущую страницу в последнем пункте.
Карта сайта и СЕО
Тут у вас есть, условно, 2 важных момента:
1. Канонический url, во избежании дублей (link rel=«canonical»).
Можно указать или родной url ресурса (там, где они физически хранятся), или создать еще одно tv-поля для страниц услуги «основная категория» и формировать адрес в зависимости от неё.
В случае, если был выбран второй вариант, доступность услуг по «физическому» адресу нужно перекрыть (опять же, в шаблоне услуг можно проверять наличие плейсхолдера из плагина, и при его отсутствии создавать редирект).
2. Карта сайта.
Если с каноническим url был выбран вариант «физического адреса», то с картой не нужно проводить дополнительных манипуляций. В противном случае, физические адреса из вызова pdoSitemap-a нужно исключить и дополнительно сгенерировать виртуальные ссылки. (для минимализации времени генерации результата я бы разбил sitemap на 2 раздела (основные страницы и страницы услуг).