Где-то на втором часу попыток расписать разметку схемы в шаблоне, что бы и вложенность обеспечить и свои данные согласно макета разместить, я плюнул и реализовал сборку json-кода разметки в локальном модуле карточки и заброску его в шаблон.)))) Разборщики схемы понимают ее не только в виде тегов, но и в виде json-объектов. В разметке осталась только разметка крошек и блок о компании. А весь продукт внутри генератора карточки. Вот сам код сборки объекта (в данном случае в функции makeUserOperatios, там же собираются и всякие og-параметры и прочая дребедень для соцсеток, телеграмма и шары):
$JSONLDL=array();
$JSONLDL['@context']='http://schema.org/';
$JSONLDL['@type']='Product';
$JSONLDL['name']=$form_data_shared['meta_h1']['value'];
$JSONLDL['url']=$this->getServerFullUrl().'/'.Sitebill::getClearRequestURI();
$JSONLDL['description']=mb_substr(strip_tags($form_data_shared['text']['value']), 0, 200, 'utf-8');
$JSONLDL['image']=$this->getServerFullUrl().'/img/data/'.$form_data_shared['image']['image_array'][0]['normal'];
$JSONLDL['offers']=array();
$JSONLDL['offers']['@type']='Offer';
if($form_data_shared['optype']['value']==2){
$JSONLDL['offers']['businessFunction']='Sell';
}elseif($form_data_shared['optype']['value']==1){
$JSONLDL['offers']['businessFunction']='LeaseOut';
}
$JSONLDL['offers']['price']=$form_data_shared['price']['value'];
$JSONLDL['offers']['priceCurrency']=$form_data_shared['currency_id']['value_string'];
$JSONLDL['offers']['availableAtOrFrom']['@type']='Place';
$JSONLDL['offers']['availableAtOrFrom']['address']['@type']='PostalAddress';
$JSONLDL['offers']['availableAtOrFrom']['address']['addressCountry']=$form_data_shared['country_id']['value_string'];
$JSONLDL['offers']['availableAtOrFrom']['address']['addressRegion']=$form_data_shared['region_id']['value_string'];
$JSONLDL['offers']['availableAtOrFrom']['address']['addressLocality']=$form_data_shared['city_id']['value_string'];
$this->template->assign('ldjson', json_encode($JSONLDL));
и вот так он внутри head-тега вставляется
{if $ldjson!=''}
<script type="application/ld+json">{$ldjson}</script>
{/if}