Добрый день уважаемые форумчане
Долгожданные выходные наконец-то наступили и я решил добавить немного удобства администратору (то есть себе) в области отправки уведомления клиенту об успешной отправке товара и присвоении ему трек-номера. Решено = сделано) (ну почти))). Пробежимся сначала по пунктам.
Что имеем: Joomla: 3.4.8 JBZoo: 2.2.5 Pro rev3095 Zoo: 3.3.15 WidgetKit: 1.5.6 и немного кривых рук.
Что получилось, пишу как нуб, так что не серчайте:
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 "<hr>";
echo '<h1>'.$track.'</h1>';
echo "<a target='_blank' href='#".$post."'>".$post."</h2></a>";
echo "<hr>";
}
}
б) файл 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@optom-kolesa.ru</authorEmail>
<authorUrl>http://optom-kolesa.ru</authorUrl>
<version>1.0</version>
<description>Номер трекинга из заказа</description>
<params>
<param name="track" type="text" default="" label="Текст для отправки" description="Введите текст для отправки клиенту" />
</params>
</element>
2) Настроил почтовый шаблон в "Настройка почтовых шаблонов" в коммерции JBZoo:
3) Добавил языковые константы (2 шт. для админки Joomla):
4) Далее зашел в БД (phpmyadmin), нашел свою БД и таблицу с заказами:
Добавил в таблицу строку как показано на картинке.
5) Далее пошел по пути: *\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>
6) Зашел в админку Joomla в форму заказа клиента и проверил, что все вывелось как нужно:
Вроде внешняя часть получилась как нужно. А теперь самое интересное)
1) В форме заказа (в админке) если ввести в поле "Номер трекинга" что-либо и нажать кнопку "Сохранить", то данные введенные в поле не сохраняются. В базе данных естественно они тоже не появляются. Отсюда вопрос, видимо, я что-то где-то не дописал. Буду благодарен если подскажите что и где нужно подправить?
2) Естественно и письмо также клиенту не отправляется. Что нужно сделать для этого?
3) И самое самое интересное, я так понимаю, что почти все телодвижения сделанные мной, слетят, после очередного обновления. Отсюда вопрос, как нужно правильно все сделать, чтобы они не слетели?