Anonymous
if (preg_match("#.*?(\d+)#", $_REQUEST[$req], $matches)) { $id = $matches[1]; if($uri){ $c = $modx->newQuery(HotNews::class); $c->where(['id' => $id]); //$item = $modx->getIterator(HotNews::class, $c); if ($c->prepare() && $c->stmt->execute()) { $result = $c->stmt->fetchAll(PDO::FETCH_ASSOC); //var_dump($result); die; } } if ($uri) { $_GET['id'] = $uri; $modx->sendForward($id); } } Это в плагине, не пойму, правильно передаю параметр в сниппет?
Anonymous
Там где $uri ошибка, это я сейчас менял для ясности, там конечно $id должно стоять.
Anonymous
И с таким в общем кодом у меня сейчас по урлу детальной записи сообщение "Site temporarily unavailable."
Anonymous
Список новостей работает.
Anonymous
*Сначала проверяю существование записи в БД, если да, то переход.
Артур
Я не понимаю как связаны страницы из пагинации и ресурсы на сайте? Грубо говоря, ты разбил список новостей на страницы и как третья страница в этом списке связана с ресурсом у которого id=3?
Алексей
вы номер страницы с Id Ресурса не путаете?
Anonymous
Страницы из пагинации /news/page-n/ Детальная страница /news/12345/ Могу я передать данные 12345 не вызывая 404 ошибку в мой сниппет, или хотя бы просто продолжить обработку сайта?
Anonymous
для того чтобы url работал в таком формате (/news/12345/)плагин на обработку ошибки так или иначе нужен.
Ам, в смысле не понял. У меня плагин и так ошибку обрабатывает, событие OnPageNotFound, надо чтобы такой урл не считался ошибкой. Может надо из плагина запускать сниппет, типа $modx->runSnippet('mySnippet', $myParams); ?
Anonymous
А зачем ты вообще это делаешь?
Вывести детальную страницу новости. Список есть, постраничка есть, детальной нет.
Anonymous
А данные для детальной страницы как хранятся?
Кастомная таблица кастомного компонента на modExtra. В админке всё работает.
Anonymous
еще тут https://bezumkin.ru/sections/tips_and_tricks/2918/
А вот это очень интересно.
Артур
Кастомная таблица кастомного компонента на modExtra. В админке всё работает.
У тебя должен быть ресурс на который ты в плагине будешь перенаправлять пользователя. И передавать этому ресурсу данные которые нужно вывести. А ты получаешь из ссылки id записи в своей таблице и пытаешь редиректить на него, но ресурса-то с таким id не существует.
Anonymous
У тебя должен быть ресурс на который ты в плагине будешь перенаправлять пользователя. И передавать этому ресурсу данные которые нужно вывести. А ты получаешь из ссылки id записи в своей таблице и пытаешь редиректить на него, но ресурса-то с таким id не существует.
Т.е. у меня есть страница /news с ид 37 и можно создать типа /newsDetail с каким-то ид и на неё в случае вхождения id в плагине отправлять? А там поставить сниппет с выводом детальной новости?
Anonymous
Надо перекурить...
Алексей
удобнее /news/12412 explode проще делать.
Алексей
делайте как вам понятнее.
Anonymous
Возник вопрос по теме постраничной навигации. Вывод: [[pdoPage? &element=`news` &limit=`10` &cache=`1` &cacheTime=`3600` &pageLinkScheme=`/[[+pageVarKey]][[+page]]/` &pageLimit=`9`]] Сначала идёт так: /news/page2/ Потом начинают пейджи дублироваться в ссылке: /news/page2/page2/ и подобное. Почему?
Anonymous
а если по умолчанию оставить - все в порядке?
Без &pageLinkScheme=`/[[+pageVarKey]][[+page]]/` ссылки так /news/page3/?page=5
Алексей
ааа, значит по другому вопрос: /[[+pageVarKey]]-[[+page]] - если так написать работает?
Evgeniy
/news/page3//page5
А pdoPage у вас лежит в нужном контейнере? Там div с id pdopage
Anonymous
А pdoPage у вас лежит в нужном контейнере? Там div с id pdopage
Да, не знал, что это даже важно, но в нём.
Evgeniy
Да, не знал, что это даже важно, но в нём.
Попробуйте ещё вызвать него не кешированным !
Evgeniy
Нет изменений.
черт, сразу не заметил
Evgeniy
слеш в конце уберите
Evgeniy
/[[+pageVarKey]][[+page]]/
Anonymous
/[[+pageVarKey]][[+page]]/
Его нет уже.
Anonymous
Есть мысль, что в плагине переменная pageVarKey странно отрабатывает.
Evgeniy
Его нет уже.
ну, я точно знаю, что слеш в конце дает такой результат) видимо его дает что-то еще мб кэш почистить?
Алексей
Уже пробовал много раз, всё равно /news/page3//page5
а ctrl+u в коде - тоже так отображает?
Алексей
если да, то явно что-то не верно формирует ссылки
Evgeniy
если ссылка вида news/page-2/ то при переходе на следующую будет двойной слеш у вас нет редиректа случаем на / в конце?
Anonymous
Алексей
и?
Алексей
что формирует?
Evgeniy
Пробовал.
покажите еще раз код вызова pdopage (побольше инфы сверху и снизу) и плагин для чпу
Anonymous
покажите еще раз код вызова pdopage (побольше инфы сверху и снизу) и плагин для чпу
<div id="pdopage"> [[!+page.nav]] <div class="site-content__content__news_item"> [[!pdoPage? &parents=`0` &element=`news` &limit=`10` &cache=`1` &cacheTime=`3600` &pageLinkScheme=`/[[+pageVarKey]][[+page]]` &pageLimit=`9`]] </div> [[!+page.nav]] </div>
Алексей
/news/page3/page5 без слэша на конце.
не может он такое формировать, если так написать: /[[+pageVarKey]]-[[+page]]
Anonymous
$req = $modx->getOption('request_param_alias'); $pageVarKey = 'page'; $idDetail = 0; if (preg_match("#.*?({$pageVarKey}(\d+))#", $_REQUEST[$req], $matches)) { $uri = str_replace($matches[1], '', $matches[0]); $id = 0; if (!$id = $modx->findResource($uri)) { $id = $modx->findResource(rtrim($uri, '/')); } if ($id) { $_GET[$pageVarKey] = $_REQUEST[$pageVarKey] = $matches[2]; var_dump($_REQUEST[$req]); $modx->sendForward($id); } }
Anonymous
Anonymous
Но, минус мне не нужен, именно pageN надо, индексированные урлы.
Алексей
Если делать с минусом будет так /news/page-4/page-5
чудно. теперь все ясно. что ничего не ясно.
Evgeniy
уберите весь кеш из вызова еще, на всякий)
Anonymous
чудно. теперь все ясно. что ничего не ясно.
При /[[+pageVarKey]]-[[+page]] урл четвёртой страницы /news/page-4 , а ссылка на пятую будет /news/page-4/page-5
Evgeniy
Никаких изменений.
ну.. пределагаю чуть длиннее путь почистите папку кеш прямо на сервере уберите pageLinkScheme. Работает нормально? удалить плагин, добавьте &pageLinkScheme=/[[+pageVarKey]]-[[+page]] всё также?
Anonymous
Решено: if (preg_match("#.*?({$pageVarKey}(\d+))#", $_REQUEST[$req], $matches)) { $uri = str_replace($matches[1], '', $matches[0]); $id = 0; // Сначала как есть, со слешем на конце if (!$id = $modx->findResource($uri)) { $id = $modx->findResource(rtrim($uri, '/')); } // переопределяю урл так $_REQUEST[$req] = str_replace('/', '', $uri); if ($id) { $_GET[$pageVarKey] = $_REQUEST[$pageVarKey] = $matches[2]; $modx->sendForward($id); } }
Anonymous
ИМХО костыль-костылище, но работает.
Evgeniy
ну т.е. редирект на / в конце и вы его просто убираете тут
Evgeniy
может можно было &pageLinkScheme=/[[+pageVarKey]]-[[+page]] тут слэш слева убрать? и достаточно
Anonymous
[[!pdoPage? &parents=`0` &element=`hotnews` &limit=`10` &cache=`1` &cacheTime=`3600` &pageLinkScheme=`/[[+pageVarKey]][[+page]]` &pageLimit=`9`]] Вызов такой, без слэша на конце.
Evgeniy
[[!pdoPage? &parents=`0` &element=`hotnews` &limit=`10` &cache=`1` &cacheTime=`3600` &pageLinkScheme=`/[[+pageVarKey]][[+page]]` &pageLimit=`9`]] Вызов такой, без слэша на конце.
слэш вначале попробуйте убрать, пожалуйста) и закомеентируйте то что в плагине сделали)
Evgeniy
мне ради интереса узнать)
Anonymous
может можно было &pageLinkScheme=/[[+pageVarKey]]-[[+page]] тут слэш слева убрать? и достаточно
Может я конечно сейчас напутаю в памяти, но вроде так оно у меня криво работало. Попробовал. /newspage5 тогда выходит.
Evgeniy
Может я конечно сейчас напутаю в памяти, но вроде так оно у меня криво работало. Попробовал. /newspage5 тогда выходит.
спасибо) ну ладно, работает и хорошо) Можно костыль тут упомянуть потом еще кто-то ведь гуглить будет) https://modx.pro/help/22906?ysclid=l8ljtlbg4x359970551
Pavel
Подскажите плиз как ужать изображение перед загрузкой через formit? Изображение загружаю через хук