Перейти к содержимому


Фотография
- - - - -

Сохранение номера трекинга в БД и дальнейшая отсылка клиенту (Мануал)

номер трекинга отслеживание заказа пишем в бд отправка трек-номера клиенту

Сообщений в теме: 2

#1 AidarT

AidarT

Отправлено 09 February 2016 - 10:15

Добрый день уважаемые форумчане
 
Долгожданные выходные пролетели (как фанера над Парижем), а я, как и обещал тут: http://forum.jbzoo.c...dalnejshaya-ot/ добавил немного удобства (головной боли) администратору (то есть себе) в области отправки уведомления клиенту об успешной отправке товара и присвоении ему трек-номера. Попутно возникли некоторые вопросы, которые успешно были решены совместно с:
Огромное им спасибо за помощь в реализации задумки (костылей)))).
Пробежимся опять же по пунктам.
- сделайте бэкап (шибко полезно, облегчает жизнь);
- следуйте инструкции ниже: 
Что имеем: Joomla: 3.4.8 JBZoo: 2.2.5 Pro rev3095 Zoo: 3.3.15 WidgetKit: 1.5.6 и немного кривых рук (светлых мозгов).
Что хотим: вводить в форме заказа, сохранять в БД JBZoo и отправлять клиенту трек-номер. Естественно хотели бы чтобы эти обновки не слетали, но они слетят в случае если разработчики будут править эти фалы (не все конечно, но и думаю еще не скоро это произойдет). Поэтому советую создать файлик типа "Костыли", "Багфикс лист" кому как нравиться и фиксировать там все изменения (опять же очень полезная привычка).
Итак, переходим ближе к мануалу:
1) Создаем папку: track по пути: *\media\zoo\applications\jbuniversal\cart-elements\email\track. В неё закидываем два файла:
а) track.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');

/**
 * 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:

12ab0fb859ab.png

4) Настраиваем события смены статусов:

2979445136bb.png

5) Добавляем языковые константы (2 шт. для админки Joomla):

868cf06791bb.png

6) Далее заходим в БД (phpmyadmin), находим свою БД и таблицу с заказами:

a2586525c5e2.png

Добавляем строку с названием 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>

Блок нужен для вывода в заказе поля для трек-номера и название этого блока.

8) Заходим в админку Joomla в форму заказа клиента и проверяем, что все вывелось как нужно:

cd3bda58f07f.png

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 Перед отправкой трек-номера клиенту, сначала сохраняем его в админке, а уже потом отправляем его.

 

 

Прикрепленные файлы

  • Прикрепленный файл  jborder.php   38.33К   80 Количество загрузок:

Сообщение отредактировал AidarT: 12 April 2016 - 22:13

  • 2

Our democracy has been hacked


#2 SmetDenis

SmetDenis

Отправлено 09 February 2016 - 10:17

Спасибо за подробный мануал! :)


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 AidarT

AidarT

Отправлено 09 February 2016 - 16:45

А вот и подоспел ответ разработчиков.

Для вывода трек-номера необходимо сделать следующее:

1) Идем сюда: *\media\zoo\applications\jbuniversal\templates\ШАБЛОН\renderer\clientarea_order\_default.php

<dt><?php echo JText::_('JBZOO_ORDER_TKNUMBER'); ?></dt>
<dd>
<p><?php echo $order->tracking; ?></p>
</dd>

И вставляем этот код, там где необходимо. Получаем, то что хотели:

cd17b0b0fb8f.png

Спасибо всем читателям и помощникам. Получилось, то, что я хотел! Надеюсь мануал поможет не только мне, но и многим другим.


  • 3

Our democracy has been hacked






Темы с аналогичным тегами номер трекинга, отслеживание заказа, пишем в бд, отправка трек-номера клиенту

Click to return to top of page in style!