Парсинг шаблона в переменной, в цикле

Здравствуйте. Подскажите пожалуйста, есть такая задача:
Нужно пройтись по товарам магазина и забрать с них определенные поля, после чего записать их в свой шаблон 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 и тд.) еще не существует, да и писать их нужно в цикле.
На деле полей будет много, и они могут меняться, поэтому хотелось бы разруливать из подготовленного шаблона а в цикл отдавать для парсинга. Мне кажется так правильнее, возможно я ошибаюсь, у меня мало опыта. Подскажите пожалуйста, можно ли так сделать?
Dolce
11 августа 2018, 17:10
34
0

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

Dolce
13 августа 2018, 17:23
0
Вынес шаблон в чанк и сделал так
$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);