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


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

Реализация продажи тарифов


  • Закрытая тема Тема закрыта
Сообщений в теме: 8

#1 zeus07

zeus07

Отправлено 08 September 2015 - 22:28

Здравствуйте!

 

Сайт: http://nikcity.com.ua/

 

Сайт представляет из себя каталог организаций. Хотел вот что реализовать. Клиент регистрируется, затем жмёт на зелёную кнопку Добавить организацию, открывается форма подачи материала, он туда вносит необходимые данные, затем в самом низу выпадающий список из тарифов, он выбирает один из них, жмёт кнопку Заказать, и его перекидывает в корзину, где он оплачивает через LiqPay этот тариф.

 

Понимаю, что надо править шаблон submission, но подскажите пожалуйста, в какую сторону копать.

 

Заранее благодарен.


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 09 September 2015 - 10:04

zeus07, создайте select с тарифами и выводите его в submission, а для оплаты используйте элемент JBAdvert


  • 0
Изображение
 

#3 zeus07

zeus07

Отправлено 09 September 2015 - 12:28

Примерно понял, Спасибо. 

Такой вопрос. У тарифов разные цены, в элементе JBAdvert где цену прописать можно? И как сделать, чтобы при выборе разных тарифов цена изменялась?


  • 0

#4 Cheren-dow

Cheren-dow

Отправлено 10 September 2015 - 13:23

Такой вопрос. У тарифов разные цены, в элементе JBAdvert где цену прописать можно? И как сделать, чтобы при выборе разных тарифов цена изменялась?

Готового решения нет, поэтому придется вносить изменения в элемент:

\media\zoo\applications\jbuniversal\elements\jbadvert\jbadvert.php

 Первым делом необходимо обратить внимание на value нужного вам элемента, именно на их основании необходимо будет изменять элемент

xvk8_200x0.png

 

Ищите в файле метод _getPrice , а после строк

$result = JBCart::val($price);
        if ($order && $order->id) {
            $result = $order->val($price);
        }

Добавляете следующий код:

$tarif = $this->_item->getElement('83821a27-6c18-4be2-a7b5-0484a4c9fc3c'); // укажите id своего элемента
$data  = (array)$tarif->data();

if ($elemVal = $data['option'][0]) {
// условиями проверяете какое значение выбранно и устанавливаете нужную цену для добавления в корзину
    if ($elemVal == 'tarif-1') {
        $result = $order->val('599rub');
    } elseif ($elemVal == 'tarif-2') {
        $result = $order->val('800rub');
    }

}

Таким образом в корзину будет поподать нужная вам цена в зависимости от выбранного тарифа.

 

Для изменения цены при выборе, необходимо написать JS скрипт, например в вашем шаблоне submission.php


  • 0
Изображение
 

#5 zeus07

zeus07

Отправлено 10 September 2015 - 15:06

Большое спасибо за разъяснение, попробую это реализовать


  • 0

#6 zeus07

zeus07

Отправлено 10 September 2015 - 19:47

Вот такой код получился:

protected function _getPrice()
    {
        $price = $this->config->get('price', 0);
        $order = $this->_getRelatedOrder();

        $result = JBCart::val($price);
        if ($order && $order->id) {
            $result = $order->val($price);
        }
        
        $tarif = $this->_item->getElement('elementsd035dbf0-bf8f-44ff-9ee3-6d0cba11d076option'); // укажите id своего элемента
$data  = (array)$tarif->data();
 
if ($elemVal = $data['option'][0]) {
// условиями проверяете какое значение выбранно и устанавливаете нужную цену для добавления в корзину
    if ($elemVal == 'akcіjnij') {
        $result = $order->val('3000uah');
    } elseif ($elemVal == 'unіversalnij') {
        $result = $order->val('5000uah');
    }
    elseif ($elemVal == 'premіum') {
        $result = $order->val('7000uah');
    }
 
}

        return $result;
    }

Но на сайте выдаёт ошибку:

Fatal error: Call to a member function data() on a non-object in /home/artcolor/nikcity.com.ua/www/media/zoo/applications/jbuniversal/elements/jbadvert/jbadvert.php on line 413


  • 0

#7 Cheren-dow

Cheren-dow

Отправлено 10 September 2015 - 20:22

elementsd035dbf0-bf8f-44ff-9ee3-6d0cba11d076option

вы не верно указали ID. Id элемента можете посмотреть в редактировании элементов для типа материалов. 


  • 0
Изображение
 

#8 zeus07

zeus07

Отправлено 10 September 2015 - 20:30

Указал сейчас правильный ID. 

Ссылка: http://nikcity.com.ua/add-org

Теперь, чтобы работало, и в JBAdvert отображалась цена, нужно дописать JS, который будет менять значение, верно? Подскажите только, Какую переменную менять необходимо?


  • 0

#9 Cheren-dow

Cheren-dow

Отправлено 10 September 2015 - 21:03

zeus07, на ваш select вешайте jquery событие change() и в зависимости от выбранного тарифа подставляйте нужную ссумму через JS. JS можете писать в шаблоне элемента:

\media\zoo\applications\jbuniversal\elements\jbadvert\tmpl\submission-not-modified.php

  • 0
Изображение
 




Click to return to top of page in style!