krozenhover

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

Рекомендуемые сообщения

krozenhover    1

Созрела необходиость вывести колонки с переменными (в списке товаров), которые по-умолчанию 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);
	}

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
krozenhover    1

Это не оно???

Нет, это не оно. Там разговор про карточку товара идет. Я же бьюсь за product_list (список товаров).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
tabook    129

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
krozenhover    1

Самое главное - "обработчик" фильтрации по новому полю в контроллере 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>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
tabook    129

Нет, не все.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
krozenhover    1

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

 

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

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

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

b8e9473ca7a21b48f6336daac98e6a5a.jpg

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

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

 

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

filter_by_date_full.xml

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу