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

Невелика доробка в адмінці в списку товарів


Recommended Posts

Доброго дня.

Магазин на ОС 1.5.ххх

 

В списку товарів додати чотири кнопки:

- Дві "Ввімкнути товар" і "Вимкнути товар"

- Дві - Задати "0 на складі" і "Задати 1 на складі"

 

Тобто в списку товарів я відфільтрував товари з потрібної категорії, вибрав галочками ті які хочу Вимкнути або Ввімкнути товари, чи Задати нуль на складі або навпаки зробити одиницю на складі.

 

Це необхідно для того щоб саме потрібну мені кількість товарів в самому списку, я міг вимкнути або задати нуль на складі і навпаки ввімкнути або одиницю на складі.

 

Не пропонуйте модулі комбайни, вони не потрібні. Лише такі  чотири кнопки.

 

В особисті пишіть вартість

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


В 07.04.2026 в 00:43, hon2012 сказав:

Доброго дня.

Магазин на ОС 1.5.ххх

 

В списку товарів додати чотири кнопки:

- Дві "Ввімкнути товар" і "Вимкнути товар"

- Дві - Задати "0 на складі" і "Задати 1 на складі"

 

Тобто в списку товарів я відфільтрував товари з потрібної категорії, вибрав галочками ті які хочу Вимкнути або Ввімкнути товари, чи Задати нуль на складі або навпаки зробити одиницю на складі.

 

Це необхідно для того щоб саме потрібну мені кількість товарів в самому списку, я міг вимкнути або задати нуль на складі і навпаки ввімкнути або одиницю на складі.

 

Не пропонуйте модулі комбайни, вони не потрібні. Лише такі  чотири кнопки.

 

В особисті пишіть вартість

Прихований текст
<?xml version="1.0" encoding="UTF-8"?>
<modification>
	<id>Admin Product Bulk Enable Disable Qty 0 1</id>
	<version>1.0</version>
	<vqmver>2.1.6</vqmver>
	<author>OpenAI</author>

	<file name="admin/model/catalog/product.php">
		<operation>
			<search position="before"><![CDATA[
}
			]]></search>
			<add><![CDATA[

	public function setProductsStatus($product_ids, $status) {
		$product_ids = array_map('intval', (array)$product_ids);

		if (!$product_ids) {
			return;
		}

		$this->db->query("UPDATE " . DB_PREFIX . "product SET status = '" . (int)$status . "' WHERE product_id IN (" . implode(',', $product_ids) . ")");
	}

	public function setProductsQuantity($product_ids, $quantity) {
		$product_ids = array_map('intval', (array)$product_ids);

		if (!$product_ids) {
			return;
		}

		$this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = '" . (int)$quantity . "' WHERE product_id IN (" . implode(',', $product_ids) . ")");
	}

			]]></add>
		</operation>
	</file>

	<file name="admin/controller/catalog/product.php">
		<operation>
			<search position="after"><![CDATA[
$this->data['delete'] = $this->url->link('catalog/product/delete', 'token=' . $this->session->data['token'] . $url, 'SSL');
			]]></search>
			<add><![CDATA[
		$this->data['enable_selected']   = $this->url->link('catalog/product/enableSelected', 'token=' . $this->session->data['token'] . $url, 'SSL');
		$this->data['disable_selected']  = $this->url->link('catalog/product/disableSelected', 'token=' . $this->session->data['token'] . $url, 'SSL');
		$this->data['qty_zero_selected'] = $this->url->link('catalog/product/qtyZeroSelected', 'token=' . $this->session->data['token'] . $url, 'SSL');
		$this->data['qty_one_selected']  = $this->url->link('catalog/product/qtyOneSelected', 'token=' . $this->session->data['token'] . $url, 'SSL');
			]]></add>
		</operation>

		<operation>
			<search position="after"><![CDATA[
$this->data['button_delete'] = $this->language->get('button_delete');
			]]></search>
			<add><![CDATA[
		$this->data['button_enable_selected']   = $this->language->get('button_enable_selected');
		$this->data['button_disable_selected']  = $this->language->get('button_disable_selected');
		$this->data['button_qty_zero_selected'] = $this->language->get('button_qty_zero_selected');
		$this->data['button_qty_one_selected']  = $this->language->get('button_qty_one_selected');
			]]></add>
		</operation>

		<operation>
			<search position="before"><![CDATA[
	protected function validateDelete() {
			]]></search>
			<add><![CDATA[

	public function enableSelected() {
		$this->bulkProductAction('status', 1);
	}

	public function disableSelected() {
		$this->bulkProductAction('status', 0);
	}

	public function qtyZeroSelected() {
		$this->bulkProductAction('quantity', 0);
	}

	public function qtyOneSelected() {
		$this->bulkProductAction('quantity', 1);
	}

	private function bulkProductAction($type, $value) {
		$this->language->load('catalog/product');
		$this->document->setTitle($this->language->get('heading_title'));
		$this->load->model('catalog/product');

		if (!$this->user->hasPermission('modify', 'catalog/product')) {
			$this->session->data['error_warning'] = $this->language->get('error_permission');
		} elseif (empty($this->request->post['selected'])) {
			$this->session->data['error_warning'] = $this->language->get('error_no_products_selected');
		} else {
			$selected = $this->request->post['selected'];
			$count = count($selected);

			if ($type == 'status') {
				$this->model_catalog_product->setProductsStatus($selected, (int)$value);

				if ((int)$value) {
					$this->session->data['success'] = sprintf($this->language->get('text_success_enable_selected'), $count);
				} else {
					$this->session->data['success'] = sprintf($this->language->get('text_success_disable_selected'), $count);
				}
			}

			if ($type == 'quantity') {
				$this->model_catalog_product->setProductsQuantity($selected, (int)$value);

				if ((int)$value == 0) {
					$this->session->data['success'] = sprintf($this->language->get('text_success_qty_zero_selected'), $count);
				} else {
					$this->session->data['success'] = sprintf($this->language->get('text_success_qty_one_selected'), $count);
				}
			}

			$this->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $this->getBulkActionUrl(), 'SSL'));
		}

		$this->getList();
	}

	private function getBulkActionUrl() {
		$url = '';

		$allowed = array(
			'filter_name',
			'filter_model',
			'filter_price',
			'filter_quantity',
			'filter_status',
			'filter_category_id',
			'filter_category',
			'category_id',
			'path',
			'manufacturer_id',
			'sort',
			'order',
			'page'
		);

		foreach ($allowed as $key) {
			if (isset($this->request->get[$key])) {
				$url .= '&' . $key . '=' . urlencode(html_entity_decode($this->request->get[$key], ENT_QUOTES, 'UTF-8'));
			}
		}

		return $url;
	}

			]]></add>
		</operation>
	</file>

	<file name="admin/view/template/catalog/product_list.tpl">
		<operation>
			<search position="replace"><![CDATA[
<a onclick="$('form').submit();" class="button"><span><?php echo $button_delete; ?></span></a>
			]]></search>
			<add><![CDATA[
<a onclick="$('#form').attr('action', '<?php echo $enable_selected; ?>'); $('#form').submit();" class="button"><span><?php echo $button_enable_selected; ?></span></a>
<a onclick="$('#form').attr('action', '<?php echo $disable_selected; ?>'); $('#form').submit();" class="button"><span><?php echo $button_disable_selected; ?></span></a>
<a onclick="$('#form').attr('action', '<?php echo $qty_zero_selected; ?>'); $('#form').submit();" class="button"><span><?php echo $button_qty_zero_selected; ?></span></a>
<a onclick="$('#form').attr('action', '<?php echo $qty_one_selected; ?>'); $('#form').submit();" class="button"><span><?php echo $button_qty_one_selected; ?></span></a>
<a onclick="$('form').submit();" class="button"><span><?php echo $button_delete; ?></span></a>
			]]></add>
		</operation>
	</file>

	<file name="admin/language/*/catalog/product.php">
		<operation>
			<search position="after"><![CDATA[
$_['button_delete']          = 'Delete';
			]]></search>
			<add><![CDATA[
$_['button_enable_selected']   = 'Ввімкнути товар';
$_['button_disable_selected']  = 'Вимкнути товар';
$_['button_qty_zero_selected'] = 'Задати 0 на складі';
$_['button_qty_one_selected']  = 'Задати 1 на складі';

$_['text_success_enable_selected']  = 'Увімкнено товарів: %s';
$_['text_success_disable_selected'] = 'Вимкнено товарів: %s';
$_['text_success_qty_zero_selected'] = 'Для товарів встановлено кількість 0: %s';
$_['text_success_qty_one_selected']  = 'Для товарів встановлено кількість 1: %s';

$_['error_no_products_selected'] = 'Будь ласка, виберіть товари.';
			]]></add>
		</operation>
	</file>
</modification>

 

 

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


В 07.04.2026 в 00:43, hon2012 сказав:

Доброго дня.

Магазин на ОС 1.5.ххх

 

В списку товарів додати чотири кнопки:

- Дві "Ввімкнути товар" і "Вимкнути товар"

- Дві - Задати "0 на складі" і "Задати 1 на складі"

 

Тобто в списку товарів я відфільтрував товари з потрібної категорії, вибрав галочками ті які хочу Вимкнути або Ввімкнути товари, чи Задати нуль на складі або навпаки зробити одиницю на складі.

 

Це необхідно для того щоб саме потрібну мені кількість товарів в самому списку, я міг вимкнути або задати нуль на складі і навпаки ввімкнути або одиницю на складі.

 

Не пропонуйте модулі комбайни, вони не потрібні. Лише такі  чотири кнопки.

 

В особисті пишіть вартість


Можливо, цей модуль стане Вам у пригоді

 

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

В 07.04.2026 в 16:42, S_A_P сказав:

Можливо, цей модуль стане Вам у пригоді

Там ТС потрібно під 1.5x

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

В 07.04.2026 в 16:48, sasha3337774 сказав:

Там ТС потрібно під 1.5x

Так, точно, відразу не помітив. ДЯкую

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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