Перейти к содержимому


Модуль "показа/непоказа" характеристик в описаниях товаров


  • Вы не можете ответить в тему
Сообщений в теме: 5

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 June 2012 - 12:43 PM

Модуль позволяет в админке в "Характеристики товаров" задать, какие характеристики надо показывать
в кратком и полном описании товара, а какие нет.


1. файл add_fields.php копируем в корень сайта и выполняем http://ваш_сайт/add_fields.php
затем удаляем, т.к. он больше не нужен.

таким образом мы добавили к таблице xxxx_product_options нужное поле - флаг показа/непоказа характеристики
в описаниях товара (product_show).

Можно сделать по другому - в mysql или myphpadmin выполнить команду
ALTER TABLE xxxx_product_options ADD product_show BOOL DEFAULT 1;
где xxxx это префикс ваших таблиц, а 1 - по умолчанию новая добавляемая характристика будет показываться.
Если хотите, чтобы характристики по умолчанию не показывались, то поставьте 0.


2. в файле catalog_extra.php ищем строку


$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort" ) );


и добавляем в нее еще один элемент


$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort", "extra_product" ) );



3. в файле catalog_extra.tpl.html

ищем строку


<table class="adn"><tr class="lineb">


и добавляем после нее строку


<td align="left">Show</td>


ищем строку


<tr class="liney">


и добавляем после нее строку


<td align="left"><input type="checkbox" class="round" name="extra_product_{$options[i].optionID}" {if $options[i].product_show}checked{/if} title="Show this characteristic on product pages"></td>



4. в файле option_functions.php

в функции optGetOptions ищем строку


$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants FROM '.PRODUCT_OPTIONS_TABLE.' as ps


и добавляем в нее еще один элемент


$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants, ps.product_show FROM '.PRODUCT_OPTIONS_TABLE.' as ps


в функции optUpdateOptions ищем строку


"', sort_order=".(int)$val["extra_sort"]." where optionID=".(int)$key);


и добавляем в нее еще один элемент


"', sort_order=".(int)$val["extra_sort"].", product_show=".(isset($val["extra_product"])?1:0)." where optionID=".(int)$key);



5. в файле product_functions.php

в функции GetExtraParametrs ищем строку


$sql = 'select povt.productID,pot.optionID,pot.name,povt.option_value,povt.option_type,povt.option_show_times, povt.variantID, povt.optionID


и добавляем в нее еще один элемент


$sql = 'select povt.productID,pot.optionID,pot.name,pot.product_show,povt.option_value,povt.option_type,povt.option_show_times, povt.variantID, povt.optionID



6. в файле product_brief.tpl.html

ищем строку


{section name=i loop=$product_info.product_extra}


и добавляем после нее строку


{if $product_info.product_extra[i].product_show eq 1 }


далее перед соответствующим {/section} добавляем {/if} для сохранения правильности структуры.
У меня это четвертый по счету {/section}, последний перед </form>


7. в файле product_detailed.tpl.html

ищем строку


{section name=i loop=$product_extra}


и добавляем после нее строку


{if $product_extra[i].product_show eq 1 }


далее перед соответствующим {/section} добавляем {/if} для сохранения правильности структуры.
У меня это четвертый по счету {/section}, последний перед </form>

Прикрепленные файлы

  • Прикрепленный файл  addon.php   421байт   13 Количество загрузок:

  • 3
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 18 June 2012 - 12:59 PM

Собственно, ничто не мешает ровно таким же образом сделать у характеристики товара еще один чекбокс "Выводить эту хар-ку в точке X" и установить галочку напротив, скажем, характеристики "Производитель". Ну а дальше выводить эту характеристику как угодно и где угодно.
Например, чуть переделав блок filter.tpl.html от "развесистого фильтра", чтобы учитывать эту галочку и сделать список выпадающим, а не чекбоксами получим отдельный блок "поиск по производителю". Т.е. ровно тот же фильтр, но, обрезанный, с фильтрацией только по одной характеристике. Или по двум (скажем, производитель и страна производства). И не надо городить никаких отдельных списков производителей, привязанных к категории. Зачем, если "производитель" это свойство товара, а не "категории товаров"?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 October 2012 - 11:06 AM

Модуль позволяет в админке в "Характеристики товаров" задать, какие характеристики надо показывать
в кратком и полном описании товара, а какие нет.

Установка:
==========

1. копируем файлы

addon.php -> core/includes/admin/

Этот файл нужен ОДИН РАЗ для создания в таблицах новых полей.
После первого же захода в админку его можно удалить, если он не удалился сам.


2. в файле core/includes/admin/sub/catalog_extra.php

строку


$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort" ) );


заменяем на


#BEGIN CharacterShow
#$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort" ) );
$updateOptions = ScanPostVariableWithId( array( "extra_option", "extra_sort", "extra_brief", "extra_product" ) );
#END CharacterShow



3. в файле core/tpl/admin/catalog_extra.tpl.html

3.1. после строки


<td align="left" width="100%" >{$smarty.const.ADMIN_CUSTOM_OPTION_TITLE}</td>


вставляем


{* BEGIN CharacterShow *}
<td align="left">Краткое</td>
<td align="left">Полное</td>
{* END CharacterShow *}


3.2. после строки


<td align="left"><input type=text class="textp" name="extra_option_{$options[i][0]}" value="{$options[i][1]}" size="46"></td>


вставляем


{* BEGIN CharacterShow *}
<td align="center"><input type="checkbox" class="round" name="extra_brief_{$options[i].optionID}" {if $options[i].brief_show}checked{/if} title="Показывать характеристику в кратком описании товара"></td>
<td align="center"><input type="checkbox" class="round" name="extra_product_{$options[i].optionID}" {if $options[i].product_show}checked{/if} title="Показывать характеристику в полном описании товара"></td>
{* END CharacterShow *}


4. в файле core/functions/option_functions.php

4.1 в функции optGetOptions строку


$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants FROM '.PRODUCT_OPTIONS_TABLE.' as ps


заменяем ее на


#BEGIN CharacterShow
#$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants FROM '.PRODUCT_OPTIONS_TABLE.' as ps
$SQL = 'select ps.optionID, ps.name, ps.sort_order, COUNT(povv.variantID) as count_variants, ps.brief_show, ps.product_show FROM '.PRODUCT_OPTIONS_TABLE.' as ps


4.2 в функции optUpdateOptions строку


"', sort_order=".(int)$val["extra_sort"]." where optionID=".(int)$key);


заменяем на


#BEGIN CharacterShow
#"', sort_order=".(int)$val["extra_sort"]." where optionID=".(int)$key);
"', sort_order=".(int)$val["extra_sort"].
", brief_show=".(isset($val["extra_brief"])?1:0).
", product_show=".(isset($val["extra_product"])?1:0).
" where optionID=".(int)$key);
#END CharacterShow


5. в файле core/functions/product_functions.php

5.1 в функции GetExtraParametrs строку


$sql = 'select povt.productID,pot.optionID,pot.name,povt.option_value,povt.option_type,povt.option_show_times, povt.variantID, povt.optionID


заменяем на


#BEGIN CharacterShow
#$sql = 'select povt.productID,pot.optionID,pot.name,povt.option_value,povt.option_type,povt.option_show_times, povt.variantID, povt.optionID
$sql = 'select povt.productID,pot.optionID,pot.name,pot.brief_show,pot.product_show,povt.option_value,povt.option_type,povt.option_show_times, povt.variantID, povt.optionID


между строк


'name' => $_Row['name'],
'option_value' => $_Row['option_value']


вставляем строки


#BEGIN CharacterShow
'brief_show' => $_Row['brief_show'],
'product_show' => $_Row['product_show'],
#END CharacterShow




6. в файле product_brief.tpl.html

ищем текст


{section name=i loop=$product_info.product_extra}


и добавляем после него (где-то ниже строкой, где-то в той же строке)


{if $product_info.product_extra[i].brief_show eq 1}


далее перед соответствующим закрывающим {/section} добавляем {/if}

таких замен в файле семь


7. в файле product_detailed.tpl.html

ищем текст


{section name=i loop=$product_extra}


и добавляем после него (где-то ниже строкой, где-то в той же строке)


{if $product_extra[i].product_show eq 1}


далее перед соответствующим закрывающим {/section} добавляем {/if}

таких замен в файле семь

Прикрепленные файлы

  • Прикрепленный файл  addon.php   421байт   17 Количество загрузок:

  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 mailomsk

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 135 сообщений
Репутация: 0
Начинающий
  • ГородОмск

Отправлено 03 July 2013 - 04:11 PM

А сам файл где взять?
  • 0

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 13 July 2013 - 05:41 PM

http://vsupport.club...dpost__p__27081
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 24 March 2014 - 07:26 PM

Update:
Дошли руки выложить исправленную версию, т.к. я убрал этот модуль из состава фильтра. См. шапку.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)