Задать вопрос
@Mracula

Как сделать свою сортировку товаров для каждой категории в опенкарт 3?

Как сделать свою сортировку товаров для каждой категории в опенкарт 3 ?
Создал в таблице product_to_category столбец с названием category_order
далее добавил в admin/model/catalog/product.php что бы была выборка по category_order
if (isset($data['product_category'])) {
		foreach ($data['product_category'] as $category_id) {
		$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$category_id . "', category_order = '" . (int)$category['category_order'] . "'");
			}
		}
		
		if (isset($data['main_category_id']) && $data['main_category_id'] > 0) {
			$this->db->query("DELETE FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$data['main_category_id'] . "'");
			$this->db->query("INSERT INTO " . DB_PREFIX . "product_to_category SET product_id = '" . (int)$product_id . "', category_id = '" . (int)$data['main_category_id'] . "', main_category = 1, category_order = '" . (int)$data['sort_order'] . "'");
				} elseif (isset($data['product_category'][0])) {
			$this->db->query("UPDATE " . DB_PREFIX . "product_to_category SET main_category = 1 WHERE product_id = '" . (int)$product_id . "' AND category_id = '" . (int)$data['product_category'][0] . "'");

и функцию выборки сортировок категорий
public function getProductCategorySorts($product_id) {
         $product_category_data = array();
         $query = $this->db->query('SELECT * FROM ' . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
         foreach ($query->rows as $result) {
         $product_category_data[$result['category_id']] = $result['category_order'];
            }
         return $product_category_data;
        }

В admin/controller/catalog/product.php для передачи в шаблон
if (isset($this->request->post['product_category'])) {
     $data['product_category_sorts'] = $this->request->post['product_category'];
        } elseif (isset($this->request->get['product_id'])) {
     $data['product_category_sorts'] = $this->model_catalog_product->getProductCategorySorts($this->request->get['product_id']);
        } else {
     $data['product_category_sorts'] = array();
        }

и В самом шаблоне
<div class="form-group">
                <label class="col-sm-2 control-label" for="input-category"><span data-toggle="tooltip" title="{{ help_category }}">{{ entry_category }}</span></label>
                <div class="col-sm-10">
                  <input type="text" name="category" value="" placeholder="{{ entry_category }}" id="input-category" class="form-control"/>
                  <div id="product-category" class="well well-sm" style="height: 150px; overflow: auto;"> {% for product_category in product_categories %}
                      <div id="product-category{{ product_category.category_id }}"><i class="fa fa-minus-circle"></i> {{ product_category.name }}
                        <input type="hidden" name="product_category[]" value="{{ product_category.category_id }}"/>
			<input type="text" name="sort_order-category" value="{{ product_category_sorts }}" placeholder="{{ entry_sort_order }}" id="input-sort-order-category" class="form-order" style="height: 25px !important;width: 145px;"/>
                      </div>
                    {% endfor %}</div>
                </div>
              </div>

Но в базу не пишет вставленные значения не записываются.
  • Вопрос задан
  • 27 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы