[VirtualPage] - Виртуальные страницы.
Реализует виртуальные страницы для MODx.
Планировался для modstore.pro/packages/users/userprofile, но руки дошли только сейчас.
Роутинг реализован на github.com/nikic/FastRoute
cоздание маршрута
Определены:
согласно FastRoute
например нам нужно задать страницу пользователя, пишем в маршрут
событие
Событие по наступлении которого срабатывает роутинг.
обработчик
Определены:
Все именованные параметры fastrouter можно получить в $_REQUEST. Ключ по умолчанию 'fastrouter'
при обработчике тип — ресурс, параметры также доступны в плейсходерах с префиксом vp.
Внимание
Пакет не рекомендую пока ставить на рабочие проекты. Подлежит обкатке…
ps. замечания и предложения по коду пожалуйста оставляйте тут — github.com/vgrish/virtualpage/issues
for php: ">=5.4.0"
Планировался для modstore.pro/packages/users/userprofile, но руки дошли только сейчас.
Роутинг реализован на github.com/nikic/FastRoute
cоздание маршрута
- метод запроса (GET | POST)
- маршрут (согласно FastRoute)
- событие
- обработчик
Определены:
- GET,POST
- GET
- POST
согласно FastRoute
например нам нужно задать страницу пользователя, пишем в маршрут
/users/{id:[0-9]+}.html
{id:[0-9]+} именованный параметр принимающий только цифрысобытие
Событие по наступлении которого срабатывает роутинг.
обработчик
Определены:
- ресурс — задействует метод sendForward
- динамический ресурс
- сниппет — обработает указанный сниппет и отдаст через exit
- чанк — обработает указанный чанк и отдаст через exit
Все именованные параметры fastrouter можно получить в $_REQUEST. Ключ по умолчанию 'fastrouter'
при обработчике тип — ресурс, параметры также доступны в плейсходерах с префиксом vp.
Внимание
Пакет не рекомендую пока ставить на рабочие проекты. Подлежит обкатке…
ps. замечания и предложения по коду пожалуйста оставляйте тут — github.com/vgrish/virtualpage/issues
for php: ">=5.4.0"
Поблагодарить автора
Отправить деньги
Комментарии: 181
Хорошая весчь.
Володя, а у тебя, случаем, руки до userProfile не дошли? А то денег я заплатил за компонент, а он через пень колоду работает.
Если бы ты включил голову — ты бы не задавал таких вопросов.
Как платил — так и работает… Еще вопросы есть?
Как платил — так и работает… Еще вопросы есть?
Володя, оно не работает, если установлен Office. Заплатил я тебе в полной мере. Вопросов к тебе после этого комментария больше нет.
вот и отлично!
Не самый удачный ответ человеку. Он бы может еще что то у тебя заказал и денюжку за работу дал. Не делается так. Это я как разработчик и как человек говорю.
у меня нет никакого желания продолжать какие либо выяснения… И ответ возможно не самый удачный, но я мотивирован так ответить.
Всем спасибо за мнение, что то объяснять я не намерен.
Всем спасибо за мнение, что то объяснять я не намерен.
Хм..., а разве userProfile был платным?
Ты не поверишь, но разработку бесплатных дополнений всегда кто-то оплачивает.
Или заказчик, деньгами, или разработчик, своим временем.
Или заказчик, деньгами, или разработчик, своим временем.
Отчего же, весьма верю) И с удовольствием оплачиваю.
А в чем суть виртуальных страниц?
Какова была задумка заказчика/исполнителя?
Какова была задумка заказчика/исполнителя?
Вывести по какому либо заданному маршруту страницу с данными, при этом как таковой самой страницы в дереве ресурсов не имеется.
т.е. это тот же документ с show_in_tree = 0 с отдельной страницей управления данными страницами/документами?
Нет.
В статье есть очень наглядный пример: /users/{id:[0-9]+}.html, это страница пользователя. Вы же не будете заводить отдельную страницу для каждого пользователя.
В статье есть очень наглядный пример: /users/{id:[0-9]+}.html, это страница пользователя. Вы же не будете заводить отдельную страницу для каждого пользователя.
есть два обработчика:
— ресурс — задействует метод sendForward
— сниппет — обработает указанный сниппет и отдаст через exit
в первом случае это ресурс (указываете в настройках обработчика), в котором вы вызываете какой либо сниппет, и в зависимости от полученных параметров у вас выводит информацию.
во втором случае даже нет ресурса, просто отдача результата сниппета на страницу.
— ресурс — задействует метод sendForward
— сниппет — обработает указанный сниппет и отдаст через exit
в первом случае это ресурс (указываете в настройках обработчика), в котором вы вызываете какой либо сниппет, и в зависимости от полученных параметров у вас выводит информацию.
во втором случае даже нет ресурса, просто отдача результата сниппета на страницу.
Установил через репозитарий modstore.pro, на сайте такая ошибка:
Версия MODX 2.3.3, PHP 5.3.29
Что я делаю не так?
Версия MODX 2.3.3, PHP 5.3.29
Что я делаю не так?
fastroute: «php»: ">=5.4.0"
Только что столкнулся вот с таким поведением.
Допустим, нужно вывести форму редатирования профиля пользователя (или любого кастомного объекта).
Урл страницы имеет вид:
На нужном ресурсе грузится форма редактирования, в которую подставляются значения нужного объекта (который был предварительно найден и отрендерен собственным сниппетом).
Т.е. я к чему — всё работает, всё супер.
Но.
Как только я нажимаю кнопку сабмита в форме — всё, пиши пропало — отдаётся 404.
В массиве REQUEST лежат и данные из формы, и параметр q с урлом.
Метод $virtualpage->getMethod() возвращает $_SERVER['REQUEST_METHOD'].
И вот нюанс — если request-метод равен POST, то в этом массиве параметра q нету. Оно и понятно — в этот момент он спокойно лежит в $_GET. И, соответственно, VP подцепить урл уже не может.
Вот и валится на 404.
Но ведь это же не правильно!
Как же быть?
Предлагаю свой вариант решения такой ситуации.
Там добавилась константа и немного дописан метод doRoutes. По коду, в принципе, всё понятно, но, в случае чего, пишите.
Надеюсь, что коммит примите и мне не нужно будет держать свою ветку VirtualPage)
p.s. А компонент очень полезный. Так что, спасибо за него!
Допустим, нужно вывести форму редатирования профиля пользователя (или любого кастомного объекта).
Урл страницы имеет вид:
/objects/100500/update
Прописываю в vp.конфиге вот такой маршрут:/objects/{itemId:[0-9]+}/{update}
выбираю метод GET и любое из событий.На нужном ресурсе грузится форма редактирования, в которую подставляются значения нужного объекта (который был предварительно найден и отрендерен собственным сниппетом).
Т.е. я к чему — всё работает, всё супер.
Но.
Как только я нажимаю кнопку сабмита в форме — всё, пиши пропало — отдаётся 404.
В массиве REQUEST лежат и данные из формы, и параметр q с урлом.
Метод $virtualpage->getMethod() возвращает $_SERVER['REQUEST_METHOD'].
И вот нюанс — если request-метод равен POST, то в этом массиве параметра q нету. Оно и понятно — в этот момент он спокойно лежит в $_GET. И, соответственно, VP подцепить урл уже не может.
Вот и валится на 404.
Но ведь это же не правильно!
Как же быть?
Предлагаю свой вариант решения такой ситуации.
Там добавилась константа и немного дописан метод doRoutes. По коду, в принципе, всё понятно, но, в случае чего, пишите.
Надеюсь, что коммит примите и мне не нужно будет держать свою ветку VirtualPage)
p.s. А компонент очень полезный. Так что, спасибо за него!
Думаю что правильнее будет указание схожего обработчика только с другим методом запроса.
То есть если нам нужна еще и отправка форм — то добавить такой же обработчик с POST и все…
а вот этим
У нас же несколько событий, не только notfound.
Спасибо огромное за обкатку!
ps. Добавил создание одинаковых маршрутов с разными методами, добавил чанк в обработчики.
Новую версию можно собрать с гитхаб.
То есть если нам нужна еще и отправка форм — то добавить такой же обработчик с POST и все…
а вот этим
case FastRoute\Dispatcher::NOT_FOUND:
вы прерываете дальнейшую обработку возможных маршрутов…У нас же несколько событий, не только notfound.
Спасибо огромное за обкатку!
ps. Добавил создание одинаковых маршрутов с разными методами, добавил чанк в обработчики.
Новую версию можно собрать с гитхаб.
Вов, спасибо, всё работает!
Т.е. исключительно POST, исключительно GET и вариант, реагирующий на всё, который бы был включён по умолчанию.
Когда у меня в компонентах по несколько десятков сущностей, с каждой из которых нужны crud-операции с фронта — конфиг сильно раздуется. Это, конечно, не смертельно. Так, просто пожелание :-)
Кстати. Мы тут недавно канонические урлы обсуждали и я там сниппет для seo-шного тега meta rel=canonical накидал. Так вот встал вопрос — а как получить сработавший маршрут из VirtualPage, чтобы подставлять их в этот тег, вместо [[~[[*id]]]]? Есть какие-нибудь варианты как это можно сделать? Может сработавший урл в плейсхолдер помещать? Имя которому задавать в настройках компонента. Тогда можно было бы делать как-то так:
Думаю что правильнее будет указание схожего обработчика только с другим методом запроса.Это было первым, что я попробовал сделать) Да только вот в тот момент получал ae-ошибку. Already exists, тобишь.
Спасибо огромное за обкатку!Вам спасибо)
Добавил создание одинаковых маршрутов с разными методамиИ всё-таки мне кажется, что логичнее было бы сделать третий вариант — POST/GET, который бы реагировал на оба этих request-метода, чтобы не дублировать и не плодить одинаковые маршруты с одинаковыми обработчиками.
Т.е. исключительно POST, исключительно GET и вариант, реагирующий на всё, который бы был включён по умолчанию.
Когда у меня в компонентах по несколько десятков сущностей, с каждой из которых нужны crud-операции с фронта — конфиг сильно раздуется. Это, конечно, не смертельно. Так, просто пожелание :-)
Кстати. Мы тут недавно канонические урлы обсуждали и я там сниппет для seo-шного тега meta rel=canonical накидал. Так вот встал вопрос — а как получить сработавший маршрут из VirtualPage, чтобы подставлять их в этот тег, вместо [[~[[*id]]]]? Есть какие-нибудь варианты как это можно сделать? Может сработавший урл в плейсхолдер помещать? Имя которому задавать в настройках компонента. Тогда можно было бы делать как-то так:
$vpUri = $modx->getPlaceholder($modx->getOption('vp.uri_placeholder'));
Многие компоненты используют свои урл, которые плагинами генерируют, и их никак не узнать для построения каноникала, vp — только капля в море)
Понятное дело, но всеми ими я не пользуюсь, а вот vp теперь будет постоянным гостем на моих сервисах)
Вполне логично да, просто со временем напряг немного…
Добавил POST/GET и плейсходер uri.
Новая версия пока на гитхаб. Пробуй.
Добавил POST/GET и плейсходер uri.
Новая версия пока на гитхаб. Пробуй.
Круто, спасибо! Всё работает)
p.s. если бы имя плейсхолдеру можно было бы в настройках задавать — то было бы прям ваще :)
А то ж ситуации разные бывают — мало ли где названия перекрываться смогут, всякое возможно.
p.s. если бы имя плейсхолдеру можно было бы в настройках задавать — то было бы прям ваще :)
А то ж ситуации разные бывают — мало ли где названия перекрываться смогут, всякое возможно.
Пожалуйста! )
Забирай с префиксами…
Забирай с префиксами…
Очередное обновление.
настройка плейсходеры
В маршруты добавлена настройка плейсходеры, запись в формате json (плейсходер: значение). Соответственно плейсходеры будут доступны в обработчике.
динамический ресурс
Добавлен новый обработчик — «динамический ресурс». Идея заимствована у Василия, подробности тут.
настройка плейсходеры
В маршруты добавлена настройка плейсходеры, запись в формате json (плейсходер: значение). Соответственно плейсходеры будут доступны в обработчике.
динамический ресурс
Добавлен новый обработчик — «динамический ресурс». Идея заимствована у Василия, подробности тут.
обновление — 1.0.5-beta
Добавил кэширование динамических страниц. Тестируем, отписываемся…
Добавил кэширование динамических страниц. Тестируем, отписываемся…
Володя, по-прежнему выдает ошибку:
Parse error: syntax error, unexpected '[' in… \core\components\virtualpage\model\lib\fastroute\src\functions.php on line 12
Ваш компонент очень нужный, но, к сожалению, множество проектов стоит на PHP 5.3.
21 марта Вы говорили, что поправите код. Скажите, когда примерно ожидать этих изменений?
Parse error: syntax error, unexpected '[' in… \core\components\virtualpage\model\lib\fastroute\src\functions.php on line 12
Ваш компонент очень нужный, но, к сожалению, множество проектов стоит на PHP 5.3.
21 марта Вы говорили, что поправите код. Скажите, когда примерно ожидать этих изменений?
для роутинга используется библиотека fastRouter работает она на php >=5.4.0
Понял. Спасибо
неплохо бы как-то реализовать поддержку разных контекстов. Например, ресурс-обработчик выбирается свой для каждого контекста. Иначе, когда несколько контекстов и нужны в них одинаковые ссылки, приходится их делать разными для каждого контекста…
и вообще можно ссылки разделять на контексты, выбирать в каком они будут работать)
и вообще можно ссылки разделять на контексты, выбирать в каком они будут работать)
Пока что не вижу смысла засовывать эту логику в компонент.
Объясните подробнее где и с какой целью это необходимо…
Спасибо!
Объясните подробнее где и с какой целью это необходимо…
Спасибо!
К примеру, если переключается контекст для мультиязычных сайтов и там одинаковые ссылки, но обработать их надо ресурсом из соответствующего языку контекста, естественно.
Переключение контекста в мультидоменном сайте.
К примеру, у меня два контекста:
Либо в параметр «маршрут» надо указать хост, вот так:
К примеру, у меня два контекста:
1. web - адрес http://domain1.com
2. web2 - адрес http://somain2.com
В разных контекстах работают разные правила маршрутизации. Либо в параметр «маршрут» надо указать хост, вот так:
Маршрут: "http://domain1.com/users/{id:[0-9]+}.html"
А для второго контекста маршруты будут прописываться так:Маршрут: "http://domain2.com/users/{id:[0-9]+}.html"
с русскими буквами работает?
/page/letter-{get:[A-Za-zА-Яа-я0-9]}
не работает с рус буквой, а с англ/цифрам работает
/page/letter-{get:[A-Za-zА-Яа-я0-9]}
не работает с рус буквой, а с англ/цифрам работает
у меня так работает
А-Па-пР-Яр-я
страно конечно, но не работает у меня. вы бы не могли бы ещё у себя протестировать
/food/{food:(eda|cat|cat_dog)}
/food/{food:(eda|cat|cat_dog)}
раньше тестировал подобную конструкцию, работала. А какая версия php у вас?
PHP 5.5.23 (cli) (built: Mar 19 2015 09:03:54)
Сейчас проверил эту конструкцию, получил какой-то бред. Обрабатывается совсем другим обработчиком, не тем, что указан для этого урл. вот так работает
/food/{food:eda|cat|cat_dog}
не нужно выделять конструкцию в группу. Пользуйте
/food/{food:eda|cat|cat_dog}
или же ставьте тогда/food/{food:(?:eda|cat|cat_dog)}
Да уже разобрались, просто забыл как там правильно, смотрел же в доках по фастроутеру)
По поводу ссылок для разных контекстов, нет в планах?
По поводу ссылок для разных контекстов, нет в планах?
а что касательно modx.pro/components/5035-virtualpage-virtual-page/#comment-38235
вот же ответ modx.pro/components/5035-virtualpage-virtual-page/#comment-38237
могу сказать что у меня тоже работает…
Или давайте подробнее поясняйте. Какая регулярка, какой адрес и тд… Что не работает.
ps. Пример подробного вопроса — modx.pro/components/5035-virtualpage-virtual-page/#comment-36865
могу сказать что у меня тоже работает…
Или давайте подробнее поясняйте. Какая регулярка, какой адрес и тд… Что не работает.
ps. Пример подробного вопроса — modx.pro/components/5035-virtualpage-virtual-page/#comment-36865
Сайт: http://s1581.h3.modhost.pro/test/letter-(ТУТ БУКВА)
регулярка: /test/letter-{get:[a-zа-пр-я0-9]}
ага, вижу что работает не так как надо…
Я не спец по регуляркам, но думаю это из за кирилицы.
Попробуйте решение в лоб
Я не спец по регуляркам, но думаю это из за кирилицы.
Попробуйте решение в лоб
letter-{get:[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]{2}|[a-z0-9]{1}}
del
ну и такое ещё выдаёт ошибку
/food/{food:(eda|cat|cat_dog)}
/food/{food:(eda|cat|cat_dog)}
[2015-04-14 16:49:08] (ERROR @ /var/www/foodcafe/www/core/components/virtualpage/model/lib/fastroute/src/Dispatcher/GroupCountBased.php : 20) PHP warning: Invalid argument supplied for foreach()
Помогите разобраться с работой VirtualPage. На сервере PHP 5.5 стоит, поставил UserProfile2 и VirtualPage. Пользователи выводятся, но не возможно перейти на страницы с их профайлами, последними тикетами и топиками. Нужно ли какие-то записи в .htaccess производить? Вот сайт где наблюдаются проблемы www.horrorstory.ru
P.S. По мимо cURL, какие-то дополнительные обновления для PHP нужно устанавливать? cURL я вчера поставил.
P.S. По мимо cURL, какие-то дополнительные обновления для PHP нужно устанавливать? cURL я вчера поставил.
Всё заработало. Я понял почему не работало. Элементарно события не повесил. Только почему-то шаблон не выводится полностью, а выводится чанк с выводом пользовательской инфы. Я явно что-то делаю не так. Нужно ли в чанке с выводом данных весь шаблон прописывать?
шаблон к UserProfile2 берет основу от modstore.pro/packages/other/theme.bootstrap
Скорее всего у вас этот пакет не стоит.
Или ручками создайте нужные чанки или установите Theme.Bootstrap
Скорее всего у вас этот пакет не стоит.
Или ручками создайте нужные чанки или установите Theme.Bootstrap
Всё заработало. Оказывается полезно скидывать кэш))) Очень радует компонент. Спасибо огромное автору)
на здоровье!
Володя, у меня такая же проблема, но у меня все настроено itmages.ru/image/view/2731566/3a6c3439
какая, такая же проблема?
Пользователи выводятся, но не возможно перейти на страницы с их профайлами, последними тикетами и топиками
проверьте маршрут на страницу профиля, событие…
если есть возможность скинь доступ в скайп: vgrish_vgrish
Посмотрю в чем дело.
Посмотрю в чем дело.
Володя направил меня на нужное направление.
1) Надо было включить ЧПУ
2) в файл .htaccess вставил
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Action php5.4-script /cgi-bin/php5.4.cgi
AddType php5.4-script .php
1) Надо было включить ЧПУ
2) в файл .htaccess вставил
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Action php5.4-script /cgi-bin/php5.4.cgi
AddType php5.4-script .php
Похоже глючит раздел настройки обработчиков, прилагаю скрины
1) clip2net.com/s/3ivIc4I тут я создаю новый обработчик типа «Динамический ресурс», задаю ему имя, тип Динамический ресурс, предлагается выбрать по какому шаблону будет генерится видимо, выбираю свой шаблон, и пишу описание, которое я так понял ни где не должно во фронте фигурировать. Сохраняю
2) clip2net.com/s/3ivIo1v получаю страницу оформленную в своем шаблоне, но вместо результата работы сниппета, текст описания (?)…
3)Иду снова в обработчики, открываю свой созданный обработчик и там вижу: clip2net.com/s/3ivIyGk
где селект запись почему уже не перечень шаблонов а перечень ресурсов сайта.
Кстати пробовал с остальными типами, все так же глючат кроме типа «Ресурс», который работает корректно без проблем.
Может чтото не так делаю или не так понял?
1) clip2net.com/s/3ivIc4I тут я создаю новый обработчик типа «Динамический ресурс», задаю ему имя, тип Динамический ресурс, предлагается выбрать по какому шаблону будет генерится видимо, выбираю свой шаблон, и пишу описание, которое я так понял ни где не должно во фронте фигурировать. Сохраняю
2) clip2net.com/s/3ivIo1v получаю страницу оформленную в своем шаблоне, но вместо результата работы сниппета, текст описания (?)…
3)Иду снова в обработчики, открываю свой созданный обработчик и там вижу: clip2net.com/s/3ivIyGk
где селект запись почему уже не перечень шаблонов а перечень ресурсов сайта.
Кстати пробовал с остальными типами, все так же глючат кроме типа «Ресурс», который работает корректно без проблем.
Может чтото не так делаю или не так понял?
там есть глюк с отображение названия, но id стоит все же верный и глюка обработчика я не заметил.
будет время поправлю.
будет время поправлю.
Благодарю за ответ.
Вообщем глюк да только с отображением названия, то что показано на скринах.
А работы динамического ресурса получилось добиться, проставив вместо сниппета чанк в котором вызывается сниппет. И вроде заработало, только все равно зачем-то в теге h1 дополнительно выше вывода чанка на страницу вставляется содержимое «Описания».
Впринципе можно тупо не писать описания обработчику да и все :)
Вообщем глюк да только с отображением названия, то что показано на скринах.
А работы динамического ресурса получилось добиться, проставив вместо сниппета чанк в котором вызывается сниппет. И вроде заработало, только все равно зачем-то в теге h1 дополнительно выше вывода чанка на страницу вставляется содержимое «Описания».
Впринципе можно тупо не писать описания обработчику да и все :)
поправил в новой версии.
Не работает VirtualPage, в процессе установки ошибок нет, не успел выйти из установщика пакетов и вот:
Parse error: syntax error, unexpected '[' in /home/aqq13706/public_html/мой сайт.ru/core/components/virtualpage/model/lib/fastroute/src/functions.php on line 12
Подскажите пожалуйста, может кто-то сталкивался? Может из-за контекстов? MODX Revolution 2.3.3-pl. Пакет пробовал переустанавливать, не помогло. А вообще цель установки VirtualPage это UserProfile.
Спасибо!
Parse error: syntax error, unexpected '[' in /home/aqq13706/public_html/мой сайт.ru/core/components/virtualpage/model/lib/fastroute/src/functions.php on line 12
Подскажите пожалуйста, может кто-то сталкивался? Может из-за контекстов? MODX Revolution 2.3.3-pl. Пакет пробовал переустанавливать, не помогло. А вообще цель установки VirtualPage это UserProfile.
Спасибо!
Извините за вопрос, кажется нашел в чем проблема. Версия PHP наверное ниже 5.4, В С-panel нет настроек, написал в тех. хостинга. Если не так поправьте пожалуйста, куда смотреть.
Ответ тех. хостинга (Для работы с PHP 5.4 (+MySQL 5.6) технически возможно перенести текущий аккаунт на новый сервер, но там есть технические различия не только в версии PHP 5.2, но и в кодировке по умолчанию для MySQL: на старых серверах используется cp1251, а на новых utf-8. В этих же кодировках создаются и разархивируются (при необходимости) резервные копии. Таким образом после переноса, сайты с базами данных в старой cp1251, могут стать не читаемы. И даже при успешном переносе, но при неправильно записанной кодировке в таблице, такие базы при резервном копировании могут стать полностью поврежденными после первого же восстановления из такой резервной копии.):
Сурово.
:) Очень сурово! И решения никакого нет. Вообще мне банально, нужно чтобы менялась аватарка из фронтенда. Стоит уже HybridAuth и Login. Если кто-то чирканет фрагмент кода буду очень благодарен.
И решения никакого нет.В Office аватарка меняется из коробки. Он работает на PHP 5.3 и дружит с HybridAuth. Ты его, кстати, видишь на id.modx.pro.
Если кто-то чирканет фрагмент кода буду очень благодарен.Фрагментом кода здесь не ограничишься. Нужны проверки при загрузке, ресайз после загрузки, и удаление старых автарок при обновлении.
Спасибо! Обязательно воспользуюсь вашим предложением.
Подскажите, как задать шаблон под динамические страницы?
Спасиб, Вольдь, разобрался уже, теперь письмо регистрации не приходит.
Подскажите, как сделать адреса такого плана: вместо /users/1/ было /users/admin/?
Пробовал менять маршруты со стандартного:
Пробовал менять маршруты со стандартного:
/users/{user_id:[0-9]+}/
на:/users/{user_firstname:[A-Za-z0-9]}/
А "+" не забыли?
/users/{user_firstname:[A-Za-z0-9]+}/
Пробовал, ошибка «500 Internal Server Error»
Хостинг modhost, Modx 2.4.0-pl
Сейчас хотел попробовать на тестовом modhost, блин, userprofile2 не ставится пишет останавливается на: Trying to install pdoTools. Please wait…
Хостинг modhost, Modx 2.4.0-pl
Сейчас хотел попробовать на тестовом modhost, блин, userprofile2 не ставится пишет останавливается на: Trying to install pdoTools. Please wait…
Попробовал на 2.3.6, та же ошибка «500 Internal Server Error», у всего сайта, кроме админки
Не могу удалить компонент: при обновлении кэша пишет
Как удалить его окончательно? И связан ли компонент userprofile2 с этим? Его тоже не могу корректно удалить.
В базе таблицы остались:
Could not load class: virtualpage from virtualpage.
Problem getting service virtualpage, instance of class virtualpage, from path /home/n/nashasemru/bank/public_html/core/components/virtualpage/model/virtualpage/
Еще остается в верхнем меню в приложениях:Как удалить его окончательно? И связан ли компонент userprofile2 с этим? Его тоже не могу корректно удалить.
В базе таблицы остались:
— удалите/ отключите плагины virtualpage
— пункты меню удалите в админке /manager/?a=system/action
— userprofile2 связан с virtualpage. удалить аналогично virtualpage. Таблицы удалить руками в базе.
— пункты меню удалите в админке /manager/?a=system/action
— userprofile2 связан с virtualpage. удалить аналогично virtualpage. Таблицы удалить руками в базе.
up_extendes и up_extended_setting тоже удалять?
Удалила, но все равно пишет при обновлении кэша:
Удалила, но все равно пишет при обновлении кэша:
Попробуйте Деинсталляцию компонента
его уже нет в списке…
Всё равно установите и сделайте деинсталляцию!
Помогло! Огромное спасибо!
Если маршрут начинается с /text не работает. Пример маршрута /text/{name} Меняешь на /tex2t/{name} и работает
У меня одного так?
У меня одного так?
там наверно буква из другого языка затесалась… вот и не работает. Проверяйте лучше!
Володя, это я первым делом проверил и добавление «2» тогда бы не решало проблему.
Использую маршрут
/users/{user_id:[0-9]+}
для страницы «информация», набираю адрес типа: /users/155666
( т.е id не существующего юзера), открывается пустая страница «информация». Подскажите, как от этого избавиться?
в сниппете при отсутствии объекта редиректить на 404
Где его взять?)) В php не особо…
При переносе с модхоста на другой хостинг страница с профилем пользователя, например /users/18 выдаёт следующие ошибки:
Откуда эта ошибка и как её исправить?
Notice: Undefined index: cacheTime in /home/****/public_html/core/components/virtualpage/model/virtualpage/virtualpage.class.php on line 612
Notice: Undefined index: cacheTime in /home/****/public_html/core/components/virtualpage/model/virtualpage/virtualpage.class.php on line 613
Это если пользователь авторизован. У гостей всё нормально. Нотисы на хостинге отключены.Откуда эта ошибка и как её исправить?
значит не отключены наверно.Нотисы на хостинге отключеныNotice: Undefined index: cacheTime in /home/****/public_html/core/components/virtualpage/model/virtualpage/virtualpage.class.php on line 612 Notice: Undefined index: cacheTime in /home/****/public_html/core/components/virtualpage/model/virtualpage/virtualpage.class.php on line 613
ps. поправлю в ближайшее время.
pps. А нечего с модхоста было переходить)))
значит не отключены наверно.На хостинге отключены однозначно. Может в самом скрипте включены где-то… Может и в других сниппетах на той же странице, я ещё проверю…
А нечего с модхоста было переходить)))Я точно то же самое заказчику твержу…
вопрос выше задавался. VirtualPage используется со сниппетом easyComm (вопрос/ответ). Для каждого вопроса создается своя страница. Если удаляется вопрос, которые был опубликован, то появлються пустые страницы по этим же адресам.
В базе этих строк не нахожу, как избавится от этого бага?
Было предложено такое решение — в сниппете при отсутствии объекта редиректить на 404
В каком именно сниппете?
В базе этих строк не нахожу, как избавится от этого бага?
Было предложено такое решение — в сниппете при отсутствии объекта редиректить на 404
В каком именно сниппете?
если у вас динамические страницы, то можно поступить так.
создать плагин на vpOnResourceAfterCreate
в нем проверяйте актуальность своих данных и если их нет то просто отправляете пользоваетля на страницу ошибок.
создать плагин на vpOnResourceAfterCreate
в нем проверяйте актуальность своих данных и если их нет то просто отправляете пользоваетля на страницу ошибок.
<?php
switch ($modx->event->name) {
case 'vpOnResourceAfterCreate':
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
/* ваша проверка */
if (false) {
$modx->sendErrorPage();
}
break;
}
В php не сильна. Подскажите, как правильно прописать проверку? Пустые страницы выглядят так altravita-ivf.ru/voprosy-i-otvety/voprosy-reprotuktologu/4089.html
я так понимаю 4089 — id объекта easyComm.
то есть ваша проверка будет выглядеть примерно так
ps. можете скинуть доступ к сайту на почту, я посмотрю.
то есть ваша проверка будет выглядеть примерно так
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
$id = $modx->getOption('id', $fastrouter);
if (!$modx->getCount('easyComm', $id)) {
$modx->sendErrorPage();
}
написано приблизительно, с easyComm не имел дела.ps. можете скинуть доступ к сайту на почту, я посмотрю.
$modx->sendErrorPage();
Приводит к циклическому редиректу.Нашёл также такой вариант вызова:
$modx->sendErrorPage(array('stop' => true));
Но также приводит к циклическому редиректу.Как правильно то перебросить на страницу 404?
Забыл указать, что в своём случае я использую сниппет в качестве обработчика. Хотя я попробовал всё сделать через плагин, как указано немного выше, и всё равно получаю цикличный редирект.
Ну если вы используете сниппет, то плагин тут и не отработает.
Скорее всего у вас обработчик на событие OnPageNotFound и в нем же вы посылаете снова на sendErrorPage.
Смените событие на OnHandleRequest и думаю все будет ок.
Скорее всего у вас обработчик на событие OnPageNotFound и в нем же вы посылаете снова на sendErrorPage.
Смените событие на OnHandleRequest и думаю все будет ок.
Плагин я пробовал, когда выставил в качестве обработчика динамический ресурс.
На OnPageNotFound вроде своего ничего не висит. Но вариант сменить событие на OnHandleRequest сработал и теперь появляется страница 404.
Спасибо за помощь.
На OnPageNotFound вроде своего ничего не висит. Но вариант сменить событие на OnHandleRequest сработал и теперь появляется страница 404.
Спасибо за помощь.
Плагин я пробовал, когда выставил в качестве обработчика динамический ресурс.у меня такая конструкция работает, скорее всего вы где то недосмотрели.
На OnPageNotFound вроде своего ничего не висит.Я имел ввиду что у вас обработчик висел на нем. И в нем же вы вызывали sendErrorPage, а что такое sendErrorPage смотрим тут github.com/modxcms/revolution/blob/d79ec5e8c24df577cb6064f6d5468ec776207bd1/core/model/modx/modx.class.php#L1162
и что он делает вот тут github.com/modxcms/revolution/blob/d79ec5e8c24df577cb6064f6d5468ec776207bd1/core/model/modx/modx.class.php#L1174?
вызывает снова OnPageNotFound — вот вы и получали рекурсию.
У меня обработки VirtualPage стоит Ресурс (http://prntscr.com/a9srij)
Событие стоит OnHandleRequest (http://prntscr.com/a9srqd)
Плагин vpOnResourceAfterCreate не срабатывает.
Куда дальше копать?
Событие стоит OnHandleRequest (http://prntscr.com/a9srqd)
Плагин vpOnResourceAfterCreate не срабатывает.
Куда дальше копать?
Не срабатывает, потому что стоит тип обработки Ресурс, а нужен Динамический ресурс, а в поле Запись выбрать нужно шаблон.
Пустые страницы остаются altravita-ivf.ru/voprosy-i-otvety/voprosy-embriolog/3323.html
Вот мои настройки?
Маршруты — prntscr.com/a9t2in
Обработчик — prntscr.com/a9t1xa
Плагин vpOnResourceAfterCreate
<?php
switch ($modx->event->name) {
case 'vpOnResourceAfterCreate':
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
$id = $modx->getOption('id', $fastrouter);
if (!$modx->getCount('easyComm', $id)) {
$modx->sendErrorPage();
}
break;
}
Вот мои настройки?
Маршруты — prntscr.com/a9t2in
Обработчик — prntscr.com/a9t1xa
Плагин vpOnResourceAfterCreate
<?php
switch ($modx->event->name) {
case 'vpOnResourceAfterCreate':
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
$id = $modx->getOption('id', $fastrouter);
if (!$modx->getCount('easyComm', $id)) {
$modx->sendErrorPage();
}
break;
}
по скрину не видно, есть ли там параметр id что вы используете в плагине.
ps. не забывайте оформляйте код.
ps. не забывайте оформляйте код.
А если id много, как их все в один плагин запихнуть?
не, не… смотрите, у вас есть маршрут например
и вот по этим переменных можно осуществлять вывод каких то данных.
если предположить что у вас есть переменная id в маршруте плагин будет выглядеть таким образом как вы и написали
ps. опять же это все предположения. Задавая вопросы подробнее описывайте проблему.
/voprosy/{cat:tralala|blalala}/{id:[0-9]+}
в $_REQUEST у вас будет массив, в fastrouter — будут лежать переменные cat и idи вот по этим переменных можно осуществлять вывод каких то данных.
если предположить что у вас есть переменная id в маршруте плагин будет выглядеть таким образом как вы и написали
<?php
switch ($modx->event->name) {
case 'vpOnResourceAfterCreate':
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
$id = $modx->getOption('id', $fastrouter);
if (!$modx->getCount('easyComm', $id)) {
$modx->sendErrorPage();
}
break;
}
думаю у вас нет параметра id в маршруте. ps. опять же это все предположения. Задавая вопросы подробнее описывайте проблему.
Маршрут такой — /voprosy-i-otvety/{cat:voprosy-reprotuktologu|voprosy-ginekologu|voprosy-urologu|voprosy-endokrinologu|voprosy-genetiku|voprosy-embriolog}/{id:[0-9]+}.html
Более 1000 пустых страниц. Надо их всех на 404 переадресовать
Более 1000 пустых страниц. Надо их всех на 404 переадресовать
А как заставить работать VirtualPage с Redirector и AutoRedirector?
Добрый вечер. Работает ли rank в табличке маршрутов?
Непосредственно в таблице строчки хорошо drug-n-drop'ятся, но вот на порядок обработки маршрутов это совсем не влияет. Приходится создавать по-новой все маршруты в порядке, в котором они должны отрабатывать (видимо порядок обработки всета-ки идет по полю ID, а не по полю RANK). Вот такие вот дела. Никто больше не сталкивался с таким странным поведением дополнения?
Непосредственно в таблице строчки хорошо drug-n-drop'ятся, но вот на порядок обработки маршрутов это совсем не влияет. Приходится создавать по-новой все маршруты в порядке, в котором они должны отрабатывать (видимо порядок обработки всета-ки идет по полю ID, а не по полю RANK). Вот такие вот дела. Никто больше не сталкивался с таким странным поведением дополнения?
не чистится кэш после сортировки наверно…
а куда он пишет кэш? удалял полностью директорию /core/cache/, системная настройка
cache_handler='xPDOFileCache'
А также чистил кэш через «Управление» ->«Обновить сайт»
Вопрос остается открытым. Как пустые страницы переадресовать на 404 страницу?
плагин vpOnResourceAfterCreate:
<?php
switch ($modx->event->name) {
case 'vpOnResourceAfterCreate':
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
$id = $modx->getOption('id', $fastrouter);
if (!$modx->getCount('easyComm', $id)) {
$modx->sendErrorPage();}
break;
}
Обработчик — prntscr.com/aczgxn
плагин vpOnResourceAfterCreate:
<?php
switch ($modx->event->name) {
case 'vpOnResourceAfterCreate':
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
$id = $modx->getOption('id', $fastrouter);
if (!$modx->getCount('easyComm', $id)) {
$modx->sendErrorPage();}
break;
}
Обработчик — prntscr.com/aczgxn
дак все так же — modx.pro/components/5035-virtualpage-virtual-page/#comment-56714
вот тут тестовый сайт — s4692.h2.modhost.pro/
s4692
0aDvdt5CPorB
страница 1 — s4692.h2.modhost.pro/test/1
страница 2 — s4692.h2.modhost.pro/test/2
страница 3 — s4692.h2.modhost.pro/test/3 и тд
как видите если нет ресурса то идет редирект на 404.
плагин тут — s4692.h2.modhost.pro/manager/?a=element/plugin/update&id=5
вам нужно лишь заменить modResource
вот тут тестовый сайт — s4692.h2.modhost.pro/
s4692
0aDvdt5CPorB
страница 1 — s4692.h2.modhost.pro/test/1
страница 2 — s4692.h2.modhost.pro/test/2
страница 3 — s4692.h2.modhost.pro/test/3 и тд
как видите если нет ресурса то идет редирект на 404.
плагин тут — s4692.h2.modhost.pro/manager/?a=element/plugin/update&id=5
вам нужно лишь заменить modResource
у меня PDO стоит.
Виртуальные страницы используются для easyComm (вопрос-ответ). Для каждого вопроса, своя страница (
Страница с вопросом и ответом —
Пустые страницы появляются после удаления вопросы из easyComm —
Виртуальные страницы используются для easyComm (вопрос-ответ). Для каждого вопроса, своя страница (
http://prntscr.com/aczy11
).Страница с вопросом и ответом —
http://altravita-ivf.ru/voprosy-i-otvety/voprosy-ginekologu/7037.html
Пустая страница выглядит так — http://altravita-ivf.ru/voprosy-i-otvety/voprosy-ginekologu/5371.html
ID пустой страницы нет в списке easyComm (вопросов), так же и в базе данных.Пустые страницы появляются после удаления вопросы из easyComm —
http://prntscr.com/aczyub
Обработчик — /voprosy-i-otvety/{cat:voprosy-reprotuktologu|voprosy-ginekologu|voprosy-urologu|voprosy-endokrinologu|voprosy-genetiku|voprosy-embriolog}/{id:[0-9]+}.html
я вам выше написал как это работает, дал готовый пример, разбирайтесь…
а для pdo плагин не работает?
Правильно понимаю, что компонент гибкая альтернатива решению с плагином: bezumkin.ru/sections/tips_and_tricks/2918/?
разобрался, пардон… префикс vp у плейсхолдеров [[+vp.uri]]
Как виртуальным динамическим страницам можно указать заголовки, мета тэги или динамичные описания?
<?php
switch ($modx->event->name) {
case 'vpOnResourceAfterCreate':
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
$resource->set('description', 'трали вали, тоси боси');
break;
}
спасибо! то что надо, только вот этот плагин будет срабатывать на все страницы)
я же спрашивал возможно ли менять динамично, к примеру в описании страницы и заголовке использовать данные из самой страницы, на каждую же не будешь делать свой сниппет и вызывать для обозначения заголовков, ключевых слов. Понимаю что нужно в таком случае воспользоваться ресурсами, а не виртуальными страницами, но все же вопрос остается открытым)
я же спрашивал возможно ли менять динамично, к примеру в описании страницы и заголовке использовать данные из самой страницы, на каждую же не будешь делать свой сниппет и вызывать для обозначения заголовков, ключевых слов. Понимаю что нужно в таком случае воспользоваться ресурсами, а не виртуальными страницами, но все же вопрос остается открытым)
Обновил, поправил все косяки, возможно добавил новые… Проверяй!
Поправил, проверяй!
Спасибо большое!
Еще заметил, что изменился массив. Теперь получать надо так:
Еще заметил, что изменился массив. Теперь получать надо так:
$searchLetter = $_REQUEST['fastrouter']['fastroute']['letter'];
Раньше достаточно было:$_REQUEST['fastrouter']['letter'];
Так задумано?
специально не задумывалось, сейчас посмотрю этот момент.
+
/users/{userid:[0-9]+}
/users/{userid:[0-9]+}/ads
Тоже не работают теперь :(
Отрабатывает, но userid пустой
Мой косяк. Вопрос снят
Добрый день. Владимир, подскажите пожалуйста, а как вытащить нужные поля документа, если я делаю те же услуги, только в другом регионе?
т.е. есть услуги, их мне надо продублировать в раздел:
работаем по районам->район->url_услуга_из_раздела_услуг.
в обработчике Тип: динамический, Запись: шаблон конкретной услуги
чтобы не плодить ресурсы, как достать поля pagetitle и другие нужного документа? заранее спасибо.
т.е. есть услуги, их мне надо продублировать в раздел:
работаем по районам->район->url_услуга_из_раздела_услуг.
в обработчике Тип: динамический, Запись: шаблон конкретной услуги
чтобы не плодить ресурсы, как достать поля pagetitle и другие нужного документа? заранее спасибо.
создаете нужный вам маршрут, вешаете обработчик.
если используете шаблонизатор то можно прям в нем получить ресурс и вывести нужные поля, если нет то простенький сниппет в котором получаете ресурс.
если используете шаблонизатор то можно прям в нем получить ресурс и вывести нужные поля, если нет то простенький сниппет в котором получаете ресурс.
вот что я сделал:
prntscr.com/d5ja79
prntscr.com/d5jak1
что мне дальше делать?
не совсем понял вот это:
prntscr.com/d5ja79
prntscr.com/d5jak1
что мне дальше делать?
не совсем понял вот это:
если используете шаблонизатор то можно прям в нем получить ресурс и вывести нужные поля,т.е. в шаблоне? я не силен в php подскажите пожалуйста как получить.
все верно. нужно теперь получить ресурс например с помощью docs.modx.pro/components/pdotools/snippets/pdoresources
id ресурса у вас будет в плейсходере [[!+vp.id]]
id ресурса у вас будет в плейсходере [[!+vp.id]]
сделал выборку чтобы посмотреть то ли выводит
в логах появляется:
пробывал заменить маршрут на /rajon/{page}/{alias}.html перестал его выводить, вообще не чего не вывел.
структура админки у меня такая: prntscr.com/d5kt1l
[[!pdoResources?
&parents=`[[!+vp.id]]`
&tpl=`@INLINE [[+pagetitle]]`
]]
выводит не то что надо. у меня тут есть ее кое какие ресурсы в районе, выводит все их pagetitle. в логах появляется:
core/xpdo/om/xpdoquery.class.php : 739) Encountered empty IN condition with key id
проверил что в [[!+vp.id]] — alias района но не id нужного ресурса.пробывал заменить маршрут на /rajon/{page}/{alias}.html перестал его выводить, вообще не чего не вывел.
структура админки у меня такая: prntscr.com/d5kt1l
&parents=`[[!+vp.id]]`
в маршруте параметр id — id ресурса? Если да то вам не parents надо указывать.проверил что в [[!+vp.id]] — alias района но не id нужного ресурса.значит вы где то неправильно формируете ссылку…
если вы плаваете в таких вещах то попросите кого то помочь…
ссылку я формирую правильно, поэтому и параметры передаются не id а alias ресурса, т.к. он и указан в адресе строки. мне не нужны id в ссылке, поэтому получил ресурс вот так
[[pdoResources?
&parents=`3` // id знаю от куда надо))
&tpl=`@INLINE [[+pagetitle]]`
&where=`{"alias":"[[!+vp.alias]]"}`
]]
спасибо. сразу не сообразил
Владимир, подскажите пожалуйста а как избавиться от пустых страниц.
К сожалению, не силен в пхп поэтому вынужден задавать тупые вопросы))
страницу вывожу через шаблон вот так:
К сожалению, не силен в пхп поэтому вынужден задавать тупые вопросы))
страницу вывожу через шаблон вот так:
[[!pdoResources?&parents=`3`&tpl=`tpl.VirtualPageRajonUsluga`&where=`{"alias":"[[!+vp.alias]]"}`&includeContent=`1`]]
создал плагин на событие: vpOnResourceAfterCreate<?php
switch ($modx->event->name) {
case 'vpOnResourceAfterCreate':
$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
$alias = $modx->getOption('alias', $fastrouter);
if (!$modx->getCount('easyComm', $alias)) { //здесь не знаю что писать в место плагина easyComm
$modx->sendErrorPage();
}
break;
}
Спасибо.
вы выводите ресурс, значит и нужно проверять есть ли такой в наличии.
if (!$modx->getCount('modResource', array('alias'=>$alias))) {
$modx->sendErrorPage();
}
Спасибо.
что то выводится просто белый экран. а не 404. не отрабатывает по ходу sendErrorPage, с чем это может быть связано? Знаете? Шаблон 404 задан в сист. настройках error_page (id ресурса).
что то выводится просто белый экран. а не 404. не отрабатывает по ходу sendErrorPage, с чем это может быть связано? Знаете? Шаблон 404 задан в сист. настройках error_page (id ресурса).
пример кода рабочий, значит что то еще не так.
Попробуйте повторить ситуацию на тестовом сайте.
Попробуйте повторить ситуацию на тестовом сайте.
Владимир, и еще один вопрос: эти же страницы будут ли эти страницы индексироваться?
будут индексироваться
У меня странная проблема при установке. В консоли вывод:
Skipping vehicle object of class modSystemSetting (data object exists and cannot be upgraded); criteria: Array ( [key] => virtualpage_active )
Skipping vehicle object of class modSystemSetting (data object exists and cannot be upgraded); criteria: Array ( [key] => virtualpage_exclude_event_groupname )
Skipping vehicle object of class modSystemSetting (data object exists and cannot be upgraded); criteria: Array ( [key] => virtualpage_fastrouter_key )
Skipping vehicle object of class modSystemSetting (data object exists and cannot be upgraded); criteria: Array ( [key] => virtualpage_prefix_placeholder )
Skipping vehicle object of class modAction (data object exists and cannot be upgraded); criteria: Array ( [namespace] => virtualpage [controller] => index )
Skipping vehicle object of class modMenu (data object exists and cannot be upgraded); criteria: Array ( [text] => virtualpage )
Trying to download fastroute. Please wait...
Could not extract fastroute from fastroute.zip to /home/test/public_html/core/components/virtualpage/vendor/. Error: Invalid End of Central Dir Record size : 15 [code -10]
Сможете объяснить в чем может быть проблема?
Владимир, обновление с версии 1.0.9-beta до последней на рабочем сайте безопасно?
У меня созданы с десяток маршрутов, обработчиков, висящих на OnHandleRequest.
У меня созданы с десяток маршрутов, обработчиков, висящих на OnHandleRequest.
Сейчас уже не скажу… Сделайте тестовый сайт и попробуйте.
Владимир, привет.
Стокнулся с непонятностью, кратко:
Маршрут: /users/{user:[0-9]+}/
Т.е. страницы вида /users/1532/, на которых я показываю информацию о пользователе, метод — GET, событие — логично, что onHandleRequest.
Обработчик — Ресурс, в котором вызывается некий сниппет, получающие данные пользователя.
Делаю в сниппете простую проверку, что пользователь существует, и если его нет — то хочу показать 404
Как правильно 404 ошибку то показать в таком случае?.. Выше похожий случай разбирали и пришли в итоге к тому, что нужно событие поменять на OnHandleRequest, но мне не помогает это.
И MODX и VirtualPage последних версий.
Стокнулся с непонятностью, кратко:
Маршрут: /users/{user:[0-9]+}/
Т.е. страницы вида /users/1532/, на которых я показываю информацию о пользователе, метод — GET, событие — логично, что onHandleRequest.
Обработчик — Ресурс, в котором вызывается некий сниппет, получающие данные пользователя.
Делаю в сниппете простую проверку, что пользователь существует, и если его нет — то хочу показать 404
return $modx->sendErrorPage();
так вот это приводит к зацикливанию, скрипт или вываливается по времени или по памяти).Как правильно 404 ошибку то показать в таком случае?.. Выше похожий случай разбирали и пришли в итоге к тому, что нужно событие поменять на OnHandleRequest, но мне не помогает это.
И MODX и VirtualPage последних версий.
у меня все работает…
по тому описанию что вы дали так же должно все работать.
Создайте тестовый сайт и продемонстрируйте проблему там.
Спасибо!
по тому описанию что вы дали так же должно все работать.
Создайте тестовый сайт и продемонстрируйте проблему там.
Спасибо!
Fenom-чик виноват-то…
Сделал все:
s8738.h7.modhost.pro/
Админка s8738 / ZEnzfcpZMFXA
Если в шаблоне используется
Можешь зайти, попробовать, постарался все максимально упростить, обработчик на странице page, сниппет — snippet.
Сделал все:
s8738.h7.modhost.pro/
Админка s8738 / ZEnzfcpZMFXA
Если в шаблоне используется
[[*content]]
то все работает, а если {$_modx->resource.content}
то труба, не фурычит.Можешь зайти, попробовать, постарался все максимально упростить, обработчик на странице page, сниппет — snippet.
А-ха-ха, прости, бес попутал меня, в имени твоем дважды уже ошибся, извини)))) Первый раз случайно, а второй еще и скопировал.
не могу зайти/ скинь в личку.
Пардон, пароль от админки g11ICNoM47hH
ну так правилльно вы используете ресурс — задействует метод sendForward и в нем же снова фигачите sendErrorPage который делает что? опять делает sendForward.
Либо смените тип на динамический, либо делайте например
Либо смените тип на динамический, либо делайте например
$options= array(
'error_type' => '404'
,'error_header' => $modx->getOption('error_page_header', null,'HTTP/1.1 404 Not Found')
,'error_pagetitle' => $modx->getOption('error_page_pagetitle', null,'Error 404: Page not found')
,'error_message' => $modx->getOption('error_page_message', null,'<h1>Page not found</h1><p>The page you requested was not found.</p>')
);
return $modx->sendError(1,$options);
выдаст просто сообщение Page not found
Володя, а подскажите,
Есть запись типа
пробовала указать /{pagetitle}/nagradi.html — перестает работать, 404.
Спасибо!)
Есть запись типа
/shkola/treneryi/{pagetitle}/kariera.html
/shkola/treneryi/{pagetitle}/nagradi.html
а что если сменят alias — «shkola» и «treneryi»? по идее будет 404? пробовала указать /{pagetitle}/nagradi.html — перестает работать, 404.
Спасибо!)
не понял о чем вопрос…
как укоротить путь до
типа
ЕДинственное, пришедшее в голову решение — писать плагин
/{pagetitle}/nagradi.html
или как сделать первую часть динамической? типа
/{id_ресурса.alias}/{id_ресурса.alias}/{pagetitle}/nagradi.html
Предполагаю, а вдруг изменять Alias у контейнера? ЕДинственное, пришедшее в голову решение — писать плагин
или как сделать первую часть динамической?
так задайте маршрут типа
/{param1}/{param2}/{id}.html
и все
Спасибо!
А подскажите еще, пожалуйста, а как перестроить мне нужные pagetitle?
как сделать хлебные крошки? а то сейчас показывает ГЛАВНАЯ
Это полностью переписывать шаблон, получать по uri id ресурса, получать его поля и выставлять их плейсхолдерами?
То есть если на странице у меня было [[*pageitle]], то будет [[+pagetitle]]?
как сделать хлебные крошки? а то сейчас показывает ГЛАВНАЯ
Это полностью переписывать шаблон, получать по uri id ресурса, получать его поля и выставлять их плейсхолдерами?
То есть если на странице у меня было [[*pageitle]], то будет [[+pagetitle]]?
Какие ограничения для демо версии?
Если пытаться получить ресурс по ajax, то выполняются все плейсхолдеры, Fenom, но не !pdoPage. Есть какой-то вариант обойти это ограничение?
в пакете нет никаких ограничений, проблема думаю в другом…
Может есть какие-то идеи насчет возможной проблемы?
Чанк-шаблон страницы pastebin.com/z8hJrFCy. Всё вызывается как надо, s9939.h8.modhost.pro/users/33. Элемент с комментариями #user_comments_ajax_row
При попытке подгрузить методом .get Jquery приходит всё, но на месте вызова !pdoPage пустота. s9939.h8.modhost.pro/blog-glavnogo-vracha/ клик на «запись 2», клик на пользователя.
Чанк-шаблон страницы pastebin.com/z8hJrFCy. Всё вызывается как надо, s9939.h8.modhost.pro/users/33. Элемент с комментариями #user_comments_ajax_row
При попытке подгрузить методом .get Jquery приходит всё, но на месте вызова !pdoPage пустота. s9939.h8.modhost.pro/blog-glavnogo-vracha/ клик на «запись 2», клик на пользователя.
Да, косяк вряд ли в VP, потому что вызов pdoPage БЕЗ &ajaxMode=`button`работает как надо.
Незнаю, исходный код компонентов доступен на гитхаб, если вам интересно можно попробовать выяснить в чем дело.
Здравствуйте, коллеги.
Подскажите пожалуйста как правильно прописать в маршрут артикул товара, если он является опцией msoptionprice?
как вообще правильно организовать виртуальные страницы из опций?
Подскажите пожалуйста как правильно прописать в маршрут артикул товара, если он является опцией msoptionprice?
как вообще правильно организовать виртуальные страницы из опций?
Добрый день, есть пример как работают не виртуальные страницы, а sendforward с ресурсом?
Выпадает в 500 ошибку.
Нужен конкретный ресурс, чтобы привязать комментарии к реальной странице, а не к виртуальной.
Либо как виртуальной задать id, чтобы по нему выводить комментарии
Выпадает в 500 ошибку.
Нужен конкретный ресурс, чтобы привязать комментарии к реальной странице, а не к виртуальной.
Либо как виртуальной задать id, чтобы по нему выводить комментарии
Параметр «request_alias» вроде как уже звучит по-другому.
Метод getUri(),
Метод getUri(),
$alias = $this->modx->getOption('request_alias', null, 'q');
Ныне он называется «request_param_alias».
А я могу как-то на входе изменить параметр и отдать его по-другому?
Например, пришёл параметр {par1} из маршрута как catalog, меняю его на shop и на выходе должен получится не domain/catalog/, а domain/shop/. Есть ли какой-то метод?
Например, пришёл параметр {par1} из маршрута как catalog, меняю его на shop и на выходе должен получится не domain/catalog/, а domain/shop/. Есть ли какой-то метод?
Вам нужно настроить редиректы, выглядит как классический редирект.
Можно сделать средствами MODX или веб-сервера
Можно сделать средствами MODX или веб-сервера
Перечитал весь топик, не до конца понял принцип работы. Модуль очень интересный, хочу реализовать вывод опций товаров на отдельной странице. Как я вижу.
Есть опции: Амперы(amper), Вольты(volt), Давление(davlenie) и хотелось бы вывести
/options/amper/
/options/volt/
/options/davlenie/
Реально ли так реализовать?
Есть опции: Амперы(amper), Вольты(volt), Давление(davlenie) и хотелось бы вывести
/options/amper/
/options/volt/
/options/davlenie/
Реально ли так реализовать?
После последних коммитов разработчиков FastRoute — github.com/nikic/FastRoute дополнение не работает. Был удален bootstrap.php файл и много изменений в других файлах библиотеки. Новые установки VirtualPage с измениями FastRoute не будут работать.
Просим Володю обновить модуль ;)
Просим Володю обновить модуль ;)
Да уж, пришлось вручную скачать и распаковать старый FastRoute в директорию core/components/virtualpage/vendor/fastroute
А вот этот аналог modx.com/extras/package/?id=modxfastrouter кто-нибудь использует? Раз уж VirtualPage больше недоступен.
Доки github.com/vanchelo/modxFastRouter
Доки github.com/vanchelo/modxFastRouter
продукт еще поддерживается?
а то очень хотельбы узнать а как быть с заголовками и все такое?
можно как-то после такого кастомного роутинга вернуться к стандартному
ну чтобы в один маршрут обрабатывался и VP и modx стандартными способами
а то очень хотельбы узнать а как быть с заголовками и все такое?
можно как-то после такого кастомного роутинга вернуться к стандартному
ну чтобы в один маршрут обрабатывался и VP и modx стандартными способами
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.