Dr.host 0 Опубликовано 17 декабря, 2009 Жалоба Share Опубликовано 17 декабря, 2009 Столкнулся с такой проблемой. В ВамШопе есть дополнительные поля (extrafields) Но лажа в том что отображаются они только в product_info, а product_listing игнорируют. Единственное что нарыл по этому поводу в нете:http://vamshop-forum.ru/index.php@action=printpage%3Btopic=317.0.php Дальше попробовал следующее Вставляемый код в includes/modules/product_listing.php беру из includes/modules/product_info.php и меняю $info->assign на $module->assign вот собственно он: $extra_fields_query = vamDBquery(" SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf ON ptf.products_extra_fields_id=pef.products_extra_fields_id WHERE ptf.products_id=". $product->data['products_id'] ." and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$_SESSION['languages_id']."') ORDER BY products_extra_fields_order"); while ($extra_fields = vam_db_fetch_array($extra_fields_query,true)) { if (! $extra_fields['status']) // show only enabled extra field continue; $extra_fields_data[] = array ( 'NAME' => $extra_fields['name'], 'VALUE' => $extra_fields['value'] ); } $module->assign('extra_fields_data', $extra_fields_data);[/code] Вставляю между $module->assign('MANUFACTURER_SORT', $manufacturer_sort); и $module->assign('language', $_SESSION['language']); Ну а в продукт листинг соответственно вставляю метки extrafields. Вот что пишет: [code]11/12/2009 10:12:56 | 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languag' at line 5 | SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value FROM products_extra_fields pef LEFT JOIN products_to_products_extra_fields ptf ON ptf.products_extra_fields_id=pef.products_extra_fields_id WHERE ptf.products_id= and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='1') ORDER BY products_extra_fields_order | /index.php/cat/c162_Seify-ognestoikie.html Методом научного тыка пришел вот к чему: Вставляем код: $extra_fields_query = vamDBquery(" SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf ON ptf.products_extra_fields_id=pef.products_extra_fields_idWHERE ptf.products_id IN (".implode(", ", $c_id).") and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$_SESSION['languages_id']."') ORDER BY products_extra_fields_order"); while ($extra_fields = vam_db_fetch_array($extra_fields_query,true)) { if (! $extra_fields['status']) // show only enabled extra field continue; $extra_fields_data[] = array ( 'NAME' => $extra_fields['name'], 'VALUE' => $extra_fields['value'] ); } $module->assign('extra_fields_data', $extra_fields_data);[/code] Между [code] // no product found $result = false;} И // get default templateif ($category['listing_template'] == '' or $category['listing_template'] == 'default') {[/code] В файл /includes/modules/product_listing.php Получаем ошибку: [code]15/12/2009 17:12:05 | 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.langu' at line 5 | SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value FROM products_extra_fields pef LEFT JOIN products_to_products_extra_fields ptf ON ptf.products_extra_fields_id=pef.products_extra_fields_idWHERE ptf.products_id IN () and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='1') ORDER BY products_extra_fields_order | /index.php/cat/c162_Seify-ognestoikie.html Сносим нафиг строку WHERE ptf.products_id IN (".implode(", ", $c_id).") and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$_SESSION['languages_id']."') И видим что к КАЖДОМУ товару выводится ВЕСЬ список атрибутов из мускуля. Тоесть атрибуты всех товаров. Нарыл ещё кой чего по теме http://www.vamshop-forum.ru/index.php@action=printpage;topic=3728.0.php Народ, помогите, заказчик скоро загрызет. Ссылка на сообщение Поделиться на другие сайты
Dr.host 0 Опубликовано 18 декабря, 2009 Автор Жалоба Share Опубликовано 18 декабря, 2009 Ну что никто не возьмется? Проблема то по ходу только в одной строке Ссылка на сообщение Поделиться на другие сайты
Гость pooh Опубликовано 18 декабря, 2009 Жалоба Share Опубликовано 18 декабря, 2009 Проблема отнюдь не в одной строке. Иначе Вы б ее решили методом научного тыка. 800 руб, 2 дня ICQ 446162209 Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 26 декабря, 2009 Жалоба Share Опубликовано 26 декабря, 2009 Dr.host Если не против, перенёс в эту тему сообщение из - http://oscomm.biz/index.php?showtopic=17452 Есть решение, тему можно закрывать. В файл /includes/modules/product_listing.php Между // no product found $result = false;}[/code] И [code]// get default templateif ($category['listing_template'] == '' or $category['listing_template'] == 'default') { Вписываем: $ids=array(-1); if(is_array($module_content))foreach ($module_content as $k => $v) { $ids[]=$v['PRODUCTS_ID']; }; $ids=join(',', $ids); $extra_fields_query = vamDBquery(" SELECT ptf.products_id, pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value FROM ". TABLE_PRODUCTS_EXTRA_FIELDS ." pef LEFT JOIN ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf ON ptf.products_extra_fields_id=pef.products_extra_fields_id WHERE ptf.products_id in (".$ids.") and ptf.products_extra_fields_value<>'' and (pef.languages_id='0' or pef.languages_id='".$_SESSION['languages_id']."') ORDER BY products_extra_fields_order"); while ($extra_fields = vam_db_fetch_array($extra_fields_query,true)) { if (! $extra_fields['status']) // show only enabled extra field continue; $extra_fields_data[$extra_fields['products_id']][] = array ( 'NAME' => $extra_fields['name'], 'VALUE' => $extra_fields['value'] ); if(is_array($module_content))foreach ($module_content as $k => $v) { if($v['PRODUCTS_ID']==$extra_fields['products_id']){ $module_content[$k]['EXTRA_FIELDS'][]= array ( 'NAME' => $extra_fields['name'], 'VALUE' => $extra_fields['value'] ); } } }[/code] В продукт листинг html вписываем [code] {if $module_data.EXTRA_FIELDS}{foreach name=aussen item=extra_fields from=$module_data.EXTRA_FIELDS} {$extra_fields.NAME}: {$extra_fields.VALUE}<br /> {/foreach}{/if} В нужное нам место. И готово. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения