Fi1osof 29 сентября 2013 2 2
Так как я удаляю лишний код из шаблонов сборки, но не хочется лишать программистов примеров, публикую код здесь.

{* Шаблон товара *}
{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}
2 комментария
style-nes1
style-nes 29 сентября 2013г в 08:27 #
Опечатка
обрабатывается <strong>на</strong> MODX-парсером,
а на уровне PHP
Fi1osof1
Fi1osof 29 сентября 2013г в 08:33 #
Спасибо, поправил.
P.S. такие комменты лучше в личку. Здесь они мало для кого полезны.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.