Спонсор модуля: 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;">
{else}
<img src="data/admin/pixel.gif" alt="" width="50" height="1">
{/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 и
подключаем в админке в "Управление блоками" как нижний или верхний.
Или как боковой, но придется тогда его переверстать на свой вкус.