Вывод последнего id с определенным шаблоном

Добрый день, помогите, пожалуйста, проблема заключается в следующем. На сайт прикрепил соц кнопки поделиться, нужно сделать чтобы при нажатии на поделиться заголовок, картинка и текста брались из последней добавленной новости. Так как они постоянно будут добавляться я ничего лучше не придумал как выводить через getResourceField, а в id подставлять значение из сниппета который будет искать max id с шаблоном 2. Помогите, пожалуйста сниппет написать.
Кареев Николай
11 марта 2015, 11:25
modx.pro
1 307
0

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

Сергей Шлоков
11 марта 2015, 15:43
+2
Думаю, что не ошибусь, если скажу, что такая просьба должна заканчиваться словами:
«И сколько такая работа будет стоить?»
    Кареев Николай
    11 марта 2015, 15:53
    0
    Нашел вот такой запрос:
    <?php
        $stmt = $modx->query("SELECT MAX(id) FROM {$modx->getTableName('modResource')}");
        $maxId = (integer) $stmt->fetch(PDO::FETCH_COLUMN);
        $stmt->closeCursor();
    ?>
    Кто может подсказать как его исправить, чтобы он работал как нужно?
      Сергей Шлоков
      11 марта 2015, 16:11
      0
      Ну как-то так
      $q = $modx->newQuery('modResource');
      $q->select('id,pagetitle');
      $q->where(array('deleted'=>0,'published'=>1,'template'=>2));
      $q->sortby('id','DESC');
      $q->limit(1);
      if ($q->prepare() && $q->stmt->execute()) {
          $res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
      }
      print_r($res);
        Кареев Николай
        11 марта 2015, 16:36
        0
        Спасибо огромное, но выводит вот таким образом «Array ( [0] => Array ( [id] => 13 ) )», подскажите, пожалуйста, как нужно подправить чтобы выводился только id?
        Если допустим выборку( $q->where(array('deleted'=>0,'published'=>1,'template'=>2)); ) делать не по нескольким параметрам, а только по template?
          Сергей Шлоков
          11 марта 2015, 16:46
          0
          Так это уже и есть последняя новость. Можно брать заголовок (pagetitle) и любое другое поле.
          Для одной записи нужно использовать fetch.
          if ($q->prepare() && $q->stmt->execute()) {
              $res = $q->stmt->fetch(PDO::FETCH_ASSOC); //
          }
            Кареев Николай
            11 марта 2015, 17:06
            0
            Я имею ввиду как выводить не массивом, с fetch он все равно выводит массивом «Array ( [id] => 13 )». Я хочу использовать один только этот сниппет и подставлять его в сниппет getResourceField в &id
              Алексей Ерохин
              12 марта 2015, 17:52
              0
              Выбираете только id, потом
              $q->stmt->fetch(PDO::FETCH_COLUMN);
                Сергей Шлоков
                13 марта 2015, 12:39
                0
                Я человеку подсказал, как вывести последнюю новость. А он хочет взять только id и подставить в другой сниппет, чтобы вывести эту же новость. Тут человек должен сам разобраться.
      Кареев Николай
      13 марта 2015, 12:50
      0
      Спасибо большое, но я вывел немножко по другому
      print_r($res['id']);
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        9