aqaholding Опубликовано 3 сентября, 2014 Жалоба Поделиться Опубликовано 3 сентября, 2014 Готовое решение для отображения Дополнительных услуг в корзине и заказе! Цитата Ссылка на сообщение Поделиться на другие сайты
DaVinci Опубликовано 3 сентября, 2014 Жалоба Поделиться Опубликовано 3 сентября, 2014 делитесь Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 3 сентября, 2014 Жалоба Поделиться Опубликовано 3 сентября, 2014 Сделал себе в админке и в карточке товара доп. услуги, например "подарочная упаковка" Готов поделиться решением если инитересноЗачем создаете тему в готовых решениях если решение не расшарили? Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 Сейчас оформлю и выложу Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 1. Через phpmyadmin создаем две таблицы: CREATE TABLE IF NOT EXISTS `s_dopservice` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `description` text NOT NULL, `free_from` float(10,2) NOT NULL, `price` float(10,2) NOT NULL, `enabled` tinyint(1) NOT NULL DEFAULT '0', `position` int(11) NOT NULL, `separate_payment` int(1) DEFAULT '1', PRIMARY KEY (`id`), KEY `position` (`position`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `s_orders_dopservice` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `orders_id` int(11) DEFAULT NULL, `dopservice_id` int(11) DEFAULT NULL, `dopservice_price` float(10,2) NOT NULL DEFAULT '0.00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 2. В папку simpla заливаем два файла:http://erosexyn.ru/DopService.7z 3. В папку api заливаем файл:http://erosexyn.ru/Dopservice2.7z Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 Блин! К сожалению теперь только позже!Я детально написал описание, а форум взял и его обрезал!Так что ждите! Позже снова напишу Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 4. В папку simpla/design/html заливаем два файла:http://erosexyn.ru/DopService3.7z 3. Открываем файл api/Managers.php 4. Находим строчку: public $permissions_list = array('products', 'categories', 'brands', 'features', 'orders', 'labels', 'users', 'groups', 'coupons', 'pages', 'blog', 'news', 'comments', 'feedbacks', 'import', 'export', 'backup', 'stats', 'design', 'settings', 'currency', 'delivery', 'payment', 'managers', 'license'); Добавляем после 'license': ,'dopservice', 'dopservices' Должно получиться: public $permissions_list = array('products', 'categories', 'brands', 'features', 'orders', 'labels', 'users', 'groups', 'coupons', 'pages', 'blog', 'news', 'comments', 'feedbacks', 'import', 'export', 'backup', 'stats', 'design', 'settings', 'currency', 'delivery', 'payment', 'managers', 'license','dopservice', 'dopservices',); 4. Открываем файл api/Notify.php5. Находим строчку (92 сторка): // Способ доставки $delivery = $this->delivery->get_delivery($order->delivery_id); $this->design->assign('delivery', $delivery); После нее вставляем: $dopservice = $this->dopservice->get_orders_dopservice($order->id); $this->design->assign('dopservices', $dopservice); $dopservice_price = $this->dopservice->get_orders_price_dopservice($order->id); $this->design->assign('dopservice_price', $dopservice_price); Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 Вместо $order->total_price пишем: $order->total_price = $order->total_price + $dopservice_price->dprice; 6. В этом же файле находим (155 сторка): // Способ доставки $delivery = $this->delivery->get_delivery($order->delivery_id); $this->design->assign('delivery', $delivery); Ниже добавляем: $dopservices = $this->dopservice->get_orders_dopservice($order->id); $this->design->assign('dopservices', $dopservices); $dopservice_price = $this->dopservice->get_orders_price_dopservice($order->id); $this->design->assign('dopservice_price', $dopservice_price); $order->total_price = $order->total_price + $dopservice_price->dprice; 7. Открываем api/Orders.php 8. После функции: public function delete_order_labels($id, $labels_ids) { $labels_ids = (array)$labels_ids; if(is_array($labels_ids)) foreach($labels_ids as $l_id) $this->db->query("DELETE FROM __orders_labels WHERE order_id=? AND label_id=?", $id, $l_id); } Добавлем: //Управление доп. услугами function get_order_dopservice($order_id = array()) { if(empty($order_id)) return array(); $dopservice_id_filter = $this->db->placehold('AND orders_id in(?@)', (array)$order_id); $query = $this->db->placehold("SELECT ol.orders_id, l.id, l.name, l.position, l.price, l.free_from FROM __dopservice l LEFT JOIN __orders_dopservice ol ON ol.dopservice_id = l.id WHERE 1 $dopservice_id_filter ORDER BY position "); $this->db->query($query); return $this->db->results(); } public function update_order_dopservice($id, $dopservice_ids) { $dopservice_ids = (array)$dopservice_ids; $query = $this->db->placehold("DELETE FROM __orders_dopservice WHERE orders_id=?", intval($id)); $this->db->query($query); if(is_array($dopservice_ids)) foreach($dopservice_ids as $l_id) $this->db->query("INSERT INTO __orders_dopservice SET orders_id=?, dopservice_id=?", $id, $l_id); } public function add_order_dopservice($id, $dopservice_ids) { $dopservice_ids = (array)$dopservice_ids; if(is_array($dopservice_ids)) foreach($dopservice_ids as $l_id) { $this->db->query("INSERT INTO __orders_dopservice SET orders_id=?, dopservice_id=?", $id, $l_id); } } public function delete_order_dopservice($id, $labels_ids) { $dopservice_ids = (array)$dopservice_ids; if(is_array($dopservice_ids)) foreach($dopservice_ids as $l_id) $this->db->query("DELETE FROM __orders_dopservice WHERE orders_id=? AND dopservice_id=?", $id, $l_id); } // Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 9. Открываем api/Simpla_classic.php10. После require_once('api/Delivery.php'); добавляем require_once('api/Dopservice.php');11. После $this->delivery = &self::$simpla_instance->delivery; Добавляем: $this->dopservice = &self::$simpla_instance->dopservice; 12. После $this->delivery = new Delivery(); Добавляем: $this->dopservice = new Dopservice(); 13. В нужном месте шаблона cart.tpl вставляем: {* Дополнительные услуги *} {if $dopservices} <h2>Выберите Допольнительные услуги:</h2> <ul id="deliveries"> {foreach $dopservices as $dopservice} <li> <div class="checkbox"> <input type="checkbox" name="dopservice[]" value="{$dopservice->id}" {if $dopservice_id==$dopservice->id}checked{elseif $dopservice@first}checked{/if} id="dopservices_{$dopservice->id}"> </div> <h3> <label for="dopservices_{$dopservice->id}"> {$dopservice->name} {if $cart->total_price < $dopservice->free_from && $dopservice->price>0} ({$dopservice->price|convert} {$currency->sign}) {elseif $cart->total_price >= $dopservice->free_from} (бесплатно) {/if} </label> </h3> <div class="description"> {$dopservice->description} </div> </li> {/foreach} </ul> {/if} 14. В файле шаблона: email_order.tpl вставляем: {if $dopservices} {foreach $dopservices as $dopservice} <tr> <td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td> <td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;"> <b><font color="green">Доп. услуга: {$dopservice->name}</font></b><br /> <i> {$dopservice->description} </i> </td> <td align="right" style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"> {if $cart->total_price < $dopservice->free_from && $dopservice->price>0} {$dopservice->price|convert} {$currency->sign} {elseif $cart->total_price >= $dopservice->free_from} бесплатно {/if} </td> </tr> {/foreach} {/if} 15. Открываем simpla/CurrencyAdmin.php16. После $this->db->query("UPDATE __delivery SET price=price*?, free_from=free_from*?", $coef, $coef); Добавляем: $this->db->query("UPDATE __dopservice SET price=price*?, free_from=free_from*?", $coef, $coef); Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 17. Открываем simpla/IndexAdmin.php18. После 'DeliveryAdmin' => 'delivery', Добавляем: 'DopservicesAdmin' => 'dopservices', 'DopserviceAdmin' => 'dopservice', 19. Открываем simpla/OrderAdmin.php20. После $this->design->assign('subtotal', $subtotal); Добавляем: $dopservice_price = $this->dopservice->get_orders_price_dopservice($order->id); $this->design->assign('dopservice_price', $dopservice_price->dprice); $order->total_price = $order->total_price + $dopservice_price->dprice; 21. После: $this->design->assign('order_labels', $order_labels); Добавляем: // Доп. услуги $dopservices = $this->orders->get_dopservices(); $this->design->assign('dopservices', $dopservices); $dopservices_in_order = $this->orders->get_order_dopservice($order->id); $this->design->assign('dopservices_in_order', $dopservices_in_order); $this->design->assign('order_dopservices', $order_dopservices); Все! Если будут вопросы пишите Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 3 сентября, 2014 Жалоба Поделиться Опубликовано 3 сентября, 2014 Сделал себе в админке и в карточке товара доп. услуги, например "подарочная упаковка"А Вы не могли бы объяснить хоть немного Ваш замысел, то есть дать описание хоть краткое? Непонятно как минимум следующее: 1. Пишете "Сделал ... в карточке товара", а судя по описанию, в карточке товара у Вас НИЧЕГО не меняется. 2. Насколько можно понять из описания, допуслуга добавляется на странице корзины и относится к ЗАКАЗУ, а никак не к товару. Допуслуга только одна может быть выбрана? 3. Версия какая? Упоминающийся у Вас api/Simpla_classic.php в последних версиях не используется. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 3 сентября, 2014 Жалоба Поделиться Опубликовано 3 сентября, 2014 Упоминающийся у Вас api/Simpla_classic.php в последних версиях не используется.Этот файл вообще никогда не использовался, я на этот счет общался с Денисом. Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 Да действительно это моя оплошность! Доп услуги появляются в корзине и в заказе!Файл остался уже не помню зачем и откуда - он действительно не используетсяВерсия симплы 2.2.4 Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 А Вы не могли бы объяснить хоть немного Ваш замысел, то есть дать описание хоть краткое? Непонятно как минимум следующее:1. Пишете "Сделал ... в карточке товара", а судя по описанию, в карточке товара у Вас НИЧЕГО не меняется.2. Насколько можно понять из описания, допуслуга добавляется на странице корзины и относится к ЗАКАЗУ, а никак не к товару. Допуслуга только одна может быть выбрана?3. Версия какая? Упоминающийся у Вас api/Simpla_classic.php в последних версиях не используется. Доп услуги чекбоксами сделаны - т.е можно выбрать неограниченное кол-во доп услуг Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 3 сентября, 2014 Автор Жалоба Поделиться Опубликовано 3 сентября, 2014 Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 4 сентября, 2014 Жалоба Поделиться Опубликовано 4 сентября, 2014 В действительности у Вас доп услуга есть часть ЗАКАЗА, то есть выступает фактически как ТОВАР. И намного проще было бы оформить ее технически как ТОВАР, например, из специальной (неактивной) категории. На странице корзины вставить доп услуги как товары с возможностью добавления. И добавить контроль корзины и запись заказа: количество таких специальных товаров - 0 или 1, ставить цену нулевую, если надо. Понадобятся изменения всего лишь в 3-5 файлах и не придется ничего или почти ничего менять в структуре базы. А сейчас у Вас аж два десятка пунктов изменений, новые таблицы, новые страницы в админке. И описаны явно не все изменения. Например, согласно текущему описанию страница доп услуг в админке будет секретной, так как НИГДЕ НЕ БУДЕТ ссылок на нее, поскольку не меняются соседние шаблоны админки. Вероятнее всего, подобных моментов еще немало. И если их все поправить, то будет уже порядка 30 пунктов изменений... Цитата Ссылка на сообщение Поделиться на другие сайты
aqaholding Опубликовано 4 сентября, 2014 Автор Жалоба Поделиться Опубликовано 4 сентября, 2014 Как угодно! Прошу администрацию форума удалить данную Тему за ненадобностью! Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 4 сентября, 2014 Жалоба Поделиться Опубликовано 4 сентября, 2014 Зачем так радикально? Идея вполне хорошая и жизнеспособная.Тема пусть живет, может, кому пригодится. Народу на форуме немало, кто любит попа, а кто попадью... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.