Парсинг шаблона в переменной, в цикле
Здравствуйте. Подскажите пожалуйста, есть такая задача:
Нужно пройтись по товарам магазина и забрать с них определенные поля, после чего записать их в свой шаблон XML а потом в файл. Можно сделать так, бегать в цикле и писать значения куда нужно:
(где-то в начале файла)
На деле полей будет много, и они могут меняться, поэтому хотелось бы разруливать из подготовленного шаблона а в цикл отдавать для парсинга. Мне кажется так правильнее, возможно я ошибаюсь, у меня мало опыта. Подскажите пожалуйста, можно ли так сделать?
Нужно пройтись по товарам магазина и забрать с них определенные поля, после чего записать их в свой шаблон XML а потом в файл. Можно сделать так, бегать в цикле и писать значения куда нужно:
foreach ($product__list as $product__item) {
// Выборка необходимых свойств
$product__title = $product__item->get('pagetitle'); // Имя товара
$product__id = $product__item->get('id'); // id товара
$product__availability = $product__item->getTVvalue($product__tvInstock);
$product__url = $modx->makeUrl($product__id, "", "", "full");
// смотрим значение переменной и присваиваем TRUE или FALSE
($product__availability == $product__statusOn) ? TRUE : FALSE;
$data__body .= "<offer id='$product__id' available='$product__availability'>\n"; // Начало товара
$data__body .= "<url>$product__url</url>\n";
$data__body .= "<name>$product__url</name>\n";
$data__body .= "</offer>\n"; // Конец товара
}
Но хотелось бы сам шаблон вынести из цикла, вверх по коду, к настройкам, что бы работать с ним отдельно, а в цикл его передавать на заполнение полей, то есть как-то так(где-то в начале файла)
$product__tplXML = "
<offer id='$product__id' available='$product__availability'>
<url>$product__url</url>
<name>$product__url</name>
";
А потом в цикле делать как-то так:foreach ($product__list as $product__item) {
// Выборка необходимых свойсты
$product__title = $product__item->get('pagetitle'); // Имя товара
$product__id = $product__item->get('id'); // id товара
$product__availability = $product__item->getTVvalue($product__tvInstock);
$product__url = $modx->makeUrl($product__id, "", "", "full");
// смотрим значение переменной и присваиваем TRUE или FALSE
($product__availability == $product__statusOn) ? TRUE : FALSE;
$product__tplXML = $modx->parseChunk('product__tplXML',array('url' => $product__url));
// Записываем шаблон товара в тело
$data__body .= $product__tplXML;
}
Но так, разуметься, не работает ($data__body .= $product__tplXML) на момент создания .= $product__tplXML (вверху кода) никаких переменных для записи ($product__title, $product__id и тд.) еще не существует, да и писать их нужно в цикле. На деле полей будет много, и они могут меняться, поэтому хотелось бы разруливать из подготовленного шаблона а в цикл отдавать для парсинга. Мне кажется так правильнее, возможно я ошибаюсь, у меня мало опыта. Подскажите пожалуйста, можно ли так сделать?
Комментарии: 1
Вынес шаблон в чанк и сделал так
$product__values = [
'product__id' => $product__id
,'product__availability' => $product__availability
,'product__url' => $product__url
,'product__price' => $product__id
,'product__parent' => $product__parent
,'product__name' => $product__name
];
$product__tpl = $modx->parseChunk($product__tplXML, $product__values);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.