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

Новые поля в админке и пагинация


Recommended Posts

Решил я добавить себе в админку новый столбец для вывода ID товаров перед картинкой.

Добавил соответствующие изменения в файлы:

\admin\view\template\catalog\product_list.tpl

\admin\controller\catalog\product.php

\admin\language\russian\catalog\product.php

На первой странице все хорошо:

4xGIpLyE.jpg

 

А вот после переходов через пагинацию, даже после возврата на первую страницу, столбец ID пропадает и все остальные смещаются влево:

4xGIpLyF.jpg

 

Кто-нибудь знает, как побороть сей недуг пагинации?

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


Все, справился.

В скрипте пагинации еще надо было добавить поле ID

Осталось заморочиться с полем подбора по ID, чтобы не листать весь список....

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


движок? версия? похоже на ajax.

 

ocStore Версия 1.5.5.1.2

Да, это Ajax

Поле ввода скопировал от модели, все остальное от filter_model скопировал и вставил, переименовав model в product_id

в файле \admin\controller\catalog\product.php

очень много мест оказалось с подобными вставками.

Осталось только найти, куда и как воткнуть подбор ID по введенным цифрам.

 

Вот так выглядит до ввода цифр:

4xGIpLyK.jpg

 

А вот так - после ввода:

4xGIpLyL.jpg

 

Очевидно, что он не пытается подобрать ID по введенным цифрам. Думал, что в регулярке цифр нет, но на модели проверил - есть и работает выбор по цифрам.

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


смотрите в шаблоне (непосредственно отправка, вывод/подстановка - делайте для product_id).

$('input[name=\'filter_model\']').autocomplete({
+ в контроллере товара

public function autocomplete() {
туда все идет - видно по адресу в ajax выше.

+

getProducts() в модели товаров (сама выборка).

Змінено користувачем afwollis
привел сообщение в порядок ))
Надіслати
Поділитися на інших сайтах

смотрите в шаблоне (непосредственно отправка, вывод/подстановка - делайте для product_id).

$('input[name=\'filter_model\']').autocomplete({
+ в контроллере товара

public function autocomplete() {
туда все идет - видно по адресу в ajax выше.

+

getProducts() в модели товаров (сама выборка).

 

В самом шаблоне я уже сделал:

var filter_model = $('input[name=\'filter_model\']').attr('value');
if (filter_model) {
url += '&filter_model=' + encodeURIComponent(filter_model);
}

var filter_product_id = $('input[name=\'filter_product_id\']').attr('value');
if (filter_product_id) {
url += '&filter_product_id=' + encodeURIComponent(filter_product_id);
}

Вот в автокомлите:

	public function autocomplete() {
		$json = array();
		
		if (isset($this->request->get['filter_name']) || isset($this->request->get['filter_model']) || isset($this->request->get['filter_product_id']) || isset($this->request->get['filter_category_id'])) {
			$this->load->model('catalog/product');
			$this->load->model('catalog/option');
			
			if (isset($this->request->get['filter_name'])) {
				$filter_name = $this->request->get['filter_name'];
			} else {
				$filter_name = '';
			}
			
			if (isset($this->request->get['filter_model'])) {
				$filter_model = $this->request->get['filter_model'];
			} else {
				$filter_model = '';
			}
			
			if (isset($this->request->get['filter_product_id'])) {
				$filter_product_id = $this->request->get['filter_product_id'];
			} else {
				$filter_product_id = '';
			}
			
			if (isset($this->request->get['limit'])) {
				$limit = $this->request->get['limit'];	
			} else {
				$limit = 20;	
			}			
						
			$data = array(
				'filter_name'  => $filter_name,
				'filter_model' => $filter_model,
				'filter_product_id' => $filter_product_id,
				'start'        => 0,
				'limit'        => $limit
			);
			
			if (isset($this->request->get['filter_category_id'])) {
				$data['filter_category_id'] = $this->request->get['filter_category_id'];
			}
			
			$results = $this->model_catalog_product->getProducts($data);
			
			foreach ($results as $result) {
				$option_data = array();
				
				$product_options = $this->model_catalog_product->getProductOptions($result['product_id']);	
				
				foreach ($product_options as $product_option) {
					$option_info = $this->model_catalog_option->getOption($product_option['option_id']);
					
					if ($option_info) {				
						if ($option_info['type'] == 'select' || $option_info['type'] == 'radio' || $option_info['type'] == 'checkbox' || $option_info['type'] == 'image') {
							$option_value_data = array();
							
							foreach ($product_option['product_option_value'] as $product_option_value) {
								$option_value_info = $this->model_catalog_option->getOptionValue($product_option_value['option_value_id']);
						
								if ($option_value_info) {
									$option_value_data[] = array(
										'product_option_value_id' => $product_option_value['product_option_value_id'],
										'option_value_id'         => $product_option_value['option_value_id'],
										'name'                    => $option_value_info['name'],
										'price'                   => (float)$product_option_value['price'] ? $this->currency->format($product_option_value['price'], $this->config->get('config_currency')) : false,
										'price_prefix'            => $product_option_value['price_prefix']
									);
								}
							}
						
							$option_data[] = array(
								'product_option_id' => $product_option['product_option_id'],
								'option_id'         => $product_option['option_id'],
								'name'              => $option_info['name'],
								'type'              => $option_info['type'],
								'option_value'      => $option_value_data,
								'required'          => $product_option['required']
							);	
						} else {
							$option_data[] = array(
								'product_option_id' => $product_option['product_option_id'],
								'option_id'         => $product_option['option_id'],
								'name'              => $option_info['name'],
								'type'              => $option_info['type'],
								'option_value'      => $product_option['option_value'],
								'required'          => $product_option['required']
							);				
						}
					}
				}
					
				$json[] = array(
					'product_id' => $result['product_id'],
					'name'       => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')),	
					'model'      => $result['model'],
					'product_id'  => $result['product_id'],
					'option'     => $option_data,
					'price'      => $result['price']
				);	
			}
		}

		$this->response->setOutput(json_encode($json));
	}

Но с этим не работает.

Можно немного подробнее по поводу последнего?

 

 

getProducts() в модели товаров (сама выборка). 
Надіслати
Поділитися на інших сайтах


  • 2 months later...

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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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