Категории |
Как сделать "Доп. поля для товаров" уникальными для разных товарных групп ?Здравствуйте. для доп полей вобщет, кроме твоего описания функционала, надо расширить и типы полей, и сделать возможность сортировки по ним. ну и само собой, возможность нормального экспорта импорта:) понятно. ждем новых версий скрипта возможность нормального экспорта импорта:) а чем текущей метод не устраивает? Написал уже сам. Написал уже сам. И ак вы это реализовали? может поделитесь - выложу для всех. возможность нормального экспорта импорта:) а чем текущей метод не устраивает? ну при обновлени ассортимента не плохо бы сделать кнопку, которая выключает показ всех товаров. а в новом прайсе я сразу заливаю/обновляю товары с меткой активные а если по поводу мной вышеописанного, я имел ввиду если реализовать разные типы доп полей и разные категории, надо под новые доработки и экспорт импорт полей дорабатывать ЗЫ: по поводу разных доп полей в разных категорях это можно легко зделать легко в габлонах админки. добавить руками в шаблон добавления товаров, пару вкладок на javascript с разными категориями и готовыми доп полями Написал уже сам. И ак вы это реализовали? может поделитесь - выложу для всех. собственно сделал только в каждом товаре заполнять только то что относится к конкретной группе. Либо, если уже делать один список, чтоб была возможность различать Название доп.поля и То что отображается, тогда я б сделал поля с названиями типа "Ноутбуки: Объем памяти" и "USB флешка: объем памяти" а отображаемое имя у обоих этих полей было бы "Объем памяти" в таблице os_products_extra_fields создал новое поле products_extra_fields_name_internal потом поменял файлы немножко чтоб это поле выводилось в админке на закладке доп поля admin/product_extra_fields.php (жирным шрифтом отмечен добавленный код) require('includes/application_top.php'); $action = (isset($_GET) ? $_GET : ''); if (isset($_POST)) $action='remove'; if (os_not_null($action)) { switch ($action) { case 'setflag': $sql_data_array = array('products_extra_fields_status' => os_db_prepare_input($_GET)); os_db_perform(TABLE_PRODUCTS_EXTRA_FIELDS, $sql_data_array, 'update', 'products_extra_fields_id=' . $_GET); os_redirect(os_href_link(FILENAME_PRODUCTS_EXTRA_FIELDS)); break; /* */ case 'add': $sql_data_array = array('products_extra_fields_name_internal' => os_db_prepare_input($_POST), 'products_extra_fields_name' => os_db_prepare_input($_POST), 'languages_id' => os_db_prepare_input ($_POST), 'products_extra_fields_order' => os_db_prepare_input($_POST)); os_db_perform(TABLE_PRODUCTS_EXTRA_FIELDS, $sql_data_array, 'insert'); os_redirect(os_href_link(FILENAME_PRODUCTS_EXTRA_FIELDS)); break; #дальше все ок case 'update': foreach ($_POST as $key=>$val) { $sql_data_array = array('products_extra_fields_name_internal' => os_db_prepare_input($val), 'products_extra_fields_name' => os_db_prepare_input($val), 'languages_id' => os_db_prepare_input($val), 'products_extra_fields_order' => os_db_prepare_input($val)); os_db_perform(TABLE_PRODUCTS_EXTRA_FIELDS, $sql_data_array, 'update', 'products_extra_fields_id=' . $key); } os_redirect(os_href_link(FILENAME_PRODUCTS_EXTRA_FIELDS)); break; case 'remove': if ($_POST) { foreach ($_POST as $key=>$val) { os_db_query("DELETE FROM " . TABLE_PRODUCTS_EXTRA_FIELDS . " WHERE products_extra_fields_id=" . os_db_input($key)); os_db_query("DELETE FROM " . TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS . " WHERE products_extra_fields_id=" . os_db_input($key)); } os_redirect(os_href_link(FILENAME_PRODUCTS_EXTRA_FIELDS)); } break; } } $languages=os_get_languages(); $values=array ('id' =>'0', 'text' => TEXT_ALL_LANGUAGES); for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $values=array ('id' =>$languages, 'text' =>$languages); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html <?php echo HTML_PARAMS; ?>> <head> <?php echo ADMIN_FAVICON;?> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $_SESSION; ?>"> <title><?php echo TITLES; ?></title> <?php os_styles("style"); os_styles("menu");?> </head> <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF"> <?php require(DIR_FS_CATALOG.'admin/themes/'.ADMIN_TEMPLATE.'/header.php'); ?> <table border="0" width="100%" cellspacing="2" cellpadding="2"> <tr> <td width="100%" valign="top"> <table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td width="100%"> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="main"> <?php os_header('portfolio_package.gif',HEADING_TITLE); ?> </td> </tr> </table> </td> </tr> <tr> <td width="100%"> <?php echo "<b>".SUBHEADING_TITLE."</b>"; ?> <br /> <?php echo os_draw_form("add_field", FILENAME_PRODUCTS_EXTRA_FIELDS, 'action=add', 'post'); ?> <table border="0" width="400" cellspacing="0" cellpadding="2"> <tr class="dataTableHeadingRow"> <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_FIELDS_INTERNAL; ?></td> <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_FIELDS; ?></td> <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_ORDER; ?></td> <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_LANGUAGE; ?></td> </tr> <tr> <td class="dataTableContent"> <?php echo os_draw_input_field('field', $field, 'size=30', false, 'text', true);?> </td> <td class="dataTableContent"> <?php echo os_draw_input_field('field', $field, 'size=30', false, 'text', true);?> </td> <td class="dataTableContent" align="center"> <?php echo os_draw_input_field('field', $field, 'size=8', false, 'text', true);?> </td> <td class="dataTableContent" align="center"> <?php echo os_draw_pull_down_menu('field', $values, '0', '');?> </td> <td align="right"> <?php echo '<input type="submit" class="button" value="' . BUTTON_INSERT . '"/>'; ?> </td> </tr> </form> </table><br> <div style="width: 90%; border-top: 1px dashed #4378a1;" /> <br> <?php echo os_draw_form('extra_fields', FILENAME_PRODUCTS_EXTRA_FIELDS,'action=update','post'); ?> <?php echo $action_message; ?> <table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr class="dataTableHeadingRow"> <td class="dataTableHeadingContent" width="20"> </td> <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_FIELDS_INTERNAL; ?></td> <td class="dataTableHeadingContent"><?php echo TABLE_HEADING_FIELDS; ?></td> <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_ORDER; ?></td> <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_LANGUAGE; ?></td> <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_STATUS; ?></td> </tr> <?php $products_extra_fields_query = os_db_query("SELECT * FROM " . TABLE_PRODUCTS_EXTRA_FIELDS . " ORDER BY products_extra_fields_order"); while ($extra_fields = os_db_fetch_array($products_extra_fields_query)) { ?> <tr> <td width="20"> <?php echo os_draw_checkbox_field('mark.']', 1) ?> </td> <td class="dataTableContent"> <?php echo os_draw_input_field('field.']', $extra_fields, 'size=30', false, 'text', true);?> </td> <td class="dataTableContent"> <?php echo os_draw_input_field('field.']', $extra_fields, 'size=30', false, 'text', true);?> </td> <td class="dataTableContent" align="center"> <?php echo os_draw_input_field('field.']', $extra_fields, 'size=8', false, 'text', true);?> </td> <td class="dataTableContent" align="center"> <?php echo os_draw_pull_down_menu('field.']', $values, $extra_fields, ''); ?> </td> <td class="dataTableContent" align="center"> <?php if ($extra_fields == '1') { echo os_image(DIR_WS_IMAGES . 'icon_status_green.gif', IMAGE_ICON_STATUS_GREEN, 10, 10) . ' <a href="' . os_href_link(FILENAME_PRODUCTS_EXTRA_FIELDS, 'action=setflag&flag=0&id=' . $extra_fields, 'NONSSL') . '">' . os_image(DIR_WS_IMAGES . 'icon_status_red_light.gif', IMAGE_ICON_STATUS_RED_LIGHT, 10, 10) . '</a>'; } else { echo '<a href="' . os_href_link(FILENAME_PRODUCTS_EXTRA_FIELDS, 'action=setflag&flag=1&id=' . $extra_fields, 'NONSSL') . '">' . os_image(DIR_WS_IMAGES . 'icon_status_green_light.gif', IMAGE_ICON_STATUS_GREEN_LIGHT, 10, 10) . '</a> ' . os_image(DIR_WS_IMAGES . 'icon_status_red.gif', IMAGE_ICON_STATUS_RED, 10, 10); } ?> </td> </tr> <?php } ?> <tr> <td colspan="4"> <?php echo '<input type="submit" class="button" value="' . BUTTON_UPDATE . '"/>'; ?> <?php echo '<input type="submit" class="button" value="' . BUTTON_DELETE . '" name="remove" />'; ?> </td> </tr> </form> </table> </td> </tr> </table> </td> </tr> </table> <?php require(DIR_FS_CATALOG.'admin/themes/'.ADMIN_TEMPLATE. '/footer.php'); ?> </body> </html> <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> файл admin/langs/ru/product_extra_fields.php дополнил строкой define('TABLE_HEADING_FIELDS_INTERNAL', 'Название поля (внутреннее)'); кажется все... вроде редактировал еще categories.js, но сейчас не помню зачем. если вспомню - напишу по-правильному надо конечно еще и все остальные языки дополнить строкой с названием этого поля. ок. спасибо за код) Пожалуйста :) |
|