Вывод и генерация страниц из своих таблиц Новый


Добрый день.
есть своя база с таблицами: регионы -> города -> компании -> и.т.д.

Как только вопросы гуглу не завал, даже близко к ответу не приблизился.
Возможно ли в modx генерировать старницы на основе свои таблиц.
Чтобы к примеру нагененировать странц из таблицы города и страницы из компаний.
на каждый город и компанию отдельная страница, автоматически.
Подскажите в какую сторону копать и есть ли такая возможность или решения.
А то уже на laravel хотел, только тогда там докучи придётся cms накидать, не люблю велосипеды делать))
03 октября 2016, 08:11    Alexander777   
0    379 0

Комментарии (11)

  1. Наумов Алексей 03 октября 2016, 09:46 # 0
    Да, можно.
    Я бы взял компонент VirtualPage и настроил там обработчики нужных типов страниц. Это 100% рабочий вариант, я так делал)
    1. Alexander777 03 октября 2016, 12:10 # 0
      Спасибо! попробуем, что из этого выйдет! Отпишу о результате!
      1. Alexander777 22 июня 2017, 06:44 # 0
        Снова вернулся к этом вопросу, поставил virtualpage
        дальше только не пойму. как из базы получить записи с страницу.
        Сделал маршрут /city/{id:[0-9]+}
        тип GET
        событие OnHandleRequest

        Обработчик. Тип Ресурс.

        по переходу site.ru/city/5
        открывается просто указанная страничка.

        я так понимаю надо выловить id=5
        и по нему вытащить из базы. но где все эти запросы и условия прописывать.
        тыкните носом пожалуйста, на какую тему поискать документацию.
        Спасибо!
        1. Наумов Алексей 22 июня 2017, 09:16 # 0
          Теперь на этом ресурсе вызываете любой сниппет.

          В нем для начала сделайте
          print_r($_REQUEST);
          думаю, дальше будет понятно.

          Цитата из описания:
          Все именованные параметры fastrouter можно получить в $_REQUEST. Ключ по умолчанию 'fastrouter'
          при обработчике тип — ресурс, параметры также доступны в плейсходерах с префиксом vp.
          1. Alexander777 22 июня 2017, 09:47 # 0
            Спасибо. за утро уже докопался, что PHP код можно писать в Сниппетах ))
            там в сниппете уже и делать запросы к БД через PDO или xPDO?!
            1. Володя 22 июня 2017, 09:51 # +1
              с шаблонизатором все проще, можно писать прям в шаблоне все
              {extends 'file:templates/category.tpl'}
              
              {block 'initialize'}
                  {parent}
              
                  {var $tag = $_modx->getPlaceholder('vp.tag')}
                  {var $_modx->resource.longtitle = $tag}
              
                  {var $crumbs = 0}
                  {var $parents = 0}
                  {var $resources = '!msProducts'|snippet:[
                  'parents' => 0,
                  'optionFilters' => json_encode([
                  'tags' => $tag
                  ]),
                  'returnIds' => 1
                  ]}
              
                  {if $resources is empty}
                      {var $url = ('site_start'|option) | url : ['scheme' => 'full'] : []}
                      {$_modx->sendRedirect($url, ['responseCode' => 'HTTP/1.1 404 Not Found'])}
                  {/if}
              
              {/block}
              
              1. Alexander777 22 июня 2017, 13:53 # 0
                До такого уровня (шаблонизатор в MODx ещё не дорос) хотя читал статьи, что это в разы ускорят. Но тут вроде используется smary. А я уж привык к blade в laravel))
                Пока без шаблонизатора, а то сроки горят. ну а в целом так как обычно. из Request вытаскивать параметры, и из базы по ним доставать значения в массив и вставлять в нужные места на странице?
                1. Владимир 22 июня 2017, 14:44 # 0
                  тут вроде используется smary
                  — нет, fenom:
                  github.com/fenom-template/fenom/tree/master/docs/ru
                  docs.modx.pro/components/pdotools/parser
            2. Alexander777 22 июня 2017, 15:45 # 0
              Что-то чем дальше читаю разные источники, тем больше запутался.
              Табличку свою в базу залил.
              но как к ней не обращаюсь, толку нет.
              и так и сяк и так $modx->getObject('my_cityes',array('id'=>5))
              полное название таблицы modx_my_cityes.
              Нужно перед этим xml схему и php файлы какие-то генерировать чтоли?
              ну чтобы с xPDO работать и обращаться к таблице.
              1. Alexander777 22 июня 2017, 16:18 # 0
                Вобщем пока xPDO мне не поддался с первого дня ковыряния, но уже понял, что штука мощная.
                пока сделал так для теста.
                все данные норм выбирает. буду разбираться как их передать в шаблон для title и.т.д.
                $cityID = ($_REQUEST[fastrouter][id]);
                $sql = «SELECT * FROM modx_my_cityes where id = $cityID»;
                $statement = $modx->query($sql);
                $city = $statement->fetchAll(PDO::FETCH_ASSOC);
                print_r($city);
        2. but1head 03 октября 2016, 17:15 # 0
          $modx->resource = $resource;
          $modx->request->prepareResponse();
          
          Как вариант использовать плагины на 404, ну а $resource уже ваш объект.
          VirtualPage так и работает если не ошибаюсь.
          Вы должны авторизоваться, чтобы оставлять комментарии.