Перейти к содержанию
Форум поддержки пользователей VamShop

Новый модуль - Сравнение товаров


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

Нужно попробовать код доп. полей из /includes/modules/product_info.php

Вот этот:


                      $extra_fields_query = vam_db_query("
                      SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
                      FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
            LEFT JOIN  ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf
            ON ptf.products_extra_fields_id=pef.products_extra_fields_id
            WHERE ptf.products_id=". $product->data['products_id'] ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$_SESSION['languages_id']."')
            ORDER BY products_extra_fields_order");

  while ($extra_fields = vam_db_fetch_array($extra_fields_query,true)) {
        if (! $extra_fields['status'])  // show only enabled extra field
          continue;
 
  $extra_fields_data[] = array (
  'NAME' => $extra_fields['name'],
  'VALUE' => $extra_fields['value']
  );
 
  }

  $info->assign('extra_fields_data', $extra_fields_data);
[/code]

Перенести в /includes/modules/compare.php и /includes/modules_product_compare.php

А также в шаблоны сравнения товаров добавить те же метки доп. полей, что и в шаблоне карточки товара в /templates/шаблон/module/product_info/product_info_v1.html

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

Top Posters In This Topic

  • support

    51

  • one

    17

  • alpha

    8

  • evk

    8

Top Posters In This Topic

Posted Images

Вставь перед:


    $module->assign('language', $_SESSION['language']);
[/code]

Только в этом коде, который будешь вставлять поменяй $info->assign на $module->assign

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

Что то не того:

MYSQL ERROR REPORT

- 25/03/2008 20:03:11

---------------------------------------

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languag' at line 5

                      SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value

                      FROM products_extra_fields pef

            LEFT JOIN  products_to_products_extra_fields ptf

            ON ptf.products_extra_fields_id=pef.products_extra_fields_id

            WHERE ptf.products_id= and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='1')

            ORDER BY products_extra_fields_order

---------------------------------------

Server Name  : www.DOMAIN.COM

Remote Address: 89.207.242.1

Referer      : http://www.DOMAIN.COM/BLA-BLA-BLA

Requested    : /product_compare.php?products%5B%5D=729&products%5B%5D=716

Trace Back    : product_compare.php:27(includearray(1) {;  [0]=>;  string(64) "includes/modules/product_compare.php"; }; ) => includes/modules/product_compare.php:127(vam_db_query) => inc/vam_db_query.inc.php:34(vam_db_error)

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

Попробуй заменить в /includes/modules/product_compare.php, в коде, что ты добавил:


WHERE ptf.products_id=". $product->data['products_id'] ." and
[/code] на:
[code]
WHERE ptf.products_id IN (".implode(", ", $temp).") and

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

Вобщем, /includes/modules/compare.php не трогай вообще, он тут непричём.

А в /includes/modules/product_compare.php попробуй вот такой код:


                      $extra_fields_query = vam_db_query("

                      SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value

                      FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef

            LEFT JOIN  ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf

            ON ptf.products_extra_fields_id=pef.products_extra_fields_id

            WHERE ptf.products_id IN (".implode(", ", $c_id).") and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$_SESSION['languages_id']."')

            ORDER BY products_extra_fields_order");



  while ($extra_fields = vam_db_fetch_array($extra_fields_query,true)) {

        if (! $extra_fields['status'])  // show only enabled extra field

          continue;

 

  $extra_fields_data[] = array (

  'NAME' => $extra_fields['name'],

  'VALUE' => $extra_fields['value']

  );

 

  }



  $info->assign('extra_fields_data', $extra_fields_data);
[/code]

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

Уже лучше... но выводит данные в две колонки наименование и значение... Как то надо вывести что бы наименование в одной колонке и один раз а значение уже для каждого наименования в своей колонке относительно выбранного товара для сравнения...

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

Это нужно как-то поправить шаблон, может вставить метки доп. полей внутрь выводимых характеристик или ещё как-то, даже не могу точнее сказать, вобщем, в любом случае, нужно как-поправить /templates/шаблон/module/product_compare.html

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

Посидел подумал и выдумал...

Вот оригинальный код оформления вывода дополнительных полей:

<table>
{foreach name=aussen item=extra_fields from=$extra_fields_data}
<tr>
<td><b>{$extra_fields.NAME}:</b></td>
<td>{$extra_fields.VALUE}</td>
</tr>
{/foreach}
</table>[/code] Выводиться столько полей сколько их у каждого товара... Глупо... В нашем случае надо что бы было так:
[code]<table>
{foreach name=aussen item=extra_fields from=$extra_fields_data}
<tr>
<!-- выводим по одному разу -->
<td><b>{$extra_fields.NAME}:</b></td>
</tr>
<!-- /выводим по одному разу -->
<!-- выводим столько сколько надо -->
<tr>
<td>{$extra_fields.VALUE}</td>
</tr>
<!-- /выводим столько сколько надо -->
{/foreach}
</table>

Примерно так я думаю...

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

Наверное, я просто не пробовал, ты посмотри как сделан шаблон сравнения и примерно тоже самое пробуй делать с доп. полями.

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

После обновления до версии 1,46, при переустановке (поверх) выает это:

Не могу найти :

/* Begin compare - installed by Установка модулей */

define('FILENAME_COMPARE_PARAMETERS', 'compare_parameters.php');

define('TABLE_PRODUCTS_COMPARE_PARAMETERS', 'products_compare_parameters');

define('TABLE_PRODUCTS_COMPARE_PARAMETERS2PRODUCTS', 'products_compare_parameters2products');

/* End compare - installed by Установка модулей */

в файле: /home/madinfini/domains/dct-live.com/public_html/admin/includes/application_top.php

<add2end> #1

А в карточке товара появилось такое сообщение: Warning: Smarty error: unable to read resource: "vamshop_table/module/product_parameters.html" in /home/madinfini/domains/dct-live.com/public_html/includes/external/smarty/Smarty.class.php on line 1092

Теперь когда хочу задать параметры - выкидывает на "главную" магазина.

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

А если руками попробовать поставить, читая readme.txt?!

Или нужно именно что б автоматом без ошибки было?

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

А если руками попробовать поставить, читая readme.txt?!

Или нужно именно что б автоматом без ошибки было?

Дык работалож на автомате :) Попробую руками. Просто думал есть более простое решение. Перед тем как руками ставить, нужно в админке модуль удалить? Или не обязательно?

И еще: в readme.txt написанно:

Откройте файл /templates/vamshop/module/product_listing/product_listing_columns.html

Ищите:

{foreach name=aussen item=module_data from=$module_content}

Добавляйте после:

<form action="{$smarty.const.FILENAME_PRODUCT_COMPARE}">

Добавлять после {foreach name=aussen item=module_data from=$module_content} это сразу после? или с новой строки?

{foreach name=aussen item=module_data from=$module_content}<form action="{$smarty.const.FILENAME_PRODUCT_COMPARE}"> ТАК?

{foreach name=aussen item=module_data from=$module_content}

<form action="{$smarty.const.FILENAME_PRODUCT_COMPARE}"> ИЛИ ТАК?

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

Я вот сейчас попробовал модуль compare.zip поставить на "автомате" через Админку - Модули - Установка модулей.

Всё нормально установилось.

Что значит при переустановке модуля вот ты пишешь?!

Вобщем, если патч накатил, у модуль compare не удалял перед патчем, лучше попобовать руками по readme.txt поставить.

По поводу вопроса, как правильно.

Правильно и так и так, без разницы.

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

переустанавливал модуль после того как пропатчил. Модуль ставил через админку, предварительно удалив уже установленный (удалил тож через админку)

По поводу вопроса, как правильно.

Правильно и так и так, без разницы.

Это я так понимаю ответ на мой вопрос по поводу вставки кодов? Ответ на мой предыдущий топ?

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

Я не знаю, почему у Вас проблема, я ж вот попробовать на автомате установить, модуль установился.

Если у Вас не ставится, попробуйте по readme.txt, там же не сложно вроде бы.

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

Читал, читал, смотрю много исправлений а где финальный релиз со всеми исправлениями лежит не понял :(

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

Саша привет. Хочу внести небольшое предложение по модулю...

Если я не ошибаюсь - то модуль работает следующим образом - Для сравнения необходимо чтобы все сравниваемые товары находились на одной странице. Но, к примеру, если нам нужно сравнить ноутбуки (а их предположим в категорогии 100 штук), то единственных способ сравнить конкретные модели - это вывести на странице все 100 ноутов, что, естественно, увеличит время загрузки и заставит клиента выбирать из 100 штук необходимые модели.

Думаю, целесообразней было бы сделать примерно так   

http://hotline.ua/gd/12/

чтобы при выборе товара, данные о выбранном товаре сохранялись и при просмотре следующего количество товаров - можна было бы добавить новый товар для сравнения с товарами, выбранными в прошлом.

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

Идея хорошая, но я даже не знаю как её реализовать, пока что реализовать такое не получится, к сожалению.

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

×
×
  • Создать...