Почеркиваю - ВАРИАНТОВ! Т.е. характеристик товара в виде произвольной строки этот модуль не касается.
Очень удобно в комплекте иметь установленный модуль "Характеристики по категориям" (он есть в даунлоаде сайта), чтобы в выпадающем селекте были только актуальные для этой категории характеристики. Но работает и без него.
спонсор модуля и автор идеи ssergioss25
optionset.JPG 118.18К 268 Количество загрузок:
1. копируем в data/admin/ файлы
chosen.css
chosen-sprite.png
chosen.jquery.min.js
2. в файле core/includes/admin/sub/catalog_products_categories.php
2.1 строку
$data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order" ) );
заменяем на
$data = ScanPostVariableWithId( array( "price", "enable", "left", "sort_order", "select" ) );
2.2 перед второй (второй! их там две!) строкой
if ( isset($val["price"]) )
вставляем
db_query("DELETE FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=$key");
db_query("UPDATE ".PRODUCT_OPTIONS_VALUES_TABLE." SET option_type=0 WHERE productID=$key");
if ( isset($val["select"]) )
foreach($val['select'] as $opt_var)
{
list($optionID,$variantID) = explode(":",$opt_var);
db_query("INSERT ".PRODUCTS_OPTIONS_SET_TABLE." SET productID=$key, optionID=".(int)$optionID.", variantID=".(int)$variantID);
db_query("REPLACE ".PRODUCT_OPTIONS_VALUES_TABLE." SET productID=$key, optionID=".(int)$optionID.", option_type=1");
}
2.3 перед строкой
$smarty->assign("products", $products );
вставляем
if (isset($_GET['categoryID']))
{
$row = db_fetch_assoc(db_query("SELECT allowed_parameters FROM ".CATEGORIES_TABLE." WHERE categoryID=".$_GET['categoryID']));
$where = $row['allowed_parameters']?" WHERE optionID IN (".$row['allowed_parameters'].")":"";
$data = db_query("SELECT optionID,name FROM ".PRODUCT_OPTIONS_TABLE.$where." ORDER BY sort_order,HEX(name)");
while ($row = db_fetch_assoc($data))
{
$data1 = db_query("SELECT variantID,option_value FROM ".PRODUCTS_OPTIONS_VALUES_VARIANTS_TABLE." WHERE optionID=".$row['optionID']." ORDER BY sort_order,HEX(option_value)");
$vars = array();
while ($row1 = db_fetch_assoc($data1)) $vars[] = $row1;
$row['variants'] = $vars;
$options[] = $row;
}
foreach ($products as $key => $product)
{
$products[$key]['select'] = $options;
foreach ($product['product_extra'] as $evar)
foreach ($evar['values_to_select'] as $vvar)
foreach ($products[$key]['select'] as $okey => $ovar)
foreach ($ovar['variants'] as $vrkey => $vrvar)
if ($vvar['variantID'] == $vrvar['variantID'])
$products[$key]['select'][$okey]['variants'][$vrkey]['set'] = 'selected';
}
}
3. в файле core/tpl/admin/catalog_products_categories.tpl.html
3.1 перед строкой
<td align="right"><a href='{$urlToSort}&sort=product_code&sort_dir=ASC' title="{$smarty.const.ADMIN_ADMIN_MENUNEW11}" class="liv">{$smarty.const.ADMIN_PRODUCT_CODE}</a></td>
вставляем
<td align="left"><input type="checkbox" id="chkbox_multiselect_all" onclick="{literal}if (document.getElementById('chkbox_multiselect_all').checked){$('div[id^=\'option_multiselect_\']').attr('style','display:block');$('input[id^=\'chkbox_multiselect_\']').attr({checked:true});}else{$('div[id^=\'option_multiselect_\']').attr('style','display:none');$('input[id^=\'chkbox_multiselect_\']').attr({checked:false});}{/literal}"></td>
<td align="left">Характеристики</td>
3.2 перед строкой
<td align="right" {if !$products[i].enabled}class="toph3 gryy"{else}class="toph3{if !$products[i].product_code} bas{/if}"{/if}>{if $products[i].product_code}{$products[i].product_code}{else}{$smarty.const.ADMIN_NOCODE_PROD}{/if}</td>
вставляем
<td align="left">
<input type="checkbox" id="chkbox_multiselect_{$products[i].productID}" onclick="if (document.getElementById('chkbox_multiselect_{$products[i].productID}').checked) $('div[id=\'option_multiselect_{$products[i].productID}\']').attr('style','display:block'); else $('div[id=\'option_multiselect_{$products[i].productID}\']').attr('style','display:none');">
</td>
<td align="left">
<div id="option_multiselect_{$products[i].productID}" style="display:none">
<select data-placeholder="Выберите характеристики товара" style="width:350px;" class="chzn-select" multiple tabindex="6" name="select_{$products[i].productID}[]">
{section name=o loop=$products[i].select}
<optgroup label="{$products[i].select[o].name}">
{section name=v loop=$products[i].select[o].variants}
<option value="{$products[i].select[o].optionID}:{$products[i].select[o].variants[v].variantID}" {$products[i].select[o].variants[v].set}>{$products[i].select[o].variants[v].option_value}</option>
{/section}
</optgroup>
{/section}
</select>
</div>
</td>
3.3 перед строкой
{if $navigatorHtml}
вставляем
<script>!window.jQuery && document.write('<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"><\/script>');</script>
<script type="text/javascript" src="data/admin/chosen.jquery.min.js"></script>
<link rel="stylesheet" href="data/admin/chosen.css" type="text/css">
<script type="text/javascript">$(".chzn-select").chosen();</script>