$tmp = explode('/', $request);
if (end($tmp) == '') {
array_pop($tmp);
}
if (count($tmp) >= 2) {
switch ($tmp[0]) {
//Профиль пользователя
case 'users':
//манипуляции с именем пользователя:
//1. ищете подходящего пользования
//2. если он не существует - возвращаем 404, если существует - идем дальше
//3. приводим адресную строку к единому формату ('имя, Имя, ИМЯ' -> 'Имя')
//4. Заносите в плейсхолдер (user_id, user_name) значение пользователя
//5. подменяете страницу при помощи sendForward на страницу users
//опционально: здесь же можно проверять наличие 3-ей и более подстрок запроса
//(posts, comments, favorites и тд)
...
3. На странице users проверяете наличие соответствующих плейсхолдеров (user_id, user_name) — если они есть, то отображаете шаблон страницы пользователя, если их нет — общую страницу пользователей
Из коробки (помимо прочих) доступен фильтр vendors, а фильтр country — нет. Поэтому, если вы хотите отфильтровать товары по стране производителя, вам необходимо расширить класс фильтрации, дописав в нем соответствующую логику.
2. С помощью кастомной маршрутизации на событие OnPageNotFound перехватываете запрос пользователя и, если он подходит под формат страницы пользователя (/users/$username), то подменяете страницу:
3. На странице users проверяете наличие соответствующих плейсхолдеров (user_id, user_name) — если они есть, то отображаете шаблон страницы пользователя, если их нет — общую страницу пользователей
github.com/fenom-template/fenom/blob/master/docs/ru/tags/switch.md
Документация по mFilter2 (чанки и оформление) — создаете нужные чанки (с необходимыми классами и стилями) и прописываете их в вызове mFilter2.
Из коробки (помимо прочих) доступен фильтр vendors, а фильтр country — нет. Поэтому, если вы хотите отфильтровать товары по стране производителя, вам необходимо расширить класс фильтрации, дописав в нем соответствующую логику.
Как альтернатива, если у вас включен fenom, можно разложить тв-поле на месте вообще без сниппета:
Если вас интересует, как именно реализовать это в связке с getProducts/другим сниппетом, не поддерживающим возможность присоединения таблиц, то потребуется отредактировать сниппет voteforms и при изменении рейтинга дублировать необходимое вам значение в тв-поле ресурса.
В противном случае — сниппет внутри сниппета, но это так себе вариант: лучше перейти на pdoTools.
Ну, каких-то недоделанных фич ждать не приходится (то же голосование анонимами). Но для системы рейтингов у ресурсов лично мне его хватает.)
Вопрос с вызовом сниппета внутри getResources решается путем leftJoin'a нужных таблиц.
Другое дело, что разница на большинстве типичных проектов совершенно незначительна (если у вас проект размеров вконтакта — тогда другой разговор), а уж экономить на названии чанков — что-то совсем сродни паранойи.
Решение:
— перед строкой
-добавить:
1. Дополнение работает с https, а вот представленный здесь сервис проверки last-modified.com/ru/ — нет. (рабочая альтернатива)
2. Дополнение перестает отдавать актуальную информацию, если на сайте используется MinifyX или любые сниппеты, возвращающие случайные переменные, как то:
— плейсхолдеры вида [^t^]
— любые функции рандома
— капча
— …
Способ решения проблемы:
— Заключаем актуальную информацию (без перечисленных элементов из пункта 2) в тег main:
— В плагине lmims заменяем строку
на строку:
3. Вероятно, у плагина есть проблемы с возвращением результата при 404/403 ошибки.