Форум русской поддержки Joomla!® CMS
04.12.2016, 10:14:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

[Решено] - Заказ на одной странице

 (Прочитано 4940 раз)
0 Пользователей и 1 Гость смотрят эту тему.
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« : 07.09.2014, 19:13:25 »

Всем привет!
Пока фильтр замер, добрался до оформления заказа.

Все делалось на Joomla 3 и JS 4.6, должно работать и на других версиях checkout.php везде одинаковый...


Рассмотрел checkout.php и вроде ничего сложного. Сохраняем оригинальный checkout.php и приступаем...

Идем в \components\com_jshopping\controllers\checkout.php
1) Вырезаем внутренности функций function step3, function step4, function step5 и вставляем в function step2.
Вырезаем только внутренности, после вырезания у вас должно остаться function step3(){} function step4(){} и function step5(){}, внимательнее с закрывающими и открывающими скобками функций, такая поляна кода - можно легко запутаться.

2) Точно так же поступаем со всеми внутренностями function step3save, function step4save, function step5save вставляем в function step2save. Все делаем также внимательно как и в первом варианте..))

3) В function step2(){} комментируем или удаляем строчки $checkout->checkStep(3); $checkout->checkStep(4); $checkout->checkStep(5); а строку $checkout->checkStep(2); не трогаем, оставляем на месте.

4) Далее в получившихся function step2(){} и function step2save(){} ищем в тексте step3save, step4save и step5save, и заменяем на step2save.
Выглядят строки примерно так:
SEFLink('index.php?option=com_jshopping&controller=checkout&task=step3save'.

Теперь можно проверить что вышло, на данном этапе на первой странице заказа у нас загружаются все шаги заказа. Но, у каждого шага свой <form>, также сохраняем оригинальные файлы adress.php, payments.php, shippings.php previewfinish.php и исправляем..

5) В файлах adress.php, payments.php, shippings.php и previewfinish.php которые находятся в каталоге \components\com_jshopping\templates\default\checkout\ удаляем в самом начале <?php print $this->checkout_navigator?> - этим мы убираем показ шагов.

6) в adress.php удаляем закрывающий тег </form> и кнопку далее

7) в payments.php удаляем строку <form id = "payment_form" name = "payment_form" action = "<?php print $this->action ?>" method = "post"> кнопку далее, а также закрывающий тег </form>
8.) в shippings.php делаем тоже самое что и 7-шаге.

9) И последнее, в файле previewfinish.php удаляем строку <form name = "form_finish" action = "<?php print $this->action ?>" method = "post">, а кнопку и закрывающий тег </form> оставляем. Теперь у нас одна форма на все 4 шага.

Зависимость способов оплаты от доставки ниже, в теме..

Все, пробуем оформить заказ, и радуемся...)))

Вроде ничего не забыл, если что не работает, пишите...

Готовый код cheсkout.php прикрепеленном в txt файле.


* checkout.txt (64.86 Кб - загружено 348 раз.)
* new_checkout.txt (23.03 Кб - загружено 163 раз.)
« Последнее редактирование: 18.01.2016, 21:23:12 от shurakana » Записан
nevigen
Moderator
*****

Репутация: +734/-16
Offline Offline

Пол: Мужской
Сообщений: 8803


http://n*****n.com


« Ответ #1 : 07.09.2014, 22:26:22 »

и что работает зависимость оплата-доставка ?
а корзина де ?
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #2 : 07.09.2014, 23:31:11 »

Корзина выключена, вернее была не включена.
По поводу зависимости не совсем понял..?
Записан
nevigen
Moderator
*****

Репутация: +734/-16
Offline Offline

Пол: Мужской
Сообщений: 8803


http://n*****n.com


« Ответ #3 : 07.09.2014, 23:32:40 »

2. если самовывоз доступен только для 1 и 3-го способов оплаты ?
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #4 : 07.09.2014, 23:37:15 »

Ааа, чет я даж и не помню что так можно..

Ну-да, тут уже скриптец писать надо..

Ахах, что то фильтр напоминает..)))
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #5 : 18.09.2014, 15:23:45 »

Нашлось время, сделал зависимость доставки от оплаты..) Все делается конечно же без перезагрузки..

Идем в \components\com_jshopping\templates\default\checkout\payments.php и в тег input добавляем аттрибут data-payment="<?php print $payment->payment_id ?>" в итоге input получается вот такой:
Показать текстовый блок
Это мы добавили идентификатор оплаты, для удобной его обработки..

Дальше, в файле \components\com_jshopping\controllers\checkout.php сразу после строчки class JshoppingControllerCheckout extends JControllerLegacy{ вставляем код:
Код:
    function ship_disable(){
$ajax = 1;
$db = JFactory::getDbo();
$sql_dis = "SELECT shipping_id FROM teyzk_jshopping_shipping_method WHERE payments!='' AND payments NOT LIKE '%$_POST[dis]%'";
$db->setQuery($sql_dis);
$result_dis = $db->loadRowList();
foreach($result_dis as $k) {
echo $k[0].".";
}
if ($ajax){die();}
}
Здесь возвращаются номера способов доставки которые не используются, для текущего(выбранного) способа оплаты..

Ну и последнее, в \components\com_jshopping\templates\default\checkout\shippings.php вставляете (можно вставить куда угодно):

Код:
<script>
$(document).ready(function(){
$('input[name="payment_method"]:first').click(); //имитация клика при загрузке страницы
});
$('input[name="payment_method"]').live("click", function(){
pay_d = $(this).attr('data-payment'); //получение выбранного способа оплаты
    $(function() {
jQuery.ajax({ //все отправляем..
type: "POST",
cache: false,
url: "<?php print SEFLink('index.php?option=com_jshopping&controller=checkout&task=ship_disable', 1);?>",
data: {dis: pay_d},
success: function(html){
var ship_d = HTML.split('.');
var i=0;
$('input[name="sh_pr_method_id"]').removeAttr('disabled'); //сброс дисаблед
while (i<ship_d.length){
$('#shipping_method_'+ship_d[i]+'').attr('disabled', 'disabled'); //добавление дисаблед способам доставки
i++;
}
$('input[name="sh_pr_method_id"]').removeAttr('checked'); //сброс чекед чтобы у клиента на дисабледе чекед не остался
$('input[name="sh_pr_method_id"]:not(:disabled):first').attr('checked', 'checked'); //ставим чекед на первую не задисабленную позицию
}
});return false;
});
});
</script>

Все..)
Хотел сделать проще - в shipping.php добавить <?php print $shipping->payments?> и получать значения от туда, проверкой is(:content) но что то не получилось..
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #6 : 20.09.2014, 04:51:49 »

Добавил готовый код checkout.php в txt файле...
Записан
pvi1
Завсегдатай
*****

Репутация: +12/-0
Offline Offline

Сообщений: 499


« Ответ #7 : 20.09.2014, 22:44:20 »


Как работает можно глянуть тут: http://shurakana.myjino.ru/shop/videoregistratory





не рабочая ссылка...
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #8 : 20.09.2014, 22:56:25 »

Хостинг кончился...)))
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #9 : 22.09.2014, 00:51:07 »

Закинул денежку..
Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #10 : 01.10.2014, 21:54:10 »

привет, интересует как оформить в два столбца на одной странице заказа...
с лева данные покупателя и адрес доставки, с права тип оплаты и доставка... последний шаг подтверждение можно по центру в низу...
и не будет ли после очередного обновления опять переделки этого листа заказа ?
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #11 : 01.10.2014, 21:58:51 »

привет, интересует как оформить в два столбца на одной странице заказа...
с лева данные покупателя и адрес доставки, с права тип оплаты и доставка... последний шаг подтверждение можно по центру в низу...
Ну в два столбца, это вам CSS в помощь, могу сказать что внутренности файлов adress.php, payments.php, shippings.php и previewfinish.php можно перенести в любой из них.

и не будет ли после очередного обновления опять переделки этого листа заказа ?
Ну это же хак, конечно будет.
Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #12 : 01.10.2014, 22:29:37 »

ну рытся в php я не силен... CSS приходилось править, но чаше по подсказке из этого форума,  а готовые платные решения мне по виду не очень нравятся... конкретно в этом вопросе мне предпочтителнее скромное решение ...
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #13 : 01.10.2014, 22:42:22 »

Ну да, могу понять вас, это решение для таких как я скорее всего, которые также ничего не понимают, но любили игру "найди 10 отличий"..))
Т.к. кто умеет, думаю что нибудь и по элегантней придумает..))
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #14 : 01.10.2014, 23:05:49 »

Кстати, нашел прошлогоднюю попытку создания себе сайта, там J1.5..

Там уже корзина оформлена как надо...)
Работает только эта категория - http://old.shurakana.myjino.ru/shop/videoregistratory

Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #15 : 01.10.2014, 23:22:54 »

ну этото примерчик даже лучше чем я ожидал Azn
только поля для заказа я бы стандартные оствил, а примочки интересные... надо подумать как мне под свои стили такое подключить... и карточки товара тоже симпотные...
Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #16 : 04.10.2014, 00:20:19 »

попробовал все менять как куказано.. у меня НЕ прибавляет в карточку цену доставки и надбавки за способ оплаты...
Ув shurakana, глянте мой магазиник в чем там может быть проблема, я не шарю что надо сделать... 
Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #17 : 04.10.2014, 00:25:14 »

и еще недоделка - надобы строчки както вставить вместо шагов - *данные покупателя* / *способ оплаты* / *способ доставки*

и у меня почему то карточка в низу висит а не в верху как на вашей ссылке...
Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #18 : 04.10.2014, 00:45:00 »

upsss.... при нажатии потвердить заказ... добавляет суммы, пересчитывает... но выкидывает *ошибка шага*...
« Последнее редактирование: 04.10.2014, 01:36:20 от dragon4x4 » Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #19 : 04.10.2014, 11:42:00 »

попробовал все менять как куказано.. у меня НЕ прибавляет в карточку цену доставки и надбавки за способ оплаты..
Не совсем понял, но по идее он и не должен прибавляться, все считается после отправки заказа..
Хотя, надо бы общую строчку сделать, перед отправкой "общая сумма с доставкой"..будет время..

и еще недоделка - надобы строчки както вставить вместо шагов - *данные покупателя* / *способ оплаты* / *способ доставки*
и у меня почему то карточка в низу висит а не в верху как на вашей ссылке...
Это не недоделка, в файлы adress.php, payments.php, shippings.php и previewfinish.php в самый верх вставьте <h2>нужный текст</h2>
Из previewfinish.php переместите checkout-navigator в adress.php или удалите эту строку..

upsss.... при нажатии потвердить заказ... добавляет суммы, пересчитывает... но выкидывает *ошибка шага*...
Где то ошибку допустили, незнаю как определить.. Восстановите и все заново, по инструкции..))
Прикрепленный txt файл использовали?
Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #20 : 04.10.2014, 12:06:55 »

да использовал ваш txt ... закономерность обнаружил, если в админке менят местами шаги заказа типа оплта-доставка, то тогда это и всплывает.. в одном случае ошибка, в другом отправляет заказ... но потом в шаге доставки пропадают способы доставки..
вобщем вернул в стандарт все и наверное лучше запалчу за готовое решение Невигену ...Azn
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #21 : 04.10.2014, 12:23:24 »

вобщем вернул в стандарт все и наверное лучше запалчу за готовое решение Невигену ...Azn
Вы выбрали правильное решение, ведь тут больше для тех кто хоть чуть чуть понимает..)
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #22 : 04.10.2014, 12:29:13 »

Вы выбрали правильное решение, ведь тут больше для тех кто хоть чуть чуть понимает..)
я я чуть чуть понимаю, но пока копировал построчно (тупо не думая) решение то чуть не свихнулся
У меня давняя мечта, кастрировать разработчиков, что открывают тег HTML в одном файла а закрывают в другом

В итоге закрыл и вернулся к своему недомагазину (где не нужна доставка, онлайн оплата и пр)

Когда влезаю в код JS то впечатление что вляпался в код Datso галери любой версии
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #23 : 04.10.2014, 12:37:33 »

я я чуть чуть понимаю, но пока копировал построчно (тупо не думая) решение то чуть не свихнулся
Да я сам чуть не тоже самое что и вы, раз 7 ресетил..)) Забываешь что уже скопировал а что нет и пр..)))

У меня давняя мечта, кастрировать разработчиков, что открывают тег HTML в одном файла а закрывают в другом
В данном случае идет искусственное и вынужденное усложнение, дабы продать возможность заказа на одной странице..
В основном довольно неплохой код..)) (я имею ввиду для меня)
Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #24 : 04.10.2014, 13:05:14 »

Вы выбрали правильное решение, ведь тут больше для тех кто хоть чуть чуть понимает..)

ой ой ой Azn как ни как кое что методом тыка и подскасками форумчан зделал более мене так как мне хотелось.. ... уже 4 года  регулярно обновляю и поправки вношу под свои нужды... просто жаль времени на изучение PHP когда все равно это не мое занятие... я ползователь, а не создатель шопов на продажу...    Azn
Записан
shurakana
Живу я здесь
******

Репутация: +48/-6
Offline Offline

Сообщений: 859



« Ответ #25 : 04.10.2014, 13:15:26 »

ой ой ой Azn как ни как кое что методом тыка и подскасками форумчан зделал более мене так как мне хотелось..
Неужто вы обиделись? Тогда, по идее, я тоже должен обидеться сам на себя, ведь под словами "чуть чуть понимает" я себя имел ввиду..))
Записан
dragon4x4
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 196


« Ответ #26 : 04.10.2014, 13:17:59 »

много лет не обижаюсь по жизни вообще Azn просто реплика и та с улыбками Azn
Записан
riser
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 21


« Ответ #27 : 26.12.2014, 18:05:28 »

Реально ли это объединить с корзиной ? Чтобы при нажатии кнопки "купить", товар падал в корзину(фоном), и запускалось оформления заказа ?
Записан
Vitos
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Пол: Мужской
Сообщений: 165



« Ответ #28 : 03.02.2015, 18:44:47 »

Плюсанул. Полезная тема. Только на Joomla 2.5 сходу не заработало. Ошибка, связанная со способом доставки. Пока не вникал, чуть позже постараюсь разобраться.
Записан
Vitos
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Пол: Мужской
Сообщений: 165



« Ответ #29 : 05.02.2015, 15:34:42 »

Видимо не все checkout.php одинаковые. Azn
у меня на JS 3.14.3 возникла проблемка на этом участке:
Код:
        $payment_id = $cart->getPaymentId();
        $shippings = $shippingmethod->getAllShippingMethodsCountry($id_country, $payment_id);
        foreach($shippings as $key=>$value){
            $shippingmethodprice->load($value->sh_pr_method_id);
            if ($jshopConfig->show_list_price_shipping_weight){
                $shippings[$key]->shipping_price = $shippingmethodprice->getPricesWeight($value->sh_pr_method_id, $id_country, $cart);
            }
            $prices = $shippingmethodprice->calculateSum($cart);
            $shippings[$key]->calculeprice = $prices['shipping']+$prices['package'];
            $shippings[$key]->delivery = '';
            $shippings[$key]->delivery_date_f = '';
            if ($jshopConfig->show_delivery_time_checkout){
                $shippings[$key]->delivery = $deliverytimes[$value->delivery_times_id];
            }
            if ($jshopConfig->show_delivery_date){
                $day = $deliverytimedays[$value->delivery_times_id];
                if ($day){
                    $shippings[$key]->delivery_date = getCalculateDeliveryDay($day);
                    $shippings[$key]->delivery_date_f = formatdate($shippings[$key]->delivery_date);
                }
            }
        }

Способы доставки не отображаются, выдает:
Цитировать
Warning: Invalid argument supplied for foreach() in Z:\home\...\www\components\com_jshopping\controllers\checkout.php on line 318

Проблема начинается тут $payment_id = $cart->getPaymentId();.
Пока по непонятным мне причинам, не подтягивается ID оплаты. Если изменить на что-то типа $payment_id = "3"; то все срабатывает.
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet