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

Новые колонки в админке


Recommended Posts

Созрела необходиость вывести колонки с переменными (в списке товаров), которые по-умолчанию Opencart не отображает. В частности меня интересовали "Дата добавления" (date_added) и "Дата изменения" (date_modified).

Было найдено половничатое решение,а именно вот это.

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

 

В итоге допилен добавленим строк в admin/view/temolate/catalog/product_list.tpl (верисия 1.5.4.1):

<td class="left"><?php if ($sort == 'p.date_added') { ?>
                <a href="<?php echo $sort_date_added; ?>" class="<?php echo strtolower($order); ?>"><?php echo $column_date_added; ?></a>
                <?php } else { ?>
                <a href="<?php echo $sort_date_added; ?>"><?php echo $column_date_added; ?></a>
                <?php } ?></td>
<td align="right"><input type="text" name="filter_date_added" value="<?php echo $date_added; ?>" style="text-align: right;" /></td>

И в скрипт: 

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

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

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


 Подскажите, где и что забыл прописать?

Самое главное - "обработчик" фильтрации по новому полю в контроллере product.php, метод filter() и в getList(), пожалуй, тоже.

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

Самое главное - "обработчик" фильтрации по новому полю в контроллере product.php, метод filter() и в getList(), пожалуй, тоже.

 

Вот я тоже думаю, но вроде все прописывается:

<file name="admin/controller/catalog/product.php">
        <operation>

            <search position="after"><![CDATA[
                        private function getList() {
                        ]]></search>

            <add><![CDATA[
                          if (isset($this->request->get['filter_date_added'])) {
                          $filter_date = $this->request->get['filter_date_added'];
                              } else {
                                     $filter_date = null;
                              }
                        ]]></add>

        </operation>
        <operation>

            <search position="after"><![CDATA[
                        'filter_status'   => $filter_status,
                        ]]></search>

            <add><![CDATA[
                        'filter_date'     => $filter_date,
                        ]]></add>

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


Нет, не все.

В модели товара, метод getProducts($data = array()) нужно "научить" filter_date конвертироваться в SQL запрос.

			if (isset($data['filter_date']) && !is_null($data['filter_date'])) {
				$sql .= " AND p.[ПОЛЕ_ДАТЫ_В_БД]= '" . $data['filter_date'] . "'";
			}

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

tabook, спасибо! там конечно помимо этого было косяков много. но вы подтолкнули меня к сути проблемы.

 

На всякий  случай, может кому понядобится, выкладываю vqmod (написан на основе этого), выводяший дату добавления в список товаров в админке.

В отличие от предшественника, он не только умеет сортировать по именьшению или по увеличению, но и фильтровать значения (т.е. искать заданные).

В целом можно проиллюстрировать так:

b8e9473ca7a21b48f6336daac98e6a5a.jpg

Если очень хочется, то с помощью этого мода можно выводить любые переменные из SQL базы. Нужно только заменить date_added на требуемую переменную.

Если найдете косяки - напишите, пожалуйста. Попробую доработать.

 

P.S. Тестировал на 1.5.4.1.

filter_by_date_full.xml

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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