Регистрация
Вход через соцсети
Восстановление пароля

Реализация левого меню в каталоге продукции

Новый топик
10.01.2012, 17:53
Ответить | Цитировать
Кербицкий Константин Юрьевич
Кербицкий Константин Юрьевич

Зарегистрирован:
2011-11-23
Сообщений: 19

Интересует вопрос как организовать левое меню для каталога продукции (http://vv.start2play.ru/catalog/). Сейчас там реализовано "по стандарту", т.е. по принципу многоуровнего меню (http://netcat.ru/support/forum/razrabotka-sayta/topic_11534.html), где каждый подраздел создаётся в ручную в панели администрирования.

Неудобства этого метода в следующем:
- Если в одном из подразделов кончится товар, то подраздел всё равно будет отображаться. Пользователь кликнет на ссылку подраздела, а там ничего нет. Поэтому при отсутствии в нём товара, нужно его как-то скрывать.
- Потом, не получается сделать просмотр всех товаров в выбранной категории. Например, по клику на ссылку "Вино" (http://vv.start2play.ru/catalog/wine/) должны отобразиться все товары которые лежат в подкатегориях "Красное сухое" и "Красное полусладкое".

Вот эти недостатки меня и смущают. Возможно есть другие способы решения проблемы?

ZENKOT
10.01.2012, 19:30
Ответить | Цитировать
mxxn

Зарегистрирован:
2011-12-16
Сообщений: 8

- Когда товар кончается, просто выключать соответствующий раздел.

- В категорию Вино можно добавить компонент с товаром (я бы сделал специальный шаблон компонента для вывода в категории). В этом шаблоне в системных настройках можно прописать вывод товаров из всех подразделов.

Что-то типа того:

Код:
$ignore_sub = $ignore_cc = 1;
$query_where="sub.Parent_Sub_ID=".$current_sub[Subdivision_ID];
10.01.2012, 19:41
Ответить | Цитировать
Гость
Гость

а как реализовали добавление товара в корзину без перезагрузки страницы
11.01.2012, 10:14
Ответить | Цитировать
Кербицкий Константин Юрьевич
Кербицкий Константин Юрьевич

Зарегистрирован:
2011-11-23
Сообщений: 19

Цитата:
а как реализовали добавление товара в корзину без перезагрузки страницы


html:
Код:
    // Добавление в корзину
\$('td.add-trash input').click(function(){

if( \$(this).parents('td.add-trash').hasClass('added') )
return false;

var button = \$(this);
var product = button.parents('div.product');
var id = product.attr('db-id');
var name = product.find('div.info div.name').text();
var price = product.find('input[name=price]').val();
var price_one = product.find('input[name=price_one]').val();
var class_id = product.find('input[name=class_id]').val();
var amount = product.find('input[class=amount]').val();

var temp = '<div class=\'item\'>'
+' <div class=\'delete\'><a></a></div>'
+' <div class=\'reset\'><a href=\'/catalog/catalog_'+ id +'.html\'></a></div>'
+' <div class=\'name\'><a href=\'/catalog/catalog_'+ id +'.html\'>'+ name +'</a></div>'
+' <div class=\'info\'><span class=\'amount\'>'+ amount +'</span> коробок | <span class=\'price\'>'+ price +'</span> Р</div>'
+' <input type=\'hidden\' name=\'id[]\' value=\''+ id +'\'>'
+' <input type=\'hidden\' name=\'amount[]\' value=\''+ amount +'\'>'
+' <input type=\'hidden\' name=\'price[]\' value=\''+ price +'\'>'
+' <input type=\'hidden\' name=\'price_one[]\' value=\''+ price_one +'\'>'
+' <input type=\'hidden\' name=\'class_id[]\' value=\''+ class_id +'\'>'
+' <input type=\'hidden\' name=\'name[]\' value=\''+ name +'\'>'
+'</div>';

\$.ajax({
type: 'POST',
url: '". $SUB_FOLDER . $HTTP_ROOT_PATH ."modules/default/post_cart.php',
data: ({ 'cart_mode' : 'add', 'class_id' : class_id, 'product_id' : id, 'amount' : amount, 'price' : price }),
success: function(data){

if( \$('#trash div.products div.indent div.item').length == 0 )
\$('#trash div.products div.indent').text('');

var ars = data.split( split_str );
\$('#trash div.header strong.info-amount').text( ars[0] );
\$('#trash div.header strong.info-price').text( ars[1] );
\$('#trash div.products div.indent').append( temp );
button.parents('td.add-trash').addClass('added');

}
});

});


А со стороны сервера сделал файл: /netcat/modules/default/post_cart.php
Код:
error_reporting(E_ALL^E_NOTICE);

// проверяем все ли есть необходимое
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && $_POST)
{
$NETCAT_FOLDER = join( strstr(__FILE__, "/") ? "/" : "\\", array_slice( preg_split("/[\/\\\]+/", __FILE__), 0, -4 ) ).( strstr(__FILE__, "/") ? "/" : "\\" );
include_once ($NETCAT_FOLDER."vars.inc.php");
require_once ($INCLUDE_FOLDER."index.php");
header('Content-Type: text/html; charset='. $NC_CHARSET );

$client_url = urldecode("http://".$HTTP_HOST.$REQUEST_URI);
$parsed_url = parse_url($client_url);
$current_catalogue = $nc_core->catalogue->get_by_host_name($parsed_url['host']);
$catalogue = $current_catalogue["Catalogue_ID"];

if (!$catalogue) $catalogue = 1; // first site

//LoadModuleEnv();
$MODULE_VARS = $nc_core->modules->get_module_vars();




$_POST['cart'][ (int)$_POST['class_id'] ][ (int)$_POST['product_id'] ] = (int)$_POST['amount'];

// Тут вычесляем новую сумму покупки // preg_replace("|[^0-9\.?]|i", '', $Netshop_TotalPrice)
$total_price = $shop->FormatCurrency($_POST['price'] + $shop->CartSum(), $Currency, true);

// Меняем данные в корзине. Process cart changes.
if($_POST['cart'])
{
$shop->CartPut($_POST['cart'], $_POST['cart_mode']);

// посылаем ответ скрипта
exit(
implode(
$SPLIT_STR,
array(++$Netshop_ItemCount, $total_price)
)
);
}

unset($_POST);

}
else
exit('No access');


ZENKOT
11.01.2012, 10:30
Ответить | Цитировать
Кербицкий Константин Юрьевич
Кербицкий Константин Юрьевич

Зарегистрирован:
2011-11-23
Сообщений: 19

Цитата:
- Когда товар кончается, просто выключать соответствующий раздел.

Имеете ввиду в ручную выключать активность раздела, через чекбокс? Вот именно это я хочу обойти, чтобы выключался автоматом..

Цитата:
- В категорию Вино можно добавить компонент с товаром (я бы сделал специальный шаблон компонента для вывода в категории). В этом шаблоне в системных настройках можно прописать вывод товаров из всех подразделов.
Не совсем понятно, надо попробовать покрутить это дело.

ZENKOT
11.01.2012, 10:54
Ответить | Цитировать
mxxn

Зарегистрирован:
2011-12-16
Сообщений: 8

По первому:

Нет, просто в случае если товара не осталось, делаете запрос к базе данных и в таблице Subdivision у соответствующего раздела ставите Checked в 0.
20.01.2012, 15:58
Ответить | Цитировать
Кербицкий Константин Юрьевич
Кербицкий Константин Юрьевич

Зарегистрирован:
2011-11-23
Сообщений: 19

Благодарю, ваши советы помогли. И ещё помогла разобраться с этим вот эта тема.

ZENKOT
198 196 2012-01-20 15:58:58 11810
Описание проекта