Jump to content

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


Recommended Posts

support

Нужно попробовать код доп. полей из /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

Link to post
Share on other sites
  • Replies 100
  • Created
  • Last Reply

Top Posters In This Topic

  • support

    51

  • one

    17

  • alpha

    8

  • evk

    8

Top Posters In This Topic

Posted Images

support

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


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

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

Link to post
Share on other sites

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

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)

Link to post
Share on other sites
support

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


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

Link to post
Share on other sites
support

Ошибка точно такая же или что-то поменялось?

Link to post
Share on other sites
support

Вобщем, /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]

Link to post
Share on other sites

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

Link to post
Share on other sites
support

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

Link to post
Share on other sites

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

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

<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>

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

Link to post
Share on other sites
support

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

Link to post
Share on other sites
  • 3 months later...
mad_infinity

После обновления до версии 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

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

Link to post
Share on other sites
support

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

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

Link to post
Share on other sites

а можно гдето это посмотреть в живую как оно сравнивает товары?

Link to post
Share on other sites
mad_infinity

А если руками попробовать поставить, читая 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}"> ИЛИ ТАК?

Link to post
Share on other sites
support

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

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

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

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

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

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

Link to post
Share on other sites
mad_infinity

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

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

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

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

Link to post
Share on other sites
support

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

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

Link to post
Share on other sites
  • 4 weeks later...
pitch Maxim

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

Link to post
Share on other sites

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

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

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

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

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

Link to post
Share on other sites

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

Link to post
Share on other sites
  • 1 month later...

×
×
  • Create New...