[VirtualPage] - Виртуальные страницы.

Реализует виртуальные страницы для MODx.
Планировался для 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"
Володя
15 марта 2015, 10:25
modx.pro
12
10 447
+11
Поблагодарить автора Отправить деньги

Комментарии: 179

Сергей Шлоков
15 марта 2015, 14:28
0
Хорошая весчь.
Wassi Wassinen
15 марта 2015, 14:54
+6
Володя, а у тебя, случаем, руки до userProfile не дошли? А то денег я заплатил за компонент, а он через пень колоду работает.
    Володя
    15 марта 2015, 15:08
    1
    -16
    Если бы ты включил голову — ты бы не задавал таких вопросов.
    Как платил — так и работает… Еще вопросы есть?
      Wassi Wassinen
      15 марта 2015, 16:37
      +6
      Володя, оно не работает, если установлен Office. Заплатил я тебе в полной мере. Вопросов к тебе после этого комментария больше нет.
        Володя
        15 марта 2015, 17:04
        -14
        вот и отлично!
      Николай
      15 марта 2015, 20:10
      +9
      Не самый удачный ответ человеку. Он бы может еще что то у тебя заказал и денюжку за работу дал. Не делается так. Это я как разработчик и как человек говорю.
        Володя
        15 марта 2015, 20:35
        -6
        у меня нет никакого желания продолжать какие либо выяснения… И ответ возможно не самый удачный, но я мотивирован так ответить.

        Всем спасибо за мнение, что то объяснять я не намерен.
    Владимир
    15 марта 2015, 15:38
    0
    Хм..., а разве userProfile был платным?
      Василий Наумкин
      15 марта 2015, 15:49
      1
      +3
      Ты не поверишь, но разработку бесплатных дополнений всегда кто-то оплачивает.

      Или заказчик, деньгами, или разработчик, своим временем.
        Владимир
        15 марта 2015, 16:08
        0
        Отчего же, весьма верю) И с удовольствием оплачиваю.
Павел Левин
16 марта 2015, 00:37
0
А в чем суть виртуальных страниц?
Какова была задумка заказчика/исполнителя?
    Володя
    16 марта 2015, 09:00
    0
    Вывести по какому либо заданному маршруту страницу с данными, при этом как таковой самой страницы в дереве ресурсов не имеется.
      Павел Левин
      16 марта 2015, 09:33
      0
      т.е. это тот же документ с show_in_tree = 0 с отдельной страницей управления данными страницами/документами?
        Наумов Алексей
        16 марта 2015, 09:54
        +1
        Нет.

        В статье есть очень наглядный пример: /users/{id:[0-9]+}.html, это страница пользователя. Вы же не будете заводить отдельную страницу для каждого пользователя.
        Володя
        16 марта 2015, 09:56
        1
        +2
        есть два обработчика:
        ресурс — задействует метод sendForward
        сниппет — обработает указанный сниппет и отдаст через exit

        в первом случае это ресурс (указываете в настройках обработчика), в котором вы вызываете какой либо сниппет, и в зависимости от полученных параметров у вас выводит информацию.

        во втором случае даже нет ресурса, просто отдача результата сниппета на страницу.
Даниил Рачин
24 марта 2015, 18:18
0
Установил через репозитарий modstore.pro, на сайте такая ошибка:



Версия MODX 2.3.3, PHP 5.3.29
Что я делаю не так?
    Володя
    24 марта 2015, 18:41
    0
    fastroute: «php»: ">=5.4.0"
Алексей Карташов
26 марта 2015, 18:22
+2
Только что столкнулся вот с таким поведением.

Допустим, нужно вывести форму редатирования профиля пользователя (или любого кастомного объекта).
Урл страницы имеет вид:
/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. А компонент очень полезный. Так что, спасибо за него!
    Володя
    26 марта 2015, 22:18
    +1
    Думаю что правильнее будет указание схожего обработчика только с другим методом запроса.
    То есть если нам нужна еще и отправка форм — то добавить такой же обработчик с POST и все…

    а вот этим
    case FastRoute\Dispatcher::NOT_FOUND:
    вы прерываете дальнейшую обработку возможных маршрутов…
    У нас же несколько событий, не только notfound.

    Спасибо огромное за обкатку!
    ps. Добавил создание одинаковых маршрутов с разными методами, добавил чанк в обработчики.
    Новую версию можно собрать с гитхаб.
      Алексей Карташов
      27 марта 2015, 19:44
      +2
      Вов, спасибо, всё работает!

      Думаю что правильнее будет указание схожего обработчика только с другим методом запроса.
      Это было первым, что я попробовал сделать) Да только вот в тот момент получал ae-ошибку. Already exists, тобишь.

      Спасибо огромное за обкатку!
      Вам спасибо)

      Добавил создание одинаковых маршрутов с разными методами
      И всё-таки мне кажется, что логичнее было бы сделать третий вариант — POST/GET, который бы реагировал на оба этих request-метода, чтобы не дублировать и не плодить одинаковые маршруты с одинаковыми обработчиками.
      Т.е. исключительно POST, исключительно GET и вариант, реагирующий на всё, который бы был включён по умолчанию.
      Когда у меня в компонентах по несколько десятков сущностей, с каждой из которых нужны crud-операции с фронта — конфиг сильно раздуется. Это, конечно, не смертельно. Так, просто пожелание :-)

      Кстати. Мы тут недавно канонические урлы обсуждали и я там сниппет для seo-шного тега meta rel=canonical накидал. Так вот встал вопрос — а как получить сработавший маршрут из VirtualPage, чтобы подставлять их в этот тег, вместо [[~[[*id]]]]? Есть какие-нибудь варианты как это можно сделать? Может сработавший урл в плейсхолдер помещать? Имя которому задавать в настройках компонента. Тогда можно было бы делать как-то так:
      $vpUri = $modx->getPlaceholder($modx->getOption('vp.uri_placeholder'));
        Дмитрий Иванов
        27 марта 2015, 21:00
        0
        Многие компоненты используют свои урл, которые плагинами генерируют, и их никак не узнать для построения каноникала, vp — только капля в море)
          Алексей Карташов
          28 марта 2015, 16:00
          0
          Понятное дело, но всеми ими я не пользуюсь, а вот vp теперь будет постоянным гостем на моих сервисах)
        Володя
        28 марта 2015, 02:11
        +1
        Вполне логично да, просто со временем напряг немного…
        Добавил POST/GET и плейсходер uri.
        Новая версия пока на гитхаб. Пробуй.
          Алексей Карташов
          28 марта 2015, 16:02
          +1
          Круто, спасибо! Всё работает)

          p.s. если бы имя плейсхолдеру можно было бы в настройках задавать — то было бы прям ваще :)
          А то ж ситуации разные бывают — мало ли где названия перекрываться смогут, всякое возможно.
            Володя
            29 марта 2015, 00:04
            0
            Пожалуйста! )
            Забирай с префиксами…
Володя
31 марта 2015, 09:57
+2
Очередное обновление.
настройка плейсходеры
В маршруты добавлена настройка плейсходеры, запись в формате json (плейсходер: значение). Соответственно плейсходеры будут доступны в обработчике.

динамический ресурс
Добавлен новый обработчик — «динамический ресурс». Идея заимствована у Василия, подробности тут.
Володя
02 апреля 2015, 11:14
0
обновление — 1.0.5-beta
Добавил кэширование динамических страниц. Тестируем, отписываемся…
Сuriosity
04 апреля 2015, 22:49
0
Володя, по-прежнему выдает ошибку:
Parse error: syntax error, unexpected '[' in… \core\components\virtualpage\model\lib\fastroute\src\functions.php on line 12
Ваш компонент очень нужный, но, к сожалению, множество проектов стоит на PHP 5.3.
21 марта Вы говорили, что поправите код. Скажите, когда примерно ожидать этих изменений?
    Володя
    04 апреля 2015, 23:00
    0
    для роутинга используется библиотека fastRouter работает она на php >=5.4.0
      Сuriosity
      05 апреля 2015, 00:03
      0
      Понял. Спасибо
Дмитрий Иванов
05 апреля 2015, 20:46
0
неплохо бы как-то реализовать поддержку разных контекстов. Например, ресурс-обработчик выбирается свой для каждого контекста. Иначе, когда несколько контекстов и нужны в них одинаковые ссылки, приходится их делать разными для каждого контекста…
и вообще можно ссылки разделять на контексты, выбирать в каком они будут работать)
    Володя
    05 апреля 2015, 21:08
    0
    Пока что не вижу смысла засовывать эту логику в компонент.
    Объясните подробнее где и с какой целью это необходимо…
    Спасибо!
      Дмитрий Иванов
      05 апреля 2015, 21:14
      0
      К примеру, если переключается контекст для мультиязычных сайтов и там одинаковые ссылки, но обработать их надо ресурсом из соответствующего языку контекста, естественно.
      Алексей
      15 апреля 2015, 10:16
      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"
Spam
14 апреля 2015, 16:15
0
с русскими буквами работает?
/page/letter-{get:[A-Za-zА-Яа-я0-9]}
не работает с рус буквой, а с англ/цифрам работает
    Дмитрий Иванов
    14 апреля 2015, 16:24
    0
    у меня так работает
    А-Па-пР-Яр-я
      Spam
      14 апреля 2015, 16:46
      0
      страно конечно, но не работает у меня. вы бы не могли бы ещё у себя протестировать
      /food/{food:(eda|cat|cat_dog)}
        Дмитрий Иванов
        14 апреля 2015, 17:15
        0
        раньше тестировал подобную конструкцию, работала. А какая версия php у вас?
          Spam
          14 апреля 2015, 17:20
          0
          PHP 5.5.23 (cli) (built: Mar 19 2015 09:03:54)
        Дмитрий Иванов
        14 апреля 2015, 17:32
        +1
        Сейчас проверил эту конструкцию, получил какой-то бред. Обрабатывается совсем другим обработчиком, не тем, что указан для этого урл. вот так работает
        /food/{food:eda|cat|cat_dog}
          Володя
          14 апреля 2015, 19:56
          0
          не нужно выделять конструкцию в группу. Пользуйте
          /food/{food:eda|cat|cat_dog}
          или же ставьте тогда
          /food/{food:(?:eda|cat|cat_dog)}
    Spam
    14 апреля 2015, 16:49
    1
    0
    ну и такое ещё выдаёт ошибку
    /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()
Андрей Копп
21 апреля 2015, 14:15
0
Помогите разобраться с работой VirtualPage. На сервере PHP 5.5 стоит, поставил UserProfile2 и VirtualPage. Пользователи выводятся, но не возможно перейти на страницы с их профайлами, последними тикетами и топиками. Нужно ли какие-то записи в .htaccess производить? Вот сайт где наблюдаются проблемы www.horrorstory.ru

P.S. По мимо cURL, какие-то дополнительные обновления для PHP нужно устанавливать? cURL я вчера поставил.
    Андрей Копп
    21 апреля 2015, 14:27
    0
    Всё заработало. Я понял почему не работало. Элементарно события не повесил. Только почему-то шаблон не выводится полностью, а выводится чанк с выводом пользовательской инфы. Я явно что-то делаю не так. Нужно ли в чанке с выводом данных весь шаблон прописывать?
      Володя
      21 апреля 2015, 14:29
      0
      шаблон к UserProfile2 берет основу от modstore.pro/packages/other/theme.bootstrap
      Скорее всего у вас этот пакет не стоит.

      Или ручками создайте нужные чанки или установите Theme.Bootstrap
        Андрей Копп
        21 апреля 2015, 16:39
        +1
        Всё заработало. Оказывается полезно скидывать кэш))) Очень радует компонент. Спасибо огромное автору)
          Володя
          21 апреля 2015, 17:23
          0
          на здоровье!
            Сергей Лим
            09 июля 2015, 02:26
            0
            Володя, у меня такая же проблема, но у меня все настроено itmages.ru/image/view/2731566/3a6c3439
              Володя
              09 июля 2015, 09:12
              0
              какая, такая же проблема?
                Сергей Лим
                09 июля 2015, 09:29
                0
                Пользователи выводятся, но не возможно перейти на страницы с их профайлами, последними тикетами и топиками
                  Володя
                  09 июля 2015, 09:31
                  0
                  проверьте маршрут на страницу профиля, событие…
                    Сергей Лим
                    09 июля 2015, 09:35
                    0
                    itmages.ru/image/view/2731566/3a6c3439

                    А вот же я скинул, все норм вроде там
                      Володя
                      09 июля 2015, 13:28
                      0
                      если есть возможность скинь доступ в скайп: vgrish_vgrish
                      Посмотрю в чем дело.
                      Сергей Лим
                      09 июля 2015, 17:20
                      0
                      Володя направил меня на нужное направление.
                      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
    Sergey Leleko
    30 мая 2015, 11:12
    0
    Похоже глючит раздел настройки обработчиков, прилагаю скрины
    1) clip2net.com/s/3ivIc4I тут я создаю новый обработчик типа «Динамический ресурс», задаю ему имя, тип Динамический ресурс, предлагается выбрать по какому шаблону будет генерится видимо, выбираю свой шаблон, и пишу описание, которое я так понял ни где не должно во фронте фигурировать. Сохраняю

    2) clip2net.com/s/3ivIo1v получаю страницу оформленную в своем шаблоне, но вместо результата работы сниппета, текст описания (?)…

    3)Иду снова в обработчики, открываю свой созданный обработчик и там вижу: clip2net.com/s/3ivIyGk
    где селект запись почему уже не перечень шаблонов а перечень ресурсов сайта.

    Кстати пробовал с остальными типами, все так же глючат кроме типа «Ресурс», который работает корректно без проблем.

    Может чтото не так делаю или не так понял?
      Володя
      30 мая 2015, 12:51
      0
      там есть глюк с отображение названия, но id стоит все же верный и глюка обработчика я не заметил.
      будет время поправлю.
        Sergey Leleko
        30 мая 2015, 12:54
        0
        Благодарю за ответ.
        Вообщем глюк да только с отображением названия, то что показано на скринах.

        А работы динамического ресурса получилось добиться, проставив вместо сниппета чанк в котором вызывается сниппет. И вроде заработало, только все равно зачем-то в теге h1 дополнительно выше вывода чанка на страницу вставляется содержимое «Описания».

        Впринципе можно тупо не писать описания обработчику да и все :)
      Володя
      30 июня 2015, 14:34
      0
      поправил в новой версии.
    Rrp2010
    31 мая 2015, 21:35
    0
    Не работает 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.

    Спасибо!
      Rrp2010
      31 мая 2015, 22:12
      0
      Извините за вопрос, кажется нашел в чем проблема. Версия PHP наверное ниже 5.4, В С-panel нет настроек, написал в тех. хостинга. Если не так поправьте пожалуйста, куда смотреть.
        Rrp2010
        31 мая 2015, 22:37
        0
        Ответ тех. хостинга (Для работы с PHP 5.4 (+MySQL 5.6) технически возможно перенести текущий аккаунт на новый сервер, но там есть технические различия не только в версии PHP 5.2, но и в кодировке по умолчанию для MySQL: на старых серверах используется cp1251, а на новых utf-8. В этих же кодировках создаются и разархивируются (при необходимости) резервные копии. Таким образом после переноса, сайты с базами данных в старой cp1251, могут стать не читаемы. И даже при успешном переносе, но при неправильно записанной кодировке в таблице, такие базы при резервном копировании могут стать полностью поврежденными после первого же восстановления из такой резервной копии.):
          Василий Наумкин
          01 июня 2015, 06:45
          0
          Сурово.
            Rrp2010
            01 июня 2015, 08:16
            0
            :) Очень сурово! И решения никакого нет. Вообще мне банально, нужно чтобы менялась аватарка из фронтенда. Стоит уже HybridAuth и Login. Если кто-то чирканет фрагмент кода буду очень благодарен.
              Василий Наумкин
              01 июня 2015, 08:28
              0
              И решения никакого нет.
              В Office аватарка меняется из коробки. Он работает на PHP 5.3 и дружит с HybridAuth. Ты его, кстати, видишь на id.modx.pro.

              Если кто-то чирканет фрагмент кода буду очень благодарен.
              Фрагментом кода здесь не ограничишься. Нужны проверки при загрузке, ресайз после загрузки, и удаление старых автарок при обновлении.
                Rrp2010
                03 июня 2015, 11:44
                0
                Спасибо! Обязательно воспользуюсь вашим предложением.
    Сергей Лим
    16 июля 2015, 05:18
    0
    Подскажите, как задать шаблон под динамические страницы?
      Володя
      16 июля 2015, 08:40
      0
        Сергей Лим
        16 июля 2015, 09:33
        0
        Спасиб, Вольдь, разобрался уже, теперь письмо регистрации не приходит.
    Илья
    30 августа 2015, 15:21
    0
    Подскажите, как сделать адреса такого плана: вместо /users/1/ было /users/admin/?
    Пробовал менять маршруты со стандартного:
    /users/{user_id:[0-9]+}/
    на:
    /users/{user_firstname:[A-Za-z0-9]}/
      Павел Гвоздь
      30 августа 2015, 18:30
      0
      А "+" не забыли?

      /users/{user_firstname:[A-Za-z0-9]+}/
        Илья
        30 августа 2015, 19:00
        0
        Пробовал, ошибка «500 Internal Server Error»
        Хостинг modhost, Modx 2.4.0-pl
        Сейчас хотел попробовать на тестовом modhost, блин, userprofile2 не ставится пишет останавливается на: Trying to install pdoTools. Please wait…
        Илья
        30 августа 2015, 19:11
        0
        Попробовал на 2.3.6, та же ошибка «500 Internal Server Error», у всего сайта, кроме админки
    Любовь
    03 сентября 2015, 11:54
    0
    Не могу удалить компонент: при обновлении кэша пишет
    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 с этим? Его тоже не могу корректно удалить.
    В базе таблицы остались:
      Володя
      03 сентября 2015, 12:18
      0
      — удалите/ отключите плагины virtualpage
      — пункты меню удалите в админке /manager/?a=system/action
      — userprofile2 связан с virtualpage. удалить аналогично virtualpage. Таблицы удалить руками в базе.
        Любовь
        03 сентября 2015, 12:23
        0
        up_extendes и up_extended_setting тоже удалять?
        Удалила, но все равно пишет при обновлении кэша:
          Роман Садоян
          03 сентября 2015, 13:01
          +1
          Попробуйте Деинсталляцию компонента
            Любовь
            03 сентября 2015, 13:02
            0
            его уже нет в списке…
              Роман Садоян
              03 сентября 2015, 13:05
              +1
              Всё равно установите и сделайте деинсталляцию!
                Любовь
                03 сентября 2015, 13:13
                0
                Помогло! Огромное спасибо!
    Андрей
    10 сентября 2015, 02:08
    0
    Если маршрут начинается с /text не работает. Пример маршрута /text/{name} Меняешь на /tex2t/{name} и работает
    У меня одного так?
      Володя
      10 сентября 2015, 09:20
      0
      там наверно буква из другого языка затесалась… вот и не работает. Проверяйте лучше!
        Андрей
        10 сентября 2015, 10:46
        0
        Володя, это я первым делом проверил и добавление «2» тогда бы не решало проблему.
    Якуб
    20 января 2016, 20:38
    0
    Использую маршрут
    /users/{user_id:[0-9]+}
    для страницы «информация», набираю адрес типа:
    /users/155666
    ( т.е id не существующего юзера), открывается пустая страница «информация». Подскажите, как от этого избавиться?
      Володя
      20 января 2016, 21:01
      0
      в сниппете при отсутствии объекта редиректить на 404
        Якуб
        20 января 2016, 22:52
        0
        Где его взять?)) В php не особо…
    Василий Столейков
    01 февраля 2016, 20:12
    0
    При переносе с модхоста на другой хостинг страница с профилем пользователя, например /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
    Это если пользователь авторизован. У гостей всё нормально. Нотисы на хостинге отключены.
    Откуда эта ошибка и как её исправить?
      Володя
      01 февраля 2016, 21:08
      0
      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. А нечего с модхоста было переходить)))
        Василий Столейков
        01 февраля 2016, 21:11
        0
        значит не отключены наверно.
        На хостинге отключены однозначно. Может в самом скрипте включены где-то… Может и в других сниппетах на той же странице, я ещё проверю…
        А нечего с модхоста было переходить)))
        Я точно то же самое заказчику твержу…
    Katya Larionova
    20 февраля 2016, 13:19
    0
    вопрос выше задавался. VirtualPage используется со сниппетом easyComm (вопрос/ответ). Для каждого вопроса создается своя страница. Если удаляется вопрос, которые был опубликован, то появлються пустые страницы по этим же адресам.
    В базе этих строк не нахожу, как избавится от этого бага?
    Было предложено такое решение — в сниппете при отсутствии объекта редиректить на 404
    В каком именно сниппете?
      Володя
      20 февраля 2016, 14:28
      1
      0
      если у вас динамические страницы, то можно поступить так.
      создать плагин на vpOnResourceAfterCreate
      в нем проверяйте актуальность своих данных и если их нет то просто отправляете пользоваетля на страницу ошибок.
      <?php
      switch ($modx->event->name) {
      	case 'vpOnResourceAfterCreate':
      
      	    $fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
      	    /* ваша проверка */
      	    if (false) {
      	        $modx->sendErrorPage();
      	    }
      	    
              break;	    
      }
        Katya Larionova
        24 февраля 2016, 10:14
        0
        В php не сильна. Подскажите, как правильно прописать проверку? Пустые страницы выглядят так altravita-ivf.ru/voprosy-i-otvety/voprosy-reprotuktologu/4089.html
          Володя
          24 февраля 2016, 11:10
          0
          я так понимаю 4089 — id объекта easyComm.
          то есть ваша проверка будет выглядеть примерно так
          $fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
          $id = $modx->getOption('id', $fastrouter);
          if (!$modx->getCount('easyComm', $id)) {
               $modx->sendErrorPage();
          }
          написано приблизительно, с easyComm не имел дела.
          ps. можете скинуть доступ к сайту на почту, я посмотрю.
            Сергей Фещуков
            29 февраля 2016, 08:28
            0
            $modx->sendErrorPage();
            Приводит к циклическому редиректу.
            Нашёл также такой вариант вызова:
            $modx->sendErrorPage(array('stop' => true));
            Но также приводит к циклическому редиректу.

            Как правильно то перебросить на страницу 404?
              Сергей Фещуков
              29 февраля 2016, 08:38
              0
              Забыл указать, что в своём случае я использую сниппет в качестве обработчика. Хотя я попробовал всё сделать через плагин, как указано немного выше, и всё равно получаю цикличный редирект.
                Володя
                29 февраля 2016, 09:15
                1
                0
                Ну если вы используете сниппет, то плагин тут и не отработает.
                Скорее всего у вас обработчик на событие OnPageNotFound и в нем же вы посылаете снова на sendErrorPage.
                Смените событие на OnHandleRequest и думаю все будет ок.
                  Сергей Фещуков
                  29 февраля 2016, 09:19
                  0
                  Плагин я пробовал, когда выставил в качестве обработчика динамический ресурс.
                  На OnPageNotFound вроде своего ничего не висит. Но вариант сменить событие на OnHandleRequest сработал и теперь появляется страница 404.
                  Спасибо за помощь.
                    Володя
                    29 февраля 2016, 09:24
                    0
                    Плагин я пробовал, когда выставил в качестве обработчика динамический ресурс.
                    у меня такая конструкция работает, скорее всего вы где то недосмотрели.

                    На 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 — вот вы и получали рекурсию.
                    Katya Larionova
                    01 марта 2016, 15:19
                    0
                    У меня обработки VirtualPage стоит Ресурс (http://prntscr.com/a9srij)
                    Событие стоит OnHandleRequest (http://prntscr.com/a9srqd)
                    Плагин vpOnResourceAfterCreate не срабатывает.
                    Куда дальше копать?
                      Сергей Фещуков
                      01 марта 2016, 15:29
                      0
                      Не срабатывает, потому что стоит тип обработки Ресурс, а нужен Динамический ресурс, а в поле Запись выбрать нужно шаблон.
                        Katya Larionova
                        01 марта 2016, 15:46
                        0
                        Пустые страницы остаются 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;
                        }
                        Володя
                        01 марта 2016, 16:11
                        0
                        по скрину не видно, есть ли там параметр id что вы используете в плагине.
                        ps. не забывайте оформляйте код.
                        Katya Larionova
                        01 марта 2016, 18:49
                        0
                        А если id много, как их все в один плагин запихнуть?
                        Володя
                        01 марта 2016, 19:30
                        0
                        не, не… смотрите, у вас есть маршрут например
                        /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. опять же это все предположения. Задавая вопросы подробнее описывайте проблему.
                        Katya Larionova
                        02 марта 2016, 11:50
                        0
                        Маршрут такой — /voprosy-i-otvety/{cat:voprosy-reprotuktologu|voprosy-ginekologu|voprosy-urologu|voprosy-endokrinologu|voprosy-genetiku|voprosy-embriolog}/{id:[0-9]+}.html

                        Более 1000 пустых страниц. Надо их всех на 404 переадресовать
      Андрей
      28 февраля 2016, 00:07
      0
      А как заставить работать VirtualPage с Redirector и AutoRedirector?
      Алексей
      05 марта 2016, 20:54
      0
      Добрый вечер. Работает ли rank в табличке маршрутов?
      Непосредственно в таблице строчки хорошо drug-n-drop'ятся, но вот на порядок обработки маршрутов это совсем не влияет. Приходится создавать по-новой все маршруты в порядке, в котором они должны отрабатывать (видимо порядок обработки всета-ки идет по полю ID, а не по полю RANK). Вот такие вот дела. Никто больше не сталкивался с таким странным поведением дополнения?
        Володя
        05 марта 2016, 22:32
        0
        не чистится кэш после сортировки наверно…
          Алексей
          06 марта 2016, 07:59
          0
          а куда он пишет кэш? удалял полностью директорию /core/cache/, системная настройка
          cache_handler='xPDOFileCache'
          А также чистил кэш через «Управление» ->«Обновить сайт»
      Katya Larionova
      09 марта 2016, 11:45
      0
      Вопрос остается открытым. Как пустые страницы переадресовать на 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
        Володя
        09 марта 2016, 12:10
        0
        дак все так же — 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
          Katya Larionova
          09 марта 2016, 12:41
          -1
          у меня PDO стоит.
          Виртуальные страницы используются для 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
          Katya Larionova
          09 марта 2016, 15:18
          0
          Обработчик — /voprosy-i-otvety/{cat:voprosy-reprotuktologu|voprosy-ginekologu|voprosy-urologu|voprosy-endokrinologu|voprosy-genetiku|voprosy-embriolog}/{id:[0-9]+}.html
            Володя
            09 марта 2016, 15:29
            0
            я вам выше написал как это работает, дал готовый пример, разбирайтесь…
              Katya Larionova
              09 марта 2016, 15:33
              0
              а для pdo плагин не работает?
      Николай
      31 марта 2016, 23:37
      0
      Правильно понимаю, что компонент гибкая альтернатива решению с плагином: bezumkin.ru/sections/tips_and_tricks/2918/?

      lexikon
      30 мая 2016, 15:52
      0
      Плейсхолдеры с Динамическими страницами не работают?

      Тоже самое только [[+page]]

      В шаблоне выводим [[*content]], вижу только текст.
        lexikon
        30 мая 2016, 23:19
        0
        разобрался, пардон… префикс vp у плейсхолдеров [[+vp.uri]]
      lexikon
      30 мая 2016, 17:16
      0
      Как виртуальным динамическим страницам можно указать заголовки, мета тэги или динамичные описания?
        Володя
        30 мая 2016, 22:06
        2
        +2
        <?php
        switch ($modx->event->name) {
        	case 'vpOnResourceAfterCreate':
        
        	$fastrouter = $modx->getOption('fastrouter', $_REQUEST, array());
        	$resource->set('description', 'трали вали, тоси боси');
        
        	break; 
        }
          lexikon
          30 мая 2016, 23:30
          0
          спасибо! то что надо, только вот этот плагин будет срабатывать на все страницы)
          я же спрашивал возможно ли менять динамично, к примеру в описании страницы и заголовке использовать данные из самой страницы, на каждую же не будешь делать свой сниппет и вызывать для обозначения заголовков, ключевых слов. Понимаю что нужно в таком случае воспользоваться ресурсами, а не виртуальными страницами, но все же вопрос остается открытым)
      Дмитрий
      26 июля 2016, 16:11
      0
      Володя, компонент отличный! Без него как без рук.
      Но есть один баг в админке, который есть довольно давно.

      Проблема в графе «Запись» в обработчике. После пролистывания списка записей, данные не меняются:
        Володя
        01 августа 2016, 13:44
        0
        Обновил, поправил все косяки, возможно добавил новые… Проверяй!
      Григорий Коленько
      04 августа 2016, 14:09
      0
      Привет! после обновления конструкция:
      /search-by-authors/{letter:[áčďéěíňóřšťúůýž]{2}|[a-z]{1}}.html
      Перестала работать :( 404 всегда



        Володя
        04 августа 2016, 15:27
        +1
        Поправил, проверяй!
          Григорий Коленько
          04 августа 2016, 15:31
          1
          0
          Спасибо большое!
          Еще заметил, что изменился массив. Теперь получать надо так:
          $searchLetter = $_REQUEST['fastrouter']['fastroute']['letter'];
          Раньше достаточно было:
          $_REQUEST['fastrouter']['letter'];
          Так задумано?
      Александр
      10 ноября 2016, 14:20
      0
      Добрый день. Владимир, подскажите пожалуйста, а как вытащить нужные поля документа, если я делаю те же услуги, только в другом регионе?
      т.е. есть услуги, их мне надо продублировать в раздел:
      работаем по районам->район->url_услуга_из_раздела_услуг.

      в обработчике Тип: динамический, Запись: шаблон конкретной услуги

      чтобы не плодить ресурсы, как достать поля pagetitle и другие нужного документа? заранее спасибо.
        Володя
        10 ноября 2016, 16:38
        0
        создаете нужный вам маршрут, вешаете обработчик.
        если используете шаблонизатор то можно прям в нем получить ресурс и вывести нужные поля, если нет то простенький сниппет в котором получаете ресурс.
          Александр
          10 ноября 2016, 17:28
          0
          вот что я сделал:

          prntscr.com/d5ja79

          prntscr.com/d5jak1

          что мне дальше делать?
          не совсем понял вот это:
          если используете шаблонизатор то можно прям в нем получить ресурс и вывести нужные поля,
          т.е. в шаблоне? я не силен в php подскажите пожалуйста как получить.
            Володя
            10 ноября 2016, 17:36
            0
            все верно. нужно теперь получить ресурс например с помощью docs.modx.pro/components/pdotools/snippets/pdoresources
            id ресурса у вас будет в плейсходере [[!+vp.id]]
              Александр
              10 ноября 2016, 19:12
              0
              сделал выборку чтобы посмотреть то ли выводит

              [[!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
                Володя
                10 ноября 2016, 21:55
                0
                &parents=`[[!+vp.id]]`
                в маршруте параметр id — id ресурса? Если да то вам не parents надо указывать.
                проверил что в [[!+vp.id]] — alias района но не id нужного ресурса.
                значит вы где то неправильно формируете ссылку…
                если вы плаваете в таких вещах то попросите кого то помочь…
                  Александр
                  11 ноября 2016, 10:54
                  0
                  ссылку я формирую правильно, поэтому и параметры передаются не id а alias ресурса, т.к. он и указан в адресе строки. мне не нужны id в ссылке, поэтому получил ресурс вот так
                  [[pdoResources?
                  	&parents=`3` // id знаю от куда надо))
                  	&tpl=`@INLINE [[+pagetitle]]`
                  	&where=`{"alias":"[[!+vp.alias]]"}`
                  ]]
                  спасибо. сразу не сообразил
                  Александр
                  29 ноября 2016, 13:13
                  0
                  Владимир, подскажите пожалуйста а как избавиться от пустых страниц.
                  К сожалению, не силен в пхп поэтому вынужден задавать тупые вопросы))
                  страницу вывожу через шаблон вот так:
                  [[!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; 
                  }
                  Спасибо.
                    Володя
                    29 ноября 2016, 14:03
                    1
                    0
                    вы выводите ресурс, значит и нужно проверять есть ли такой в наличии.
                    if (!$modx->getCount('modResource', array('alias'=>$alias))) {
                    	$modx->sendErrorPage();
                    }
                      Александр
                      29 ноября 2016, 15:45
                      0
                      Спасибо.
                      что то выводится просто белый экран. а не 404. не отрабатывает по ходу sendErrorPage, с чем это может быть связано? Знаете? Шаблон 404 задан в сист. настройках error_page (id ресурса).
                        Володя
                        29 ноября 2016, 15:55
                        +1
                        пример кода рабочий, значит что то еще не так.
                        Попробуйте повторить ситуацию на тестовом сайте.
      Александр
      10 ноября 2016, 14:33
      0
      Владимир, и еще один вопрос: эти же страницы будут ли эти страницы индексироваться?
        Володя
        10 ноября 2016, 16:38
        +2
        будут индексироваться
      Виталий Володько
      11 ноября 2016, 09:11
      0
      У меня странная проблема при установке. В консоли вывод:
      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]
      Сможете объяснить в чем может быть проблема?
      Наумов Алексей
      18 января 2017, 16:47
      0
      Владимир, обновление с версии 1.0.9-beta до последней на рабочем сайте безопасно?

      У меня созданы с десяток маршрутов, обработчиков, висящих на OnHandleRequest.
        Володя
        18 января 2017, 16:57
        0
        Сейчас уже не скажу… Сделайте тестовый сайт и попробуйте.
      Наумов Алексей
      01 марта 2017, 15:25
      0
      Владимир, привет.

      Стокнулся с непонятностью, кратко:
      Маршрут: /users/{user:[0-9]+}/
      Т.е. страницы вида /users/1532/, на которых я показываю информацию о пользователе, метод — GET, событие — логично, что onHandleRequest.

      Обработчик — Ресурс, в котором вызывается некий сниппет, получающие данные пользователя.
      Делаю в сниппете простую проверку, что пользователь существует, и если его нет — то хочу показать 404
      return $modx->sendErrorPage();
      так вот это приводит к зацикливанию, скрипт или вываливается по времени или по памяти).

      Как правильно 404 ошибку то показать в таком случае?.. Выше похожий случай разбирали и пришли в итоге к тому, что нужно событие поменять на OnHandleRequest, но мне не помогает это.

      И MODX и VirtualPage последних версий.
        Володя
        01 марта 2017, 15:49
        0
        у меня все работает…
        по тому описанию что вы дали так же должно все работать.
        Создайте тестовый сайт и продемонстрируйте проблему там.
        Спасибо!
          Наумов Алексей
          01 марта 2017, 16:31
          0
          Fenom-чик виноват-то…

          Сделал все:
          s8738.h7.modhost.pro/

          Админка s8738 / ZEnzfcpZMFXA

          Если в шаблоне используется
          [[*content]]
          то все работает, а если
          {$_modx->resource.content}
          то труба, не фурычит.

          Можешь зайти, попробовать, постарался все максимально упростить, обработчик на странице page, сниппет — snippet.
          Наумов Алексей
          01 марта 2017, 16:36
          0
          А-ха-ха, прости, бес попутал меня, в имени твоем дважды уже ошибся, извини)))) Первый раз случайно, а второй еще и скопировал.
            Володя
            01 марта 2017, 16:38
            0
            не могу зайти/ скинь в личку.
              Наумов Алексей
              01 марта 2017, 16:42
              0
              Пардон, пароль от админки g11ICNoM47hH
                Володя
                01 марта 2017, 16:58
                0
                ну так правилльно вы используете ресурс — задействует метод 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
                  yani
                  04 апреля 2017, 23:27
                  0
                  Володя, а подскажите,
                  Есть запись типа
                  /shkola/treneryi/{pagetitle}/kariera.html
                  /shkola/treneryi/{pagetitle}/nagradi.html
                  а что если сменят alias — «shkola» и «treneryi»? по идее будет 404?
                  пробовала указать /{pagetitle}/nagradi.html — перестает работать, 404.
                  Спасибо!)
                    Володя
                    04 апреля 2017, 23:44
                    0
                    не понял о чем вопрос…
                      yani
                      05 апреля 2017, 07:52
                      0
                      как укоротить путь до
                      /{pagetitle}/nagradi.html
                      или как сделать первую часть динамической?
                      типа
                      /{id_ресурса.alias}/{id_ресурса.alias}/{pagetitle}/nagradi.html
                      Предполагаю, а вдруг изменять Alias у контейнера?
                      ЕДинственное, пришедшее в голову решение — писать плагин
                        Володя
                        05 апреля 2017, 09:04
                        +1
                        или как сделать первую часть динамической?

                        так задайте маршрут типа
                        /{param1}/{param2}/{id}.html
                        и все
                          yani
                          05 апреля 2017, 10:10
                          0
                          Спасибо!
                          yani
                          06 апреля 2017, 08:38
                          0
                          А подскажите еще, пожалуйста, а как перестроить мне нужные pagetitle?
                          как сделать хлебные крошки? а то сейчас показывает ГЛАВНАЯ
                          Это полностью переписывать шаблон, получать по uri id ресурса, получать его поля и выставлять их плейсхолдерами?
                          То есть если на странице у меня было [[*pageitle]], то будет [[+pagetitle]]?
        Константин
        13 апреля 2017, 13:34
        -1
        Какие ограничения для демо версии?
        serg
        23 июня 2017, 15:28
        0
        Если пытаться получить ресурс по ajax, то выполняются все плейсхолдеры, Fenom, но не !pdoPage. Есть какой-то вариант обойти это ограничение?
          Володя
          23 июня 2017, 15:30
          0
          в пакете нет никаких ограничений, проблема думаю в другом…
            serg
            23 июня 2017, 15:52
            0
            Может есть какие-то идеи насчет возможной проблемы?
            Чанк-шаблон страницы pastebin.com/z8hJrFCy. Всё вызывается как надо, s9939.h8.modhost.pro/users/33. Элемент с комментариями #user_comments_ajax_row
            При попытке подгрузить методом .get Jquery приходит всё, но на месте вызова !pdoPage пустота. s9939.h8.modhost.pro/blog-glavnogo-vracha/ клик на «запись 2», клик на пользователя.
              serg
              23 июня 2017, 16:26
              0
              Да, косяк вряд ли в VP, потому что вызов pdoPage БЕЗ &ajaxMode=`button`работает как надо.
                Володя
                23 июня 2017, 16:33
                0
                Незнаю, исходный код компонентов доступен на гитхаб, если вам интересно можно попробовать выяснить в чем дело.
        Илья
        10 мая 2018, 13:42
        0
        Здравствуйте, коллеги.
        Подскажите пожалуйста как правильно прописать в маршрут артикул товара, если он является опцией msoptionprice?
        как вообще правильно организовать виртуальные страницы из опций?
        Олег
        01 июня 2018, 11:14
        0
        Добрый день, есть пример как работают не виртуальные страницы, а sendforward с ресурсом?
        Выпадает в 500 ошибку.
        Нужен конкретный ресурс, чтобы привязать комментарии к реальной странице, а не к виртуальной.
        Либо как виртуальной задать id, чтобы по нему выводить комментарии
        g0dzilla
        26 июля 2018, 17:05
        0
        Параметр «request_alias» вроде как уже звучит по-другому.
        Метод getUri(),
        $alias = $this->modx->getOption('request_alias', null, 'q');
        Ныне он называется «request_param_alias».
        Кирилл Киселев
        16 августа 2018, 09:26
        0
        А я могу как-то на входе изменить параметр и отдать его по-другому?
        Например, пришёл параметр {par1} из маршрута как catalog, меняю его на shop и на выходе должен получится не domain/catalog/, а domain/shop/. Есть ли какой-то метод?
        Роман
        30 апреля 2019, 11:15
        0
        Перечитал весь топик, не до конца понял принцип работы. Модуль очень интересный, хочу реализовать вывод опций товаров на отдельной странице. Как я вижу.
        Есть опции: Амперы(amper), Вольты(volt), Давление(davlenie) и хотелось бы вывести
        /options/amper/
        /options/volt/
        /options/davlenie/
        Реально ли так реализовать?
        slavkovladymyr
        19 июня 2019, 17:40
        0
        После последних коммитов разработчиков FastRoute — github.com/nikic/FastRoute дополнение не работает. Был удален bootstrap.php файл и много изменений в других файлах библиотеки. Новые установки VirtualPage с измениями FastRoute не будут работать.
        Просим Володю обновить модуль ;)
          Abu
          Abu
          30 июня 2019, 00:32
          0
          Да уж, пришлось вручную скачать и распаковать старый FastRoute в директорию core/components/virtualpage/vendor/fastroute
        Владимир
        Вчера в 09:17
        0
        А вот этот аналог modx.com/extras/package/?id=modxfastrouter кто-нибудь использует? Раз уж VirtualPage больше недоступен.
        Доки github.com/vanchelo/modxFastRouter
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
179