<?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.













