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

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

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

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

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

Начнем с редактирования админки сайта. За отображение заказа отвечают файлы: 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

GeekBrains
<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"/>

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

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