Jump to content
Sign in to follow this  
Qhiey

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

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

 

 

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

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

Share this post


Link to post
Share on other sites
11 минут назад, Qhiey сказал:

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Posted (edited)
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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.