We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26078
    • 2 Posts
    Здравствуйте, коллеги!

    Возник такой вопрос. Как правильно оформить передачу в сниппет тегов типа [*id*] и тому подобных конструкций и последующую обработку их в сниппете.

    Простейший пример:
    сниппет
    <?php>
      $doc=$modx->getDocument($pageId,'*');
      return $doc['title'];
    <?>
    


    и его вызов в чанке:
    ...
    [[getTitle? &pageId=`[*id*]`]]
    ...
    


    При таком коде в сниппет попадает значение $pageId="[*id*]", которое и передается в качестве параметра в функцию getDocument(). Естественно, функция возвращает пустой результат.

    Как решить эту проблему?

    P.S.: В FAQ наткнулся на похожий http://modxcms.com/forums/index.php/topic,21846.0.html вопрос, оставшийся без ответа.

      • 32725
      • 107 Posts
      Передать ID страницы вызовом [[getTitle? &pageId=`[*id*]`]] не получится, так как теги [*tagname*] парсером разбираются почти в самом конце, после тегов [[tagname]] и [!tagname!].
      Намного проще получать теги в самом сниппете, например:
      <?php
      $pageId = $modx->documentIdentifier;
      $pageId = $modx->documentObject['id'];
      $pagetitle = $modx->documentObject['pagetitle'];
      $parent = $modx->documentObject['parent'];
      ?>
      

      Через documentObject можно получать все поля текущей страницы (ресурса), которые есть в таблице site_content.
      Но TV таким образом получить не выйдет. Для этого уже есть метод http://wiki.modxcms.com/index.php/API:getTemplateVar"" target="_blank" rel="nofollow">$modx->getTemplateVar().
        My portfolio
        Самурай без меча подобен самураю с мечом, только без меча.
        • 26078
        • 2 Posts
        Спасибо, работает!