<?php /** * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component * @package jbzoo * @version 2.x Pro * @author JBZoo App http://jbzoo.com * @copyright Copyright (C) JBZoo.com, All rights reserved. * @license http://jbzoo.com/license-pro.php JBZoo Licence * @coder Alexander Oganov <t_tapak@yahoo.com> */ // no direct access defined('_JEXEC') or die('Restricted access'); /** * Class JBCartElementEmailUser */ class JBCartElementEmailTrack extends JBCartElementEmail { /** * @param array $params * @return bool */ public function hasValue($params = array()) { return true; } /** * Render elements data * @param array $params * @return null|string */ public function render($params = array()) { $post = $this->getOrder()->tracking; // jbdump($post); $track = trim($this->config->get('track')); echo "<p>".$track."</p>"; echo '<h1>'.$post.'</h1>'; echo "<p><a target='_blank' href='http://pecom.ru/services-are/order-status/'>"."Отследить местоположение груза на сайте транспортной компании ТК ПЭК"."</a></p>"; echo "<p>Будем Вам благодарны если Вы оставите отзыв о работе магазина на Яндекс.Маркете: <a target='_blank' href='https://market.yandex.ru/shop/287208/reviews'>Оставить отзыв</a></p>"; } }
Небольшие нюансы в этом файле: текст отсылаемый клиенту подготовлен под ТК ПЭК, также вставлена ссылка, для примера, для клиента, чтобы он мог оставить отзыв на Яндекс.Маркете.
б) файл track.xml со следующим содержанием:
<?xml version="1.0" encoding="utf-8"?> <!-- JBZoo App is universal Joomla CCK, application for YooTheme Zoo component @package jbzoo @version 2.x Pro @author JBZoo App http://jbzoo.com @copyright Copyright (C) JBZoo.com, All rights reserved. @license http://jbzoo.com/license-pro.php JBZoo Licence @coder Alexander Oganov <t_tapak@yahoo.com> --> <element type="element" group="Core" hidden="false"> <name>Номер трекинга</name> <author>AidarT</author> <creationDate>2016</creationDate> <copyright>Copyright (C)</copyright> <authorEmail>info@kolesa16.ru</authorEmail> <authorUrl>http://kolesa16.ru</authorUrl> <version>1.0</version> <description>Номер трекинга из заказа</description> <params> <param name="track" type="text" default="" label="Текст для отправки" description="Введите текст для отправки клиенту" /> </params> </element>
Тут вроде все просто, идем дальше.
2) Для того чтобы у нас появился нужный почтовый шаблон, идем по пути: *\media\zoo\applications\jbuniversal\templates-system\renderer\email\ и создаем файл tracking.php
<?php /** * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component * @package jbzoo * @version 2.x Pro * @author JBZoo App http://jbzoo.com * @copyright Copyright (C) JBZoo.com, All rights reserved. * @license http://jbzoo.com/license-pro.php JBZoo Licence * @coder Alexander Oganov <t_tapak@yahoo.com> */ // no direct access defined('_JEXEC') or die('Restricted access'); ?> <table <?php echo $this->getAttrs(array( 'cellpadding' => 8, 'width' => '800px' )) . $this->getStyles(array( 'border-collapse' => 'collapse', 'font-size' => '14px', 'width' => '800px' )); ?>> <?php if ($this->checkPosition('title')) : ?> <tr> <td> <h2><?php echo $this->renderPosition('title'); ?></h2> <hr> </td> </tr> <?php endif; ?> <?php echo $this->renderPosition('body', array('style' => 'table-row')); ?> </table>
А также модифицируем, лежащий тутже файл positions.xml:
<?xml version="1.0" encoding="utf-8"?> <!-- JBZoo App is universal Joomla CCK, application for YooTheme Zoo component @package jbzoo @version 2.x Pro @author JBZoo App http://jbzoo.com @copyright Copyright (C) JBZoo.com, All rights reserved. @license http://jbzoo.com/license-pro.php JBZoo Licence --> <renderer> <positions layout="default"> <position name="title">Title</position> <position name="body">Body</position> </positions> <positions layout="tracking"> <position name="title">Title</position> <position name="body">Body</position> </positions> <positions layout="order"> <position name="title">Title</position> <position name="items">Items</position> <position name="info">Info</position> <position name="payment">Payment</position> <position name="shipping">Shipping</position> <position name="other">Other</position> </positions> </renderer>
3) Настраиваем почтовый шаблон в "Настройка почтовых шаблонов" в коммерции JBZoo:
4) Настраиваем события смены статусов:
5) Добавляем языковые константы (2 шт. для админки Joomla):
6) Далее заходим в БД (phpmyadmin), находим свою БД и таблицу с заказами:
Добавляем строку с названием tracking, как показано на скриншоте выше (это понадобиться чтобы сохранять трек-номера клиентов).
7) Далее идем по пути: *\media\zoo\applications\jbuniversal\framework\views\jborder и немного модифицируем файл: _edit_block_shipping.php
<?php /** * JBZoo App is universal Joomla CCK, application for YooTheme Zoo component * @package jbzoo * @version 2.x Pro * @author JBZoo App http://jbzoo.com * @copyright Copyright (C) JBZoo.com, All rights reserved. * @license http://jbzoo.com/license-pro.php JBZoo Licence * @coder Alexander Oganov <t_tapak@yahoo.com> */ // no direct access defined('_JEXEC') or die('Restricted access'); /** @var JBCartStatusHelper $jbstatus */ $jbstatus = $this->app->jbcartstatus; $statusList = $jbstatus->getList(JBCart::STATUS_SHIPPING, true, true, $order); if ($shipping) { $curStatus = $shipping->getStatus(); } ?> <div class="uk-panel uk-panel-box"> <h3 class="uk-panel-title"><?php echo JText::_('JBZOO_ORDER_SHIPPING_TITLE'); ?></h3> <?php echo $this->shipRender->renderAdminEdit(array('order' => $order)); ?> <?php if ($shipping) : ?> <dl class="uk-description-list-horizontal"> <dt><?php echo JText::_('JBZOO_ORDER_SHIPPING_BLOCK_PRICE'); ?></dt> <dd> <p><?php echo $shipping->getRate()->html(); ?></p> </dd> <dt><?php echo JText::_('JBZOO_ORDER_SHIPPING_BLOCK_STATUS'); ?></dt> <dd> <p><?php echo $this->app->jbhtml->select($statusList, 'order[shipping][status]', '', $curStatus); ?></p> </dd> <dt><?php echo JText::_('JBZOO_ORDER_TKNUMBER'); ?></dt> <dd> <p><textarea cols="100" rows="1" style="resize: vertical;" name="order[tracking]" placeholder="<?php echo JText::_('JBZOO_ORDER_TKNUMBER_DESC'); ?>"><?php echo $order->tracking; ?></textarea> </p> </dd> </dl> <?php endif; ?> <?php echo $this->shipFieldsRender->renderAdminEdit(array('order' => $order)); ?> </div>
Блок нужен для вывода в заказе поля для трек-номера и название этого блока.
Заходим в админку Joomla в форму заказа клиента и проверяем, что все вывелось как нужно:
9) Почти все готово))) Далее идем по пути: *\media\zoo\applications\jbuniversal\framework\classes\cart\jborder.php и вносим в него правки (прикрепил файлик архивом).
10) И напоследок сохраняем значение поля. Идем *\media\zoo\applications\jbuniversal\framework\models\jbmodel.order.php и вставляем 109 строкой:
'tracking' => $order->tracking,
Вот вроде бы и все модификации, заходим в админку и балуемся с отправкой трек номера клиентам))).
Всем бобра и скорейшего прихода весны)))
P/S/ также будет не комильфо, если клиент не увидит этот трек-номер у себя в личном кабинете, поэтому создал новую тему на форуме: http://forum.jbzoo.c...-kabinete-polz/ Надеюсь в ближайшее время мне подскажут и я добавлю в эту тему и эту обновку.
P/S/ Не скромно попрошу админов добавить эту ветку в рецепты, если я все правильно здесь указал) явно есть какие-либо ошибки) надеюсь вы их найдете и мы вместе их исправим.
P/S/S Перед отправкой трек-номера клиенту, сначала сохраняем его в админке, а уже потом отправляем его.
Attached Files
Edited by AidarT, 12 April 2016 - 22:13.