Jump to content


Photo
- - - - -

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

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

Best Answer SmetDenis , 08 February 2016 - 14:20

Добрый день,

 

В форме заказа (в админке) если ввести в поле "Номер трекинга" что-либо и нажать кнопку "Сохранить", то данные введенные в поле не сохраняются. В базе данных естественно они тоже не появляются. Отсюда вопрос, видимо, я что-то где-то не дописал. Буду благодарен если подскажите что и где нужно подправить?


Номер трекинга должен биндится в заказ во время сохранения и тоже самое но наоборот при чтении из базы.
Для этого в качестве примера стоит посмотреть как работает комментарий администратора
Покажу на скриншотах, на что стоит обратить внимание

Поле
t4hv_200x0.png

Данные берутся из базы
isxh_200x0.png

Обновление инфо
l11r_200x0.png

Сохранение (поле => значение)
1hc1_200x0.png

 

2) Естественно и письмо также клиенту не отправляется. Что нужно сделать для этого?


Вы спрашиваете про функции Joomla, с помощью которых можно отправить письмо?
Вам стоит посмотреть это - https://docs.joomla....from_extensions
 

3) И самое самое интересное, я так понимаю, что почти все телодвижения сделанные мной, слетят, после очередного обновления. Отсюда вопрос, как нужно правильно все сделать, чтобы они не слетели?


В данном случае скорее всего никак. Т.к эти файлы не предназначены были для переопределения и расширения.
Такие тонки возможности появятся только в 3.0

Go to the full post


  • This topic is locked This topic is locked
3 replies to this topic

#1 AidarT

AidarT
  • JBZoo User (rus)
  • User rate: 4.2
  • posts: 148
  • topics: 18

Posted 06 February 2016 - 10:58

Добрый день уважаемые форумчане

 

Долгожданные выходные наконец-то наступили и я решил добавить немного удобства администратору (то есть себе) в области отправки уведомления клиенту об успешной отправке товара и присвоении ему трек-номера. Решено = сделано) (ну почти))). Пробежимся сначала по пунктам.

Что имеем: 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:

6dc03b868cec.png

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

2d774da8bfe1.png

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

23ea9298eafc.png

Добавил в таблицу строку как показано на картинке.

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 в форму заказа клиента и проверил, что все вывелось как нужно:

910279fb18fd.png

Вроде внешняя часть получилась как нужно. А теперь самое интересное)

1) В форме заказа (в админке) если ввести в поле "Номер трекинга" что-либо и нажать кнопку "Сохранить", то данные введенные в поле не сохраняются. В базе данных естественно они тоже не появляются. Отсюда вопрос, видимо, я что-то где-то не дописал. Буду благодарен если подскажите что и где нужно подправить?

2) Естественно и письмо также клиенту не отправляется. Что нужно сделать для этого?

3) И самое самое интересное, я так понимаю, что почти все телодвижения сделанные мной, слетят, после очередного обновления. Отсюда вопрос, как нужно правильно все сделать, чтобы они не слетели?


  • 1

Our democracy has been hacked


#2 AidarT

AidarT
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 4.2
  • posts: 148
  • topics: 18

Posted 08 February 2016 - 10:02

Извиняюсь, подниму тему.


  • 0

Our democracy has been hacked


#3 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 08 February 2016 - 14:20   Best Answer

Добрый день,

 

В форме заказа (в админке) если ввести в поле "Номер трекинга" что-либо и нажать кнопку "Сохранить", то данные введенные в поле не сохраняются. В базе данных естественно они тоже не появляются. Отсюда вопрос, видимо, я что-то где-то не дописал. Буду благодарен если подскажите что и где нужно подправить?


Номер трекинга должен биндится в заказ во время сохранения и тоже самое но наоборот при чтении из базы.
Для этого в качестве примера стоит посмотреть как работает комментарий администратора
Покажу на скриншотах, на что стоит обратить внимание

Поле
t4hv_200x0.png

Данные берутся из базы
isxh_200x0.png

Обновление инфо
l11r_200x0.png

Сохранение (поле => значение)
1hc1_200x0.png

 

2) Естественно и письмо также клиенту не отправляется. Что нужно сделать для этого?


Вы спрашиваете про функции Joomla, с помощью которых можно отправить письмо?
Вам стоит посмотреть это - https://docs.joomla....from_extensions
 

3) И самое самое интересное, я так понимаю, что почти все телодвижения сделанные мной, слетят, после очередного обновления. Отсюда вопрос, как нужно правильно все сделать, чтобы они не слетели?


В данном случае скорее всего никак. Т.к эти файлы не предназначены были для переопределения и расширения.
Такие тонки возможности появятся только в 3.0


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



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


#4 AidarT

AidarT
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 4.2
  • posts: 148
  • topics: 18

Posted 08 February 2016 - 18:01

ОУУУУУЕЕЕЕ!!!! Это работает!!! Спасибо Денис!!! 8) Надеюсь красиво допилю и выложу на форуме.


  • 1

Our democracy has been hacked






Also tagged with one or more of these keywords: номер трекинга, отслеживание заказа, пишем в бд, отправка номера клиенту

Click to return to top of page in style!