Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

SooR

Користувачі
  • Публікації

    1 508
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем SooR

  1. Решил все свои проекты начать вести на последнем OC, скачал оф версию v1.5.1.3 September 29, 2011, залил в него товары и категории с существующего проекта (4927 товаров), захожу в любую категорию, жду 10-15 сек, думаю гляну запросы - 1599-1612 (!!!) запросов при 20 товаров на страницу, это вообще как можно было их создать?))

    post-3043-0-80732100-1322947689_thumb.png

    В общем, это никуда не лезет, бизнес логика нуждается в существенной оптимизации.

    P.S. тестил на локальной машине denwer/Core i3/2Gb ddr3/7200 rpm

  2. Какой импорт нужен? Откуда-куда? Отдельно опций, или всего магазина вместе с ними? Уже приводили вверху ссылку на модуль связки стандартных атрибутов с таблицами фильтра.

  3. diokim, ждите новую версию. Кроме того, реализован группированный тип.

    Более юзабильней стал код фильтра (catalog/module/filter.php), связка с производителями, выбранные критерии + отмена (в т.ч. по цене), AJAX опционально, фильтр наличия на складе, расширена конфигурация.

  4. Product status & price quick changer

    admin\controller\catalog\product.php

    add

    public function status() {
        if ($this->request->server['REQUEST_METHOD'] == 'POST') {
          $this->db->query("UPDATE " . DB_PREFIX . "product SET status = '" . (int)$this->request->post['status'] . "' WHERE product_id = '" . (int)$this->request->post['product_id'] . "'");
          $this->cache->delete('product');
        }
      }
      
      public function price() {
        if ($this->request->server['REQUEST_METHOD'] == 'POST') {
          $this->db->query("UPDATE " . DB_PREFIX . "product SET price = '" . (float)$this->request->post['price'] . "' WHERE product_id = '" . (int)$this->request->post['product_id'] . "'");
          $this->cache->delete('product');
        }
      }

    admin\view\template\catalog\product_list.tpl

    replace status table column with

    <td class="left">
                  <label><input type="checkbox" name="status" value="<?php echo $product['product_id']; ?>" <?php echo ($product['status'] == 'Включено' ? 'checked="checked"' : ''); ?> /><span><?php echo $product['status']; ?></span></label>
                </td>

    and price column with

    <td>
                  <input type="text" name="price" value="<?php echo $product['price']; ?>" size="10" id="price<?php echo $product['product_id']; ?>" /> <a onclick="updatePrice(<?php echo $product['product_id']; ?>);$(this).fadeTo(250, 0.2);$(this).fadeTo(150, 0.7);" class="save">Save</a>
                </td>

    append

    <script type="text/javascript"><!--
      $(document).ready(function() {
        
        $('input[name=\'status\']').change(function() {
          $.post('index.php?route=catalog/product/status', 'status=' + ($(this).attr('checked') ? '1' : '0') + '&product_id=' + $(this).val());
    
          var text = $(this).next().text() == 'Отключено' ? 'Включено' : 'Отключено';
          $(this).next().text(text);
        });
      });
      
      function updatePrice(product_id) {
        var price = $('#price' + product_id).val();
    
        $.post('index.php?route=catalog/product/price', 'price=' + price + '&product_id=' + product_id);
      }
    
    //--></script>
    
  5. У нас немного другая система ценообразования.

    Есть CSV, в нем артикул (model), цена минимальная, поставщики (post_name, post_price), Название товара.

    Отсутсвие цены делает товар с данным артикулом "нет в наличии".

    Поиск товара в базе осуществляется по артикулу (int)$model

    Цена калькулируется таким образом: в csv автоматом находится поставщик с минимальной ценой, по заранее забитым поставщикам в админке, их наценками и привязками к категориям, находится нужный процент (из диапазона цены, в который попадает товар) и накидывается на эту минимальную цену CSV.

    Подытожу: имеет ли смысл создавать модуль "поставщики" для общей массы, с использованием вышеупомянутого XLS импорта?

  6. badimka, посмотрите сами. Всего модуль требует 6 таблиц, 5 из которых нужны для самих опций, 1 - для связки значений с товаром. Если бы не мультиязычность и одно ко многим с категориями, и того менее.

    При установке галки происходит переход, как в категорию. Можно приделать костыль на js, чтобы с параметром filter опускало вниз... кому как.

    С сортировкой дружится, проверьте $url в массиве sorts, где-то уже писал.

  7. Если нужно выводить для конкретного товара его х-стики фильтра вида:

    название опции - значение

    название опции - значение

    ...

    то:

    catalog\controller\product\product.php

    $this->data['filter_options'] = $this->model_catalog_filter->getOptionsByProductId($this->request->get['product_id']);

    catalog\view\theme\default\template\product\product.tpl

    <?php foreach ($filter_options as $option) { ?>
                      <span>
                        <b><?php echo $option['name']; ?></b><?php echo $option['value_name']; ?><?php echo (next($filter_options) ? '<em> / </em>' : ''); ?>
                      </span>
    <?php } ?>

    catalog\model\catalog\filter.php

    public function getOptionsByProductId($product_id) {
    
        $option_data = array();
    
        $option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_option co LEFT JOIN " . DB_PREFIX . "product_to_value p2v ON (co.option_id = p2v.option_id) LEFT JOIN " . DB_PREFIX . "category_option_description cod ON (co.option_id = cod.option_id) WHERE p2v.product_id = '" . (int)$product_id . "' AND cod.language_id = '" . (int)$this->config->get('config_language_id') . "' AND co.status = '1' ORDER BY co.sort_order");
    
        foreach ($option_query->rows as $option) {
          
          $value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_option_value cov LEFT JOIN " . DB_PREFIX . "category_option_value_description covd ON (cov.value_id = covd.value_id) LEFT JOIN " . DB_PREFIX . "product_to_value p2v ON (cov.value_id = p2v.value_id) WHERE p2v.product_id = '" . (int)$product_id . "' AND cov.option_id = '" . (int)$option['option_id'] . "' AND covd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
    
          $option_data[] = array(
            'option_id' => $option['option_id'],
            'name' => $option['name'],
            'value_name' => $value_query->row['name']
          );
        }
        return $option_data;
      }
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.