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


еще один блок (фильтр) "производители"


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

#1 badisoft

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

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

Отправлено 15 August 2013 - 10:37 PM

Модуль представляет собой некоторое развитие картинок к вариантам характеристик. В "Характеристиках товаров" появляется возможность выбрать, какая из характеристик (варианты) будет показываться в блоке "Производители". Ну и написан сам блок. Точнее, HTML-код я позаимствовал с какого-то сайта.

Спонсор модуля: wwwsasa2

Клиентскую часть можно увидеть в подписи, а админка выглядит примерно так (обведенное красным).

Прикрепленный файл  1.JPG   137.55К   163 Количество загрузок:

Установка:
-----------------------------------------
1. в файле option_functions.php

1.1 в функции optGetOptionValues строку


$q = db_query("select variantID, optionID, option_value, sort_order from ".


заменяем на


# BEGIN providers-with-pictures-block
#$q = db_query("select variantID, optionID, option_value, sort_order from ".
$q = db_query("select variantID, optionID, option_value, sort_order, picture from ".
# END providers-with-pictures-block


1.2 в конец файла добавляем функцию


# BEGIN providers-with-pictures-block
function optaddoptionvalue_by_namer( $optionID, $value, $sort_order, $picture )
{
db_query( "insert into ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." (optionID, option_value, sort_order, picture) values('".$optionID."', '".xtotext($value)."', '".$sort_order."', '".xtotext($picture)."')");
return db_insert_id();
}
# END providers-with-pictures-block



2. в файле product_functions.php

2.1 в функции GetExtraParametrs

строку


$sql = 'select povvt.option_value, povvt.variantID, post.price_surplus


заменяем на


# BEGIN providers-with-pictures-block
#$sql = 'select povvt.option_value, povvt.variantID, post.price_surplus
$sql = 'select povvt.option_value, povvt.variantID, povvt.picture, post.price_surplus
# END providers-with-pictures-block


после строки


$_Row['values_to_select'][$i]['option_value'] = $_Rowue['option_value'];


вставляем


# BEGIN providers-with-pictures-block
$_Row['values_to_select'][$i]['picture'] = $_Rowue['picture'];
# END providers-with-pictures-block



3. в файле catalog_extra.php

3.1 перед строкой


if (isset($_GET["save_successful"])) //update was successful


вставляем


# BEGIN providers-with-pictures-block
if(!defined('CONF_PROVIDERS_WITH_PICTURES_BLOCK'))
db_query("INSERT ".SETTINGS_TABLE." SET
settings_groupID=24,
settings_constant_name='CONF_PROVIDERS_WITH_PICTURES_BLOCK',
settings_value='0',
settings_title='Для какой характеристики показывать таблицу вариантов с картинками',
settings_description='Выберите, Для какой характеристики показывать таблицу вариантов с картинками',
settings_html_function='settingCONF_PROVIDERS_WITH_PICTURES_BLOCK()',
sort_order=1");
$smarty->assign("settings", settingGetSettings(24) );
$smarty->assign("controls", settingCallHtmlFunctions(24) );

if (!db_fetch_row(db_query("SHOW COLUMNS FROM ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." LIKE 'picture'"))) db_query("ALTER TABLE ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." ADD picture varchar(50) NULL");
if(!file_exists("data/option_image")) mkdir("data/option_image");
# END providers-with-pictures-block


3.2 перед строкой


// update existing values


вставляем


# BEGIN providers-with-pictures-block
$updatePictures = ScanFilesVariableWithId(array( "add_picture"));
foreach( $updatePictures as $key => $val )
{
if ( isset($val["add_picture"]) )
{
$picture = saveVariantsPicture('add_picture_'.$key);
if ($picture)
{
$row = db_fetch_assoc(db_query("SELECT picture from ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." WHERE variantID=$key"));
if ($picture != $row['picture'])
{
if (!empty($row['picture']) && file_exists("data/option_image/".$row['picture'])) unlink("data/option_image/".$row['picture']);
db_query("UPDATE ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." SET picture='$picture' WHERE variantID=$key");
}
}
}
}
# END providers-with-pictures-block



3.3 строки


optAddOptionValue($_POST["optionID"], $_POST["add_value"],
(int)$_POST["add_sort"] );


заменяем на


# BEGIN providers-with-pictures-block
#optAddOptionValue($_POST["optionID"], $_POST["add_value"],
#(int)$_POST["add_sort"] );
optAddOptionValue_by_namer($_POST["optionID"], $_POST["add_value"], (int)$_POST["add_sort"], saveVariantsPicture('add_option_picture'));
# END providers-with-pictures-block


3.4 после строки


$variantid = (int)$_GET["kill_value"];


вставляем


# BEGIN providers-with-pictures-block
$row = db_fetch_assoc(db_query("SELECT picture from ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." WHERE variantID=".$variantid));
if (!empty($row['picture']) && file_exists("data/option_image/".$row['picture'])) unlink("data/option_image/".$row['picture']);
# END providers-with-pictures-block



3.5 в конец файла вставляем


# BEGIN providers-with-pictures-block
function settingCONF_PROVIDERS_WITH_PICTURES_BLOCK()
{
if ( isset($_POST["save_options"]) && isset($_POST["settingCONF_PROVIDERS_WITH_PICTURES_BLOCK"]) )
_setSettingOptionValue( "CONF_PROVIDERS_WITH_PICTURES_BLOCK", $_POST["settingCONF_PROVIDERS_WITH_PICTURES_BLOCK"] );
$res = "<select name='settingCONF_PROVIDERS_WITH_PICTURES_BLOCK'>";
foreach (optGetOptions() as $option)
$res .= "<option value='".$option['optionID']."'".($option['optionID']==CONF_PROVIDERS_WITH_PICTURES_BLOCK?" selected":"").">".$option['name']."</option>";
$res .= "</select>";
return $res;
}

function saveVariantsPicture($add_picture)
{
if($_FILES[$add_picture]['tmp_name'])
{
if(!is_uploaded_file($_FILES[$add_picture]['tmp_name'])) die("Проблема загрузки файла");
if(substr($_FILES[$add_picture]['type'],0,5) != 'image') die ("Разрешена загрузка только изображений");
if (filesize($_FILES[$add_picture]['tmp_name']) > 20000) die ("Размер файла превышает допустимый (20 КБ)");
$picture = $_FILES[$add_picture]['name'];
$expl = explode(".",$picture,2);
$i=1;
while (file_exists("data/option_image/".$picture)) $picture = $expl[0]."_".$i++.".".$expl[1];
if (!move_uploaded_file($_FILES[$add_picture]['tmp_name'],"data/option_image/".$picture)) die("Не удалось скопировать файл из временного каталога сервера в каталог data/option_image");
return $picture;
}
else return NULL;
}
# END providers-with-pictures-block



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

4.1 вместо строки


<form action="{$smarty.const.ADMIN_FILE}" method=POST name="formext" id="formext">


вставляем


{* BEGIN providers-with-pictures-block *}
{*<form action="{$smarty.const.ADMIN_FILE}" method=POST name="formext" id="formext">*}
<form action="{$smarty.const.ADMIN_FILE}" method=POST name="formext" id="formext" enctype="multipart/form-data">
{* END providers-with-pictures-block *}


4.2 перед ПЕРВЫМ входением строки


<table class="adn"><tr><td class="separ"><img src="data/admin/pixel.gif" alt="" class="sep"></td></tr><tr><td class="se5"></td></tr></table>


вставляем


{* BEGIN providers-with-pictures-block *}
<table>
<tr class="liney ell">
<td class="settab listsr">{$controls[0]}</td>
<td class="listsl"><b>{$settings[0].settings_title}</b><br>{$settings[0].settings_description}</td>
</tr>
</table>
{* END providers-with-pictures-block *}


4.3 перед строкой


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


вставляем


{* BEGIN providers-with-pictures-block *}
<td align="left" class="toph3">Картинка</td>
{* END providers-with-pictures-block *}


4.4 строку


<td align="left"><input name="option_value_{$values[i].variantID}" type=text value="{$values[i].option_value}" class="textp" size="30"></td>


заменяем на


{* BEGIN providers-with-pictures-block *}
{*<td align="left"><input name="option_value_{$values[i].variantID}" type=text value="{$values[i].option_value}" class="textp" size="30"></td>*}
<td align="left" valign="middle">
{if $values[i].picture}
<img src="data/option_image/{$values[i].picture}" alt="" width="50" style="vertical-align:middle;">&nbsp;&nbsp;
{else}
<img src="data/admin/pixel.gif" alt="" width="50" height="1">&nbsp;&nbsp;
{/if}
</td>
<td align="left">
<input name="option_value_{$values[i].variantID}" type=text value="{$values[i].option_value}" class="textp" size="70">
<input type=file class="file" name="add_picture_{$values[i].variantID}" value="" size="26">
</td>
{* END providers-with-pictures-block *}


4.5 строки


<td align="left" width="100%">{$smarty.const.ADMIN_SORT_ORDER}</td></tr>
<tr class="lins">
<td align="left"><input name="add_value" type=text value="" class="textp" size="46"></td>


заменяем на


{* BEGIN providers-with-pictures-block *}
{*
<td align="left" width="100%">{$smarty.const.ADMIN_SORT_ORDER}</td></tr>
<tr class="lins">
<td align="left"><input name="add_value" type=text value="" class="textp" size="46"></td>
*}
<td align="left" width="20%">{$smarty.const.ADMIN_SORT_ORDER}</td></tr>
<tr class="lins">
<td align="left">
<input type=text class="textp" name="add_value" value="" size="70">
<input type=file class="file" name="add_option_picture" value="" size="26">
</td>
{* END providers-with-pictures-block *}



5. Заходим в админке в "характристики товаров". При этом создадутся новые необходимые поля в таблицах.


6. файл providers-with-pictures-block.tpl.html копируем в core/tpl/user/[шаблон]/blocks и
подключаем в админке в "Управление блоками" как нижний или верхний.
Или как боковой, но придется тогда его переверстать на свой вкус.

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


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

#2 etdnepr

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

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 31 July 2015 - 07:07 PM

Здравствуйте, уважаемый badisoft!
В очередной раз обращаюсь к Вам за помощью.
Поставил это дополнение. В админке все ок. Проблема в том, что при нажатии в пользовательской части на картинку любого производителя что-то не срабатывает и выводится только сообщение - Нет товаров.
Переустанавливал раза 3-4. Так что думаю, что вариант кривых рук практически исключен)))
Использовал потом на дефолтные файлы и все получилось. Методом исключения выяснил, что проблема в файле product_functions.php
В него ранее вносились изменения при установке некоторых дополнений и модулей (чпу, бонусы, аналоги, фильтр.....).
Я понимаю, что вряд ли у Вас есть время и желание копаться в этом файле, но может подскажете в какой функции (функциях) поискать неполадку.
Спасибо.
  • 0

#3 badisoft

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

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

Отправлено 01 August 2015 - 11:42 AM

Я понимаю, что вряд ли у Вас есть время и желание копаться в этом файле, но может подскажете в какой функции (функциях) поискать неполадку.

Я же не гадалка. Не знаю.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 etdnepr

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

  • Download User
  • PipPipPip
  • 101 сообщений
Репутация: 0
Начинающий

Отправлено 04 August 2015 - 07:20 PM

Спасибо)) Полежит модуль пока ума наберусь))
  • 0

#5 BestFish

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

  • Assistent vsupport.club
  • PipPipPip
  • 49 сообщений
Репутация: 0
Начинающий

Отправлено 06 November 2015 - 08:50 PM

Здравствуйте, спасибо за Ваш модуль. при нажатии на картинку ссылка создается в виде сайт/index.php?categoryID=1&advanced_search_in_category=1&param_29=940

Подскажите пожалуйста как ее подружить с модулем ЧПУ?

Еще заметил что у меня и также на Вашем сайте при нажатии на картинку производителя в ссылке что открылась выдает значения фильтра все что есть на сайте, вместо то тех что включены у категории, пример https://cpu.badisoft.ru/Wexler/

Буду благодарен за ответ.
  • 0

#6 badisoft

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

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

Отправлено 06 November 2015 - 10:22 PM

Подскажите пожалуйста как ее подружить с модулем ЧПУ?

Не помню. Правда. Судя по тому, что на cpu.badisoft.ru это сделано - как-то я это сделал. Но было давно. Да и ЧПУ там еще первый, простенький.

Еще заметил что у меня и также на Вашем сайте при нажатии на картинку производителя в ссылке что открылась выдает значения фильтра все что есть на сайте, вместо то тех что включены у категории, пример https://cpu.badisoft.ru/Wexler/

Так и должно быть, т.к. выборка по производителю (как и любой другой результат поиска) не находится в какой-то конкретной категории. Это, скорее всего, поправимо, просто мне когда-то не пришло в голову.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)