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

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


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

 

 

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

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

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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;
	}
	

 

Edited by Qhiey
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • 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.