Дополнительное поле и отображение его в письме-заказе и в админке Юми

25.08.2015

darklight

Для удобства работы менеджеров, в письме-оповещении о заказе, а также в административной панели сайта, иногда возникает необходимость вывести:

  • артикул или код товара;
  • контактные данные покупателя;
  • адрес доставки;
  • состав заказа.

Дополнительное поле в админке

Начнем с редактирования админки сайта. За отображение заказа отвечают файлы: order-edit.xsl, config.ini, i18n.php.

Открываем для редактирования файл /styles/skins/mac/data/modules/emarket/order-edit.xsl и добавляем строки:

строка 176

<th align="left">
       <xsl:text>&label-order-items-prefix;</xsl:text>
</th>

строка 422

<xsl:template match="*[../@prefix]" mode="price">
       <xsl:value-of select="concat(../@prefix, ' ', .)" />
</xsl:template>

В файле /config.ini дописываем:

строка 152

uobject.http.allow = "1"

В файл языковых констант /classes/modules/emarket/i18n.php, добавляем строку:

'label-order-items-prefix' => 'Код товара',

В админке появляется поле:

Дополнительное поле и отображение его в админке Юми

Дополнительные поля в письме-оповещении о заказе

В файле /xsltTpls/mail/emarket/default.xsl в конструкцию <xsl:template match="status_notification_receipt">...</xsl:template> добавялем строку:

<xsl:apply-templates select="document(concat('udata://emarket/order/',order_id))" mode= "unic"/>

Далее в <xsl:template match="neworder_notification">...</xsl:template> выводим все нужные нам поля:

<xsl:apply-templates select="document(concat('udata://emarket/order/',order_id))" mode= "unic"/><br/><br/>
<xsl:variable select="document(concat('uobject://',order_id))//property[@name='customer_id']/value/item/@id" name="customer1"/>
<xsl:text>Имя:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='fname']/value" />
<br /><br />
<xsl:text>Фамилия:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='lname']/value" />
<br /><br />
<xsl:text>Отчество:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='father_name']/value" />
<br /><br />
<xsl:text>E-mail:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='email']/value" />
<br /><br />
<xsl:text>Телефон:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$customer1))//property[@name='phone']/value" />
<br /><br />
<xsl:text>Адрес доставки:  </xsl:text>
<br /><br />
<xsl:variable select="document(concat('uobject://',order_id))//property[@name='delivery_address']/value/item/@id" name="delivery1"/>
<xsl:text>Страна:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$delivery1))//property[@name='country']/value" />
<br /><br />
<xsl:text>Регион:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$delivery1))//property[@name='region']/value" />
<br /><br />
<xsl:text>Город:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$delivery1))//property[@name='city']/value" />
<br /><br />
<xsl:text>Улица:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$delivery1))//property[@name='street']/value" />
<br /><br />
<xsl:text>Дом:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$delivery1))//property[@name='house']/value" />
<br /><br />
<xsl:text>Квартира:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$delivery1))//property[@name='flat']/value" />
<br /><br />
<xsl:text>Комментарий:  </xsl:text>
<xsl:value-of select="document(concat('uobject://',$delivery1))//property[@name='order_comments']/value" />

и добавляем сам шаблон, перед </xsl:stylesheet>

<xsl:template match="udata" mode= "unic">
<div class="order">
<hr/>
<xsl:apply-templates select="items/item" mode = "lin"/>
<hr/>
<p>Всего товаров: <xsl:value-of select="summary/amount" /> шт.</p>
<p>На сумму: <xsl:value-of select="summary/price" /><xsl:value-of select="summary/price/@suffix" />. </p>
</div>
</xsl:template>
        
<xsl:template match="udata//item" mode= "lin">
<p><a href="{page/@link}"><xsl:value-of select="@name"/></a></p>
<p>Цена:  <xsl:value-of select="price"/> <xsl:value-of select="price/@suffix" />.
Количество: <xsl:value-of select="amount"/> шт.
<xsl:value-of select="document(concat('upage://',page/@id))/udata//property[@name='prefix']/value"/>
</p>
</xsl:template>

В файл /xsltTpls/sys-tpls/emarket-mail.xsl в <xsl:template match="item" mode="order">...</xsl:template> приблизительно в строку 76 добавляем:

<xsl:value-of select="$item//property[@name = 'prefix']/value"/>

Вот что получилось:

Дополнительные поля в письме-оповещении о заказе

 



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

Canekt :: 19.08.2016

Статья во многом помогла, спасибо, но вот данные незарегистрированного пользователя как добавить к письму, не подскажите?

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

Новости

    ФЗ-54 для интернет магазинов

    С 1.02.2017 г. российская фискально-кассовая система серьезно изменилась.

Архив новостей

Блог

Вывод дополнительного поля в "Версии для печати" свойств заказа UMI.CMS

Добавим код товара в "Версию для печати" из "Свойств заказа"

Fatal error: Allowed memory size в ImageCms

На одном из заброшенных сайтов на ImageCms при попытке зайти в админ. панель появилась ошибка.

Дополнительное поле и отображение его в письме-заказе и в админке Юми

Для удобства работы менеджеров
Читать блог