Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Leaderboard

Popular Content

Showing content with the highest reputation on 04/17/2011 in all areas

  1. Здесь уже обсуждался вопрос о том, что система скидок в OpenCart не слишком гибкая. Например, на вкладке "Специальное" можно задать акционную цену на товар, но, к сожалению, только в абсолютном, т.е. денежном выражении. Сами понимаете, что это крайне не удобно: меняется цена на товар - вам нужно пересчитывать цену по акции, акции бывают разные и с разными скидками, и каждый раз нужно все считать, считать, считать... А как было бы здорово, если можно было бы указывать величину скидки в таких привычных и понятных для всех процентах! Ну что ж, попробуем реализовать нашу идею, минимальными затратами, без сложных переделок. Например, можно сделать такое условие: если цена по акции больше 1, то значит она указана традиционным способом, т.е. в денежном выражении, если же цена по акции меньше 1, то она указана в процентном выражении. Например, значение цены 0.95 соответствует 5% скидке, а 0.85 скидке в 15%. Теперь осталось модифицировать код системы для правильного расчета цены по акции. Начнем с основной страницы отображения товара, файла catalog\controller\product\product.php, необходимо модифицировать код следующим образом: $this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); $special = $this->model_catalog_product->getProductSpecial($this->request->get['product_id']); if ($special < 1) $special = (int)($product_info['price'] * $special); // наша строка для расчета скидки в процентах if ($special) { это для основного продукта страницы. И еще в одном месте: $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); $special = $this->model_catalog_product->getProductSpecial($result['product_id']); if ($special < 1) $special = (int)($result['price'] * $special); // наша строка для расчета скидки в процентах if ($special) { это для рекомендуемых продуктов. Аналогично второму фрагменту нужно внести изменения в следующие файлы: catalog\controller\product\category.php catalog\controller\product\manufacturer.php catalog\controller\product\search.php catalog\controller\module\bestseller.php catalog\controller\module\featured.php catalog\controller\module\latest.php catalog\controller\module\special.php После внесения этих изменений у вас на сайте везде должен заработать новый способ расчета цены спец-предложения, проверьте. А вот корзина все равно считается не правильно! Пришлось повозиться. Изменения нужно внести в файл: system\library\cart.php $product_special_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1"); if ($product_special_query->num_rows) { if ($product_special_query->row['price'] < 1) $price = (int)($product_query->row['price'] * $product_special_query->row['price']); // это две новых строки else $price = $product_special_query->row['price']; // это две новых строки } else { $price = $product_query->row['price']; } После этого изменения ваша корзина будет считаться так, как нам нужно. Вот и все, прошу экспериментировать и комментировать. ПС: изменения производились на ocStore 0.1.1, но не думаю, что на других версиях что-то по-другому. ППС: маленький бонус от переделки: теперь, наконец-то, можно легко и просто устанавливать постоянные скидки для постоянных клиентов в зависимости от статуса (группы) клиента. И не надо каждый раз пересчитывать кучу цен...
    2 points
  2. Это меняется на вкладке СИСТЕМА - ЛОКАЛИЗАЦИЯ - СТАТУСЫ ЗАКАЗОВ
    1 point
  3. я вижу молодого парня... ммм. да! это определенно парень. О духи помогите мне... вот.. вооот.. туман рассеивается.. Я вижу, что этот парень что-то делает... что-то связанное с интернетом.. Возможно интернет-магазин. Сейчас... вот-вот - и я увижу версию движка и файл header.tpl... НЕТ! нЕТ! картинка уходит. Магнитные бури помешали помочь вам с решением задачи. Думаю версия движка, листинг файла шаблона и хоты-бы скрин того, как есть сейчас немного ускорят процесс ;) С уважением.
    1 point
  4. конечно, придется еще поковырять контроллер модуля. но это самый простой способ.
    1 point
  5. ну так подправьте шаблон модуля под свои нужды. какие проблемы?
    1 point
  6. что значит "саму страницу категории"? у вас там какие-то принципиальные отличия от других страниц (кроме подкатегорий/товаров в центральном блоке)?
    1 point
  7. catalog/language/russian/product/product.php admin/language/russian/catalog/product.phpТолько этого мало. Надо менять ещё в корзине, в модулях и т.д.: admin/language/russian/report/purchased.php admin/language/russian/report/viewed.php admin/language/russian/sale/order.php catalog/language/russian/account/invoice.php catalog/language/russian/checkout/cart.php catalog/language/russian/checkout/confirm.php catalog/language/russian/mail/order_confirm.php catalog/language/russian/product/category.php catalog/language/russian/product/manufaсturer.php catalog/language/russian/product/search.php catalog/language/russian/product/special.php
    1 point
  8. в ..catalogcontrollerproductspecial.php в массив $this->data['products'][] = array( вставить 'date_end' => $result['date_end'],в шаблоне ..catalogviewthemedefaulttemplateproductspecial.tpl после <?php for ($j = $i; $j < ($i + 4); $j++) { ?>будет доступна переменная $products[$j]['date_end'];в которой будет храниться дата окончания акции в формате ГГГГ-ММ-ДД
    1 point
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.