We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33051
    • 5 Posts
    Добрый день, сообщники!
    Для начала объясню задачу: есть каталог фильмов. Есть документ, в котором должны выводится краткие анонсы (тизеры) фильмов, которые состоят из разных TV-параметров (типа название, год выпуска, жанр, картинка и т.д.) и ссылки на полное описание. Для этого я создал сниппет, который извлекает TV-параметры из документов и соответственно выводит это все безобразие. Проблема в том, что php-код при этом изобилует html-тегами, а от этого голова кружится. Примерно так:
    $output.="<div class=\"box\">".
    "<img src=\"".$res['IMAGE']."\" />".
    "<ul>".
    "<li>Русское название: ".$res['NAME_RU']."</li>".
    "<li>Английское название: ".$res['NAME_EN']."</li>".
    ...
    "</ul></div>";


    Так вот, собственно вопрос, уважаемые знатоки: можно ли сам блок тизера как-то вынести в отдельный чанк, а потом туда каким-то образом подставлять параметры? Если да, то как?

    PS: всякими примочками типа Ditto и т.д. принципиально пока не пользуюсь.
      • 33051
      • 5 Posts
      Нашел решение, вдруг кому понадобится:
      1. Создаем чанк, в котором в нужных местах ставим конструкции вида {имя_параметра} примерно так:
      ...
      <img src="{IMAGE}" />
      <ul>
      <li><b>Русское название: </b>{NAME_RU}</li>
      <li><b>Английское название: </b>{NAME_EN}</li>
      ...

      2. В коде снипета заполняем массив значениями для параметров и вызываем функцию $modx->parseChunk(имя_чанка, массив_параметров):
      ...
      $chunkArr = array(
      'IMAGE' => $res['IMAGE'],
      'NAME_RU' => $res['NAME_RU'],
      'NAME_EN' => $res['NAME_EN']
      );
      $output = $modx->parseChunk('TEASER', $chunkArr);
      ...


      PS: суффикс и префикс для распознавания параметров ( ’{’ и ’}’ ) можно менять (см. документацию по функции parseChunk).

      PSS: может кто знает более элегантное решение?
        • 24704
        • 35 Posts
        добрый вечер.
        значительно облегчит задачу дитто, пример решения на пальцах таков что у вас для каждого фильма отдельный док. и через дитто делаете вывод с названием[pagetitle], коротким описанием[longtitle] и можете через тот же тв-параметр вынести жанр. почитайте документацию.