SOBI2 category chooser выпадающим списком

Зачастую бывает необходимо отредактировать часть функционала какого-нибудь joomla-компонента.
В этой заметке я рассматриваю действия необходимые для того чтобы заменить дерево категорий выпадающим списком в компоненте SOBI2.

Задача:

  • Заменить дерево категорий выпадающим списком.
  • Примечание: мульти-выбор категорий станет невозможным.

План решения:

  1. Открыть файл \components\com_sobi2\includes\inc\custom.functions.php и добавить функцию:
  2. <?php
    function getSobiCatsDrop() {
        $config =& sobi2Config::getInstance();
        $database =& $config->getDb();
        $database->setQuery( "SELECT catid, name FROM `#__sobi2_categories` WHERE published = 1 AND catid > 1" );
        $cats = $database->loadObjectList();
            if ( $database->getErrorNum() ) {
                trigger_error( "DB reports: ".$database->stderr(), E_USER_WARNING );
                }
        $catList = array();
            if( !empty( $cats ) ) {
                foreach( $cats as $category ) {
                    $category->name = $config->jsAddSlashes( $config->getSobiStr( $category->name ) );
                    $category->name = $config->getSobiStr($category->name);
                    $catList[] = sobiHTML::makeOption( $category->catid, $category->name );
                    }
                }
        $catList = sobiHTML::selectList( $catList, "sobi2SlectedCatsID[]", 'size="1" class="inputbox"' , 'value', 'text' );
        $returnVal = "<tr><td>Choose category:</td><td>{$catList}</td>";
    return $returnVal;
    }
    ?>
  3. В файле \components\com_sobi2\includes\inc\config.ini прописываем: edit_callback_func=getSobiCatsDrop

Пруфлинк: http://www.sigsiu.net/forum/index.php/topic,15840.0.html

Комментариев: 14

  • 07.04.2010 ant125:

    Не понятно, куда вставлять строчку во втором пункте?

    Проделал все как написано — изменений никаких

  • 07.04.2010 Кирилл:

    У меня вставлено в блоке [edit_form] файла config.ini:

    [edit_form]
    ...
    save_callback_func	= 0
    edit_callback_func	= getSobiCatsDrop
    edittab_callback_func	= 0
    ...
    

  • 24.05.2010 alex:

    Надо в кавычки заключить, и все заработает

     
    [edit_form]
    ...
    save_callback_func	= "0"
    edit_callback_func	= "getSobiCatsDrop"
    edittab_callback_func	= "0"
    ...
    

  • 22.10.2010 evgen:

    с этим решением есть проблема-мои пользователи по своей простоте душевной лупят записи в первую попавшую категорию, как вставить туда значение «выбрать» чтобы не пускало кнопку добавить?

  • 23.10.2010 Кирилл:

    Не совсем понял в чем суть вопроса (насчет значения «выбрать»), но думаю что добавление некоторого сдерживающего фактора не сделает ваших юзеров более разборчивыми в выборе категории для сабмита итемов :) .

  • 11.05.2011 Сергей:

    Получилось и работает на английском но по русски крокозябла.

    Упирается фильтр по категориям, подкатегориям и товарам.

    Как сделать чтобы в

    категорию: Сельскохозяйственные

    подкатегорию: Зерновые

    подставлялись товары Пшеница, Ячмень и тд а в

    подкатегорию Бобовые

    подставлялись товары Горох, Нут и тд. Спасибо заранее.

  • 19.12.2011 arm:

    после добавления данной функции, пропало сообщение о незаполненных обязательных полях, просто перекидывает на главную страницу и все.

    • 19.12.2011 Кирилл:

      Может просто версия SOBI2 у вас значительно новее той, на которой я это делал?

      • 19.12.2011 arm:

        возможно... но я думаю дело не в версии. после того как в реестре меняю на getSobiCatsDrop пропадают сообщения, ставлю обратно ноль тобишь возвращаю дерево, все как и было с всплывающими окнами о незаполненных полях.

        вот куда меня перекидывает если я не заполняю поля обязательные и нажимаю отправить : на главную и сообщение «Сообщение

        Вы не авторизированы для просмотра данной страницы»

  • 28.01.2012 Игорь:

    Доброго времени суток всем. Вопрос такой. А как реализовать тоже самое в sobipro?

    • 28.01.2012 Кирилл:

      Да хрен знает, не использовал пока еще SobiPro поэтому не разбирался. И теоретически думаю, что соби слишком узко-заточенный вариант со стрынными реализациями :)

      • 28.01.2012 Игорь:

        Под коталог фирм и компаний, SOBIPRO классный компонент. Только вот реализовать выбор категорий, при добавлении записи, выподающим списком. Вообще бы цены небыло.

  • 14.07.2012 Серафима:

    По пункту 1.) Вставляем код, приведенный автором между тегами php.

    2.)Заходим в настройки SOBI — редактор реестра и в секции — Section: [edit_form]

    вместо 0 написать — getSobiCatsDrop

    Проверено, все работает.


Добавление комментария:

 css.php