Помогите сделать запрос

Тема в разделе "ABO CMS", создана пользователем baldins, 19 апр 2010.

Статус темы:
Закрыта.
  1. baldins

    baldins Создатель

    Регистр.:
    7 сен 2009
    Сообщения:
    26
    Симпатии:
    0
    Помогите, пожалуйста, сделать запрос к базе. Версия 5,1 1)Нужно сделать возможность пользователю выбирать сколько выводить ему товаров на странице 10,20,30 или все и как это реализовать в шаблоне?
    Я думаю что в прототипе нужна функция которая будет это делать, а как потом эту функцию приделать к шаблону не разберусь.
    2)как сделать чтобы при нажатии в левом столбце на одну категорию выводились(в центре) все товары этой категории, а подкатегории выводились ниже категорий,т.е.
    1-категория выбрана
    2
    3
    4
    ---
    1,1
    1,2
    1,3
    ...
     
  2. picasik

    picasik Постоялец

    Регистр.:
    13 ноя 2006
    Сообщения:
    81
    Симпатии:
    21
    изменениями только шаблонов здесь не обойтись. Нужно добавить в шаблон ссылки на кол-во товаров для показа (например, /catalog/action=assortment&id=ID&rows=10&start=1, где ID - ID категории)
    дальше в скрипте каталога ищешь case 'assortment':
    в GLOBAL добаляй $request_rows.
    и измени строчку $max_rows = $request_rows ? $request_rows : ($max_rows ? $max_rows : $CONFIG['catalog_max_rows']);
    дальше в $navstr = $main->_show_nav_string
    после 'nav', заменяеш на 'action='.$action.'&id='.$request_id.'&rows='.$max_rows,
    может что-то упустил... проверь и отпишись
     
  3. baldins

    baldins Создатель

    Регистр.:
    7 сен 2009
    Сообщения:
    26
    Симпатии:
    0
    Спасибо, что ответил! Когда заменяю на 'action='.$action.'&id='.$request_id.'&rows='.$max _rows, сайт вообще не открывается, даже главная,но при стандартной записи все работает. А как сделать чтобы весь ассортимент выводился при нажатии на категорию, т.е. без подкатегорий? И как сделать по 1му вопросу?
     
  4. picasik

    picasik Постоялец

    Регистр.:
    13 ноя 2006
    Сообщения:
    81
    Симпатии:
    21
    вместо:
    $main->_show_nav_string($this->table_prefix.'_catalog_products',
    ' AND active = 1 AND category_id='.$request_id,
    'nav',
    'action='.$action.'&id='.$request_id,
    $request_start,
    $max_rows,
    '',
    '',
    0,
    0);
    нужно так:
    $main->_show_nav_string($this->table_prefix.'_catalog_products',
    ' AND active = 1 AND category_id='.$request_id,
    'nav',
    'action='.$action.'&id='.$request_id.'&rows='.$max _rows,
    $request_start,
    $max_rows,
    '',
    '',
    0,
    0);

    Добавлено через 20 минут
    чтобы показать все товары в категории включая подкатегории нужно в case 'assortment':
    после
    $categs = $this->getSubCategsForRootCateg($request_id);
    добавляеш
    $in = $request_id;
    if(is_array($categs)) {
    foreach($categs as $categ){
    $in .= ",".$categ['ctg_id'];
    }
    }
    заменить
    $prods = $this->getProdsOfSubCategs($request_id, $max_rows, $request_start);
    на
    $prods = $this->getProdsOfSubCategs($in, $max_rows, $request_start);

    в функции getProdsOfSubCategs изменяеш запрос
    заменить нужно
    category_id = '.$prp.'
    на
    category_id in ('.$prp.')

    возвращаешся в case 'assortment':
    и изменяеш $navstr = $main->_show_nav_string.......
    на
    $navstr = $main->_show_nav_string($this->table_prefix.'_catalog_products',
    " AND active = 1 AND category_id in (".$in.")",
    'nav',
    'action='.$action.'&id='.$request_id.'&rows='.$max_rows,
    $request_start,
    $max_rows,
    '',
    '',
    0,
    0);

    должно работать
     
  5. baldins

    baldins Создатель

    Регистр.:
    7 сен 2009
    Сообщения:
    26
    Симпатии:
    0
    Не работает(((
    Причем когда в
    $prods = $this->getProdsOfSubCategs($in, $max_rows, $request_start, $categ[0]['title']);
    убираю $categ[0]['title'], то каталог вообще не отображается(((
     
  6. picasik

    picasik Постоялец

    Регистр.:
    13 ноя 2006
    Сообщения:
    81
    Симпатии:
    21
    ну если ты уже изменял функцию getProdsOfSubCategs тогда просто адаптируй текст с моего поста под свою функци. Я так понимаю, ты добавил в функцию еще одну обязательную входную переменную и конечно при ее отсутствии у тебя будет белый экран. В настройках або поставь, чтобы выводились ошибки и предупреждения на экран.
    Перед тем, как запостить ответ я проверил у себя эти изменения. Все работает. Перепроверь, что менял и где что добавлял.
     
Статус темы:
Закрыта.