Николай Ланец
29 сент. 2013 г., 2:28

Два способа вывода данных документа в modxSmarty

Так как я удаляю лишний код из шаблонов сборки, но не хочется лишать программистов примеров, публикую код здесь.
{* Шаблон товара *} {extends file="layout.tpl"} {block name=content} {* Есть два варианта получения данных товара: 1. Получить объект продукта через $modx->resource->getOne('Product') 2. Через вызов процессора. Второй способ используется чаще, так как в процессоре может быть использована более мощная логика, нежели просто получение свойств товара. К тому же единый на все процессор гарантирует актуальность данных и логики во всех местах вызова. *} {* Способ №1. Через объект *} <h2>Способ №1</h2> {* Получаем связанный объект товара (ShopmodxProduct) *} {assign var=productObject value=$modx->resource->getOne('Product')} {if $productObject} {assign var=product value=$productObject->toArray()} {/if} <div class="relative" style="margin: 0 0 50px;"> {* Проверяем наличие фото. Если нет, то выставляем картинку "Нет фото". Я специально не стал вставлять фото по умолчанию в TV-шку, чтобы было больше примеров. *} {field name=image assign=image} {if !$image} {assign var=image value="{config name=assets_url}images/products/No-Photo.jpg"} {/if} {assign var=categoryObject value=$modx->resource->getOne('Parent')} {if $categoryObject} {assign var=category value=$categoryObject->toArray()} {/if} {* Ссылка на оригинальное фото *} <a href="{$image}"> <img src="{snippet name=phpthumbof params="input=`{$image}`&options=`w=200`"}" title="{field name=pagetitle}" align="left"/> </a> <table> <tbody> <tr> <td>Наименование: </td> {* {field name=pagetitle} - это альтернатива MODX-вому [[*pagetitle]] Но в отличие от нативного тега обрабатывается не MODX-парсером, а на уровне PHP, что более производительно. К томуже если шаблон кешируемый, то в кеш документа попадет конечный HTML, а не MODX-тег. *} <td>{field name=pagetitle}</td> </tr> <tr> <td>Категория: </td> {* {link id=$category.id} Это альтернатива [[~id]], то есть $modx->makeUrl($id); *} <td><a href="{link id=$category.id}" title="{$category.pagetitle}">{$category.pagetitle}</a></td> </tr> <tr> <td>Цена: </td> <td>{$product.sm_price|number_format:2:".":" "} руб.</td> </tr> </tbody> </table> </div> {* Способ №2. Через процессор *} {assign var=params value=[ "where"=>["id"=>$modx->resource->id] ,"current" => true ]} {processor action="web/catalog/products/getdata" ns="modxsite" params=$params assign=result} {if $result.success} {assign var=object value=$result.object} {/if} <h2>Способ №2</h2> {include file="shop/products/list/layout.tpl"} {/block}
Опечатка
обрабатывается <strong>на</strong> MODX-парсером, а на уровне PHP
Спасибо, поправил. P.S. такие комменты лучше в личку. Здесь они мало для кого полезны.

Добавить комментарий