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

Сменить вид в админке


Recommended Posts

Всем двс , подскажите пожалуйста , как изменить вид в админке , в редакторе товара ,  выбор "статуса отсутсвия на складе " на такой же как " Выбор в каких категориях показывать товар " .

Нашёл код "показывать в категориях"  в админке :

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

 

input.thumb.png.35d62175f10d250df3fe55432fcdf80b.png

 

      <div class="form-group">
                <label class="col-sm-2 control-label" for="input-category"><span data-toggle="tooltip" title="<?php echo $help_category; ?>"><?php echo $entry_category; ?></span></label>
                <div class="col-sm-10">
                  <input type="text" name="category" value="" placeholder="<?php echo $entry_category; ?>" id="input-category" class="form-control" />
                  <div id="product-category" class="well well-sm" style="height: 150px; overflow: auto;">
                    <?php foreach ($product_categories as $product_category) { ?>
                    <div id="product-category<?php echo $product_category['category_id']; ?>"><i class="fa fa-minus-circle"></i> <?php echo $product_category['name']; ?>
                      <input type="hidden" name="product_category[]" value="<?php echo $product_category['category_id']; ?>" />
                    </div>
                    <?php } ?>
                  </div>
                </div>
              </div>

 

 

Статус на складе работает как select , он просто показывает все статусы и можно выбрать один из предложенных .

Вводить текст туда нельзя .


select.thumb.png.05cc57915d171dcca20e65f6540f06ed.png

 

 

 <div class="form-group">
                <label class="col-sm-2 control-label" for="input-stock-status"><span data-toggle="tooltip" title="<?php echo $help_stock_status; ?>"><?php echo $entry_stock_status; ?></span></label>
                <div class="col-sm-10">
                  <select name="stock_status_id" id="input-stock-status" class="form-control">
                    <?php foreach ($stock_statuses as $stock_status) { ?>
                    <?php if ($stock_status['stock_status_id'] == $stock_status_id) { ?>
                    <option value="<?php echo $stock_status['stock_status_id']; ?>" selected="selected"><?php echo $stock_status['name']; ?></option>
                    <?php } else { ?>
                    <option value="<?php echo $stock_status['stock_status_id']; ?>"><?php echo $stock_status['name']; ?></option>
                    <?php } ?>
                    <?php } ?>
                  </select>
                </div>
              </div>

 

 

 

Поменял код  по образцу " выбора категоии " .
 

 

    <div class="form-group">
                <label class="col-sm-2 control-label" for="input-stock-status"><span data-toggle="tooltip" title="<?php echo $help_stock_status; ?>"><?php echo $entry_stock_status; ?></span></label>
                  <div class="col-sm-10">
                  <input type="text" name="stock_status_id" value="" placeholder="<?php echo $entry_stock_status; ?>" id="input-stock-status" class="form-control" />
                  <div id="input-stock-status" class="well well-sm" style="height: 150px; overflow: auto;">
                 <?php foreach ($stock_statuses as $stock_status) { ?>
                    <div id="input-stock-status<?php echo $stock_status['stock_status_id']; ?>"><i class="fa fa-minus-circle"></i> <?php echo  $stock_status['name']; ?>
                      <input type="hidden" name="stock_status_id" value="<?php echo $stock_status['stock_status_id']; ?>" />
                    </div>
                    <?php } ?>
                  </div>
                </div>
              </div>

 

137960999_.thumb.png.0ea30d8c074758998aacb5c1fa3a6dd7.png

 

 

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

Текст он вводит , но статус не предлагает к выбору .
Подскажите пожалуйста , как сделать выбор " статуса отсутсвия на складе "  таким же , как выбор " в каких категориях показывать товар " .

Надіслати
Поділитися на інших сайтах


11 минут назад, Qhiey сказал:

Текст он вводит , но статус не предлагает к выбору .

потому что нужен еще код js   аutocomplite

посмотрите как это реализовано для категорий

Надіслати
Поділитися на інших сайтах

и в контроллере нужно еще писать функцию,   которая будет выбирать статусы

Надіслати
Поділитися на інших сайтах

1 час назад, fanatic сказал:

и в контроллере нужно еще писать функцию,   которая будет выбирать статусы

 

Всё получилось , спасибо за наводку , добавил две функции в контроллер и модель , пошаманил с js и всё получилось )
Только статусы отображаются наоборот , не name статуса а id , но это мелочи , спасибо ещё раз .

Взял за основу вид не от " Показывать в категориях " , а от " Производителя " , так полегче было .

 

1 час назад, chukcha сказал:

Спрашивается... ЗАЧЕМ?

 

У меня статусов over>>>>>>100000 (так надо:-))
Необходимо было как то сортировать это и сделать более удобным .

 

 

 

 

Если кому надо вот ответ, хотя вряд ли кому пригодиться ))

в файле шаблона 

 

   <div class="form-group">
                <label class="col-sm-2 control-label" for="input-stock-status"><span data-toggle="tooltip" title="<?php echo $help_stock_status; ?>"><?php echo $entry_stock_status; ?></span></label>
                <div class="col-sm-10">				 
                  <input type="text" name="stock_status" value="<?php echo $stock_status['name']; ?>" placeholder="<?php echo $entry_stock_status; ?>" id="input-stock-status" class="form-control" />
                  <input type="hidden" name="stock_status_id" value="<?php echo $stock_status_id; ?>" />
                </div>
              </div>

 

+ добавить код JS вниз файла шаблона
 

// Stock_status
$('input[name=\'stock_status\']').autocomplete({
	'source': function(request, response) {
		$.ajax({
			url: 'index.php?route=catalog/manufacturer/autocomplete_stock&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request),
			dataType: 'json',
			success: function(json) {
				json.unshift({
					stock_status_id: 0,
					name: '<?php echo $text_none; ?>'
				});

				response($.map(json, function(item) {
					return {
						label: item['name'],
						value: item['stock_status_id']
					}
				}));
			}
		});
	},
	'select': function(item) {
		$('input[name=\'stock_status\']').val(item['label']);
		$('input[name=\'stock_status_id\']').val(item['value']);
	}
});

 

 

Добавить функцию в контроллер :

admin / controller / catalog / manufacturer.php (можно в любой , только изменить надо будет в js )

 

public function autocomplete_stock() {
		$json = array();

		if (isset($this->request->get['filter_name'])) {
			$this->load->model('catalog/product');

			$filter_data = array(
				'filter_name' => $this->request->get['filter_name'],
				'start'       => 0,
				'limit'       => 5
			);

			$results = $this->model_catalog_product->getStockStatus($filter_data);

			foreach ($results as $result) {
				$json[] = array(
					'stock_status_id' => $result['stock_status_id'],
					'name'            => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8'))
				);
			}
		}

 

 

Добавить функцию в модель :
admin/ model / catalog / product.php

 

public function getStockStatus($data = array()) {
		$sql = "SELECT * FROM " . DB_PREFIX . "stock_status";

		if (!empty($data['filter_name'])) {
			$sql .= " WHERE name LIKE '" . $this->db->escape($data['filter_name']) . "%'";
		}

		$sort_data = array(
			'name',
			'sort_order'
		);

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			$sql .= " ORDER BY " . $data['sort'];
		} else {
			$sql .= " ORDER BY name";
		}

		if (isset($data['order']) && ($data['order'] == 'DESC')) {
			$sql .= " DESC";
		} else {
			$sql .= " ASC";
		}

		if (isset($data['start']) || isset($data['limit'])) {
			if ($data['start'] < 0) {
				$data['start'] = 0;
			}

			if ($data['limit'] < 1) {
				$data['limit'] = 20;
			}

			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
		}

		$query = $this->db->query($sql);

		return $query->rows;
	}
	

 

Змінено користувачем Qhiey
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

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