Jump to content

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);
	}

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

Share this post


Link to post
Share on other sites

Это не оно???

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Нет, не все.

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

b8e9473ca7a21b48f6336daac98e6a5a.jpg

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

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

 

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

filter_by_date_full.xml

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.