Новости Joomla

Joomla 6: Автоматические обновления ядра в Joomla

Joomla 6: Автоматические обновления ядра в Joomla

👩‍💻 Joomla 6: Автоматические обновления ядра в Joomla. В октябрьском номере официального журнала Joomla - Joomla Community Magazine вышла статья David Jardin, где рассказывается о внедрении функционала автоматического обновления ядра Joomla.❓Почему сейчас? Joomla же жила как-то 20 лет без автоматических обновлений?Это оказалась самая востребованная за последнее время от пользователей Joomla функция. Но, основная причина внедрения - проблемы безопасности. Всякий раз, когда в новой версии Joomla устраняется уязвимость, злоумышленники начинают анализировать код, чтобы выяснить, какая именно уязвимость была исправлена. И как только они это выясняют - начинается разработка автоматизированных скриптов для взлома как можно большего количества сайтов. Затем доступы к автоматически взломанным сайтам продаются в профильных чатах и ресурсах "пачками" по несколько сотен тысяч или миллионов сайтов. Ваш сайт могли взломать несколько лет назад, но воспользоваться уязвимостью могут не сразу, а тогда, когда у злоумышленников возникнет необходимость. И только после этого вы может быть узнаете об этом.Анализ патча, понимание проблемы и разработка скрипта требуют времени. И если владелец сайта не обновит его до истечения этого срока, сайт может быть взломан. А хакеры действуют быстро! Для критических, легко эксплуатируемых уязвимостей речь идёт о временном окне в 10–12 часов — и этого времени явно недостаточно, чтобы все успели обновить свои сайты.Здесь выходят на первый план автоматизированные обновления: проект Joomla теперь может активно устанавливать обновления (и, следовательно, исправления безопасности) на сайты, чтобы гарантировать, что сайты действительно обновляются вовремя.🕘 От первых идей до реализации прошло 5 лет. И здесь можно вспомнить, как в Joomla 5.1 внедрили TUF - The Update Framework, позволяющий устанавливать защищённое соединение между сайтом и сервером обновлений и исключает возможность supply chain attack (атаки на цепочку поставок).Об особенностях реализации и требованиях к сайту читаем подробнее в статье на JCM.@joomlafeed#joomla #secutiry #jcm

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах. 20 лет — это много. Давайте же узнаем о коллегах 🎁 Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.⚙️ С кем интервью: ✔️ Владимир Елисеев 🇷🇺✔️ Дмитрий Рекун 🇱🇻✔️ Дмитрий Цымбал 🇷🇺✔️ Евгений Сивоконь 🇷🇺 ✔️ Сергей Толкачёв 🇷🇺✔️ Dénes Székely 🇷🇴✔️ Jan Pavelka 🇨🇿✔️ Miljan Vujosevic 🇲🇪✔️ Sergio Iglesias 🇪🇸✔️ Sigrid Gramlinger 🇦🇹✔️ Pisan Chueatchatchai 🇹🇭‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡👉 Читать далее

0 Пользователей и 1 Гость просматривают эту тему.
  • 71 Ответов
  • 21793 Просмотров
*

denis174

  • Захожу иногда
  • 256
  • 1 / 0
Re: Выпадающий список вместо дерева
« Ответ #30 : 09.01.2011, 09:11:30 »
В файле \components\com_sobi2\includes\inc\config.ini прописываем: edit_callback_func="getSobiCatsDrop"
когда ставил через реестр SOBI2 было так
save_callback_func   = 0
edit_callback_func   = getSobiCatsDrop
edittab_callback_func   = 0
а надо так
save_callback_func   = "0"
edit_callback_func   = "getSobiCatsDrop"
edittab_callback_func   = "0"
это при условии что все другие пункты ты выполнил.
*

DimsOn

  • Новичок
  • 9
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #31 : 09.01.2011, 10:50:10 »
Выполнил, все как и описывается. Но категории так и не изменились(...
*

Djangar

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
  • all possible
Re: Выпадающий список вместо дерева
« Ответ #32 : 09.01.2011, 16:51:53 »
вставил функцию, указал ее в реестре, появился выпадающий список... НО! все категории (и дочерние и родительские) у меня смешались!
Иерархия не соблюдается... как реализовать каскад? !
*

DimsOn

  • Новичок
  • 9
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #33 : 09.01.2011, 17:06:38 »
вставил функцию, указал ее в реестре, появился выпадающий список... НО! все категории (и дочерние и родительские) у меня смешались!
Иерархия не соблюдается... как реализовать каскад? !

Распиши подробно как делал!
Заранее благодарен...
*

Djangar

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
  • all possible
Re: Выпадающий список вместо дерева
« Ответ #34 : 09.01.2011, 17:25:39 »
Распиши подробно как делал!
Заранее благодарен...

Все как описано выше...
1. Добавляем пользовательскую функцию в конец файла custom.functions.php, который лежит по адресу:
ИмяСайта\components\com_sobi2\includes\inc\

вот листинг функции
Код
<?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;
}
?>

2. В файле реестра СОБИ2 config.ini, который лежит по тому  же адресу, находим строку
edit_callback_func = 0
в разделе [edit_form] и заменяем значение переменной на
edit_callback_func = "getSobiCatsDrop"
т.е. указываем имя нашей пользовательской функции, которую мы добавили в файл custom.functions.php

После этого после Дерева каталогов (которое надо затем скрыть) появляется выпадающий список с надписью "Select category"...

Проблема в том, что у меня 4 уровня вложения категорий и все они перемешиваются и ложатся в список как равноценные... т.е. нарушается вся выработанная иерархия категорий...

А хотелось бы, чтобы было так, как это реализовано в Расширенном поиске, где подкатегории появляются по мере выбора родительской категории... т.е. надо сделать каскад (как я понимаю)..

Помогите кто знает!...
*

Djangar

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
  • all possible
Re: Выпадающий список вместо дерева
« Ответ #35 : 15.01.2011, 16:04:53 »
как я понимаю, а, надеюсь, я понимаю правильно, надо сделать модернизировать функцию getSobiCatsDrop(), что лежит в файле custom.functions.php путем заимствования схемы каскадирования из файла axsearch.class.php, где хранятся стандартные СОБИвские функции поиска, в том числе, функция построения каскада выпадающих списков.

Для этого почитаем function axSearchCatChooser( $selectedCats, $cid ) в файле axsearch.class.php на 743 строке...
Код
function axSearchCatChooser( $selectedCats, $cid ) { 
//для работы функции требуется передать 2 параметра - Выбранная категория и НепонялЧто

$config =& sobi2Config::getInstance();
if( count( $selectedCats ) ) {
                      //проверяем, выбрана ли ваще какая-нибудь категория, если да, то исполняем...
    $dropsy = '<div id="SobiSearchForm2dropsy" style="margin-left: 0px;">'; //вывод на экран DIV'а
$catsChildsJs = null; // начальное объявление переменных с их исходными значениями,
$count = 0; //которые нам послужат счетчиками и памятками
$lastBox = 0; //последнего выбранного уровня вложенности
foreach( $selectedCats as $cid ) { //исполняем сплошной перебор категорий
$cats = $config->getCategories( $cid ); //по одной и по-очереди
if( is_array( $cats ) && !empty( $cats ) ) { //если категории ваще есть!, то пишем их
$dropsy .= "\n\n\n\n<div id='sdrops_{$count}'>"; //в DIV, т.е. выводим на экран
$Select = array(); //заведем пустой массив для хранения выбранных категорий
$Select[] = sobiHTML::makeOption( 0, _SOBI2_SEARCH_CATBOX_SELECT); //создаем и выводим категории по предустановленному запросу, которые хранит в константе _SOBI2_SEARCH_CATBOX_SELECT
$js = "addSobiSearchFormCatBox(this.options[this.selectedIndex].value,{$count});";
                                                         //добавляем внизу дополнительный Выпадающий список
foreach ($cats as $cat) { //снова перебираем список сплошняком
$cat->name = str_replace("\\","",$cat->name); //реорганизуем список согласно связи мать-дочка
$cat->name = str_replace("\\\\","",$cat->name);
$cat->name = $config->getSobiStr( $cat->name );
$Select[] = sobiHTML::makeOption( $cat->catid, $cat->name); //снова выводим список дочек
$c = $config->catHasChild($cat->catid)? 1 : 0; //проверяем есть ли у дочки свои дочки
$catsChildsJs .= "\n SobiSearchFormCatsChilds[{$cat->catid}] = '{$c}';"; //если есть - выводим
}
$selected = key_exists( $count+1, $selectedCats )? $selectedCats[$count+1] : $cid;
                                                        //запоминаем выбранную категорию
$dropsy .= sobiHTML::selectList( $Select, "SobiCatSelected_{$count}", 'id="SobiCatSelected_'.$count.'" size="1" class="inputbox catChooseBox" onchange="'.$js.'"', 'value', 'text', $selected);
                                                        складываем все куски в одну кучу... гайки к болтам
$dropsy .= "</div>\n\n\n\n";// не забываем, что DIV - парныйтег, который надо бы и закрывать
$lastBox = $count; //запомнили последний обработанный уровень вложенности
}
$count++; //переходим на следующий уровень вложенности мать-дочка
}
//вот и все нахер пересмотрели все категории и определили ху из ху... бабка-мать-дочка...
// выводим на экран в Java-скрипте все наше бабское семейство...
$dropsy .= "\n\n<script type=\"text/javascript\">\n\n {$catsChildsJs}\n\n SobiSearchFormComboBxCounter = {$lastBox}; \n\n</script>";
$dropsy .= "</div>";
return $dropsy; //возвращаем в родительскую функцию значение выбранной категории
}
else {
return null; //а на нет и суда нет...
}
}

Кажется мне что тута хранится основа схемы каскадирования...
Как мог расписал - не судите строго...
*

Djangar

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
  • all possible
Re: Выпадающий список вместо дерева
« Ответ #36 : 18.01.2011, 23:30:58 »
 :D РЕШЕНО

custom.functions.php
Код
<?php
defined( '_SOBI2_' ) || exit("Restricted access");

global $tmpSobiCats;
$tmpSobiCats=array();

function getSobiCatsDrop ( $parent = 1, $prefix='', $prefix_sym='|')
{
global $tmpSobiCats;
    $config =& sobi2Config::getInstance();
    $database =& $config->getDb();
    $published = null;
    if ( $parent < 1 )
{$parent = 1;}
    if ( ! ( defined( '_SOBI2_ADMIN' ) ) )
{$published = " published = 1 AND ";}
    $query = "SELECT relations.catid " . "FROM `#__sobi2_categories`" . "LEFT JOIN `#__sobi2_cats_relations` AS relations ON `#__sobi2_categories`.catid = relations.catid " . "WHERE `parentid` = {$parent} AND `published` = 1 ";
    $config->database->setQuery( $query );
    $cids = $config->database->loadResultArray();
    if( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}
    if(sizeof($cids)>0)
{
      $ids = ( ! empty( $cids ) )? implode( " , ", $cids ) : null;
      $query = "SELECT * FROM #__sobi2_categories WHERE catid IN({$ids}) AND published = 1 ORDER BY {$config->catsOrdering}";
      $config->database->setQuery( $query );
    }
    $return = $config->database->loadObjectList();
    if ( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}
    $catList1 = array();
    if( !empty( $return ) )
{
        foreach( $return as $category )
   {
$category->name = $config->jsAddSlashes( $config->getSobiStr( $prefix.$category->name ) );
            $category->name = $config->getSobiStr($category->name);
            $tmpSobiCats[] = sobiHTML::makeOption( $category->catid, $category->name );
getSobiSubCatsDrop($category->catid, $prefix.'   '.$prefix_sym, $prefix_sym);
        }
    }
$catList1=$tmpSobiCats;
//print_r($catList1);
    $catList1 = sobiHTML::selectList( $catList1, "sobi2SlectedCatsID[]", 'size="1" class="inputbox"' , 'value', 'text' );
    $returnVal = "<tr><td>Выберите категорию:</td><td>{$catList1}</td>";
    return $returnVal;
}


function getSobiSubCatsDrop ( $parent = 1, $prefix='', $prefix_sym='|')
{
global $tmpSobiCats;
    $config =& sobi2Config::getInstance();
    $database =& $config->getDb();
    $published = null;
    if ( $parent > 1 )
{
if ( ! ( defined( '_SOBI2_ADMIN' ) ) )
{$published = " published = 1 AND ";}
$query = "SELECT relations.catid " . "FROM `#__sobi2_categories`" . "LEFT JOIN `#__sobi2_cats_relations` AS relations ON `#__sobi2_categories`.catid = relations.catid " . "WHERE `parentid` = {$parent} AND `published` = 1 ";
$config->database->setQuery( $query );
$cids = $config->database->loadResultArray();
if( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}
if(sizeof($cids)>0)
{
 $ids = ( ! empty( $cids ) )? implode( " , ", $cids ) : null;
 $query = "SELECT * FROM #__sobi2_categories WHERE catid IN({$ids}) AND published = 1 ORDER BY {$config->catsOrdering}";
 $config->database->setQuery( $query );
}
$return = $config->database->loadObjectList();
if ( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}

if( !empty( $return ) )
{
foreach( $return as $category )
{
$category->name = $config->jsAddSlashes( $config->getSobiStr( $prefix.'-'.$category->name ) );
$category->name = $config->getSobiStr($category->name);
$tmpSobiCats[] = sobiHTML::makeOption( $category->catid, $category->name );
getSobiSubCatsDrop($category->catid, $prefix.'   '.$prefix_sym, $prefix_sym);
}
}
}
}
  
?>

Правда требует доработки... В представленном виде пользователь имеет возможность добавить объявление и в дочернюю и в родительскую категорию....
Авторы модуля: Кукеев Джангар, Anar Jafarov
« Последнее редактирование: 18.01.2011, 23:38:54 от Djangar »
*

Djangar

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
  • all possible
Re: Выпадающий список вместо дерева
« Ответ #37 : 19.01.2011, 10:54:33 »
Последняя версия (Спасибо Анару Джафарову! <num8er@mail.ru>)

Код
<?php
defined( '_SOBI2_' ) || exit("Restricted access");

global $sobiLastChildId;
$sobiLastChildId=0;
global $sobiLastChildTree;
$sobiLastChildTree='';
global $sobiTmpList;
$sobiTmpList=array();

function getSobiCatsDrop ( $parent = 1, $wordlimit=10, $delimiter='|')
{
global $sobiLastChildId;
global $sobiLastChildTree;
global $sobiTmpList;
    $config =& sobi2Config::getInstance();
    $database =& $config->getDb();
    $published = null;
    if ( $parent < 1 )
{$parent = 1;}
    if ( ! ( defined( '_SOBI2_ADMIN' ) ) )
{$published = " published = 1 AND ";}
    $query = "SELECT relations.catid " . "FROM `#__sobi2_categories`" . "LEFT JOIN `#__sobi2_cats_relations` AS relations ON `#__sobi2_categories`.catid = relations.catid " . "WHERE `parentid` = {$parent} AND `published` = 1 ORDER BY `#__sobi2_categories`.name ASC ";
    $config->database->setQuery( $query );
    $cids = $config->database->loadResultArray();
    if( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}
    if(sizeof($cids)>0)
{
      $ids = ( ! empty( $cids ) )? implode( " , ", $cids ) : null;
      $query = "SELECT * FROM #__sobi2_categories WHERE catid IN({$ids}) AND published = 1 ORDER BY name ASC";//ORDER BY {$config->catsOrdering}";
      $config->database->setQuery( $query );
    }
    $return = $config->database->loadObjectList();
    if ( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}
    $catList1 = array();
    if( !empty( $return ) )
{
        foreach( $return as $category )
   {
$category->name = $config->jsAddSlashes( $config->getSobiStr( $category->name ) );
            $category->name = $config->getSobiStr($category->name);
$sobiLastChildTree=$category->name;
if(strlen($category->name)>$wordlimit && $wordlimit>0)
{$sobiLastChildTree=mb_substr(trim($category->name), 0, $wordlimit).'... ';}
$sobiLastChildId=$category->catid;
getSobiTreeData($category->catid, $wordlimit, $delimiter);
        }
    }
$catList1=$sobiTmpList;
    $catList1 = sobiHTML::selectList( $catList1, "sobi2SlectedCatsID[]", 'size="1" class="inputbox"' , 'value', 'text' );
    $returnVal = "<tr><td>Выберите категорию:</td><td>{$catList1}</td>";
    return $returnVal;
}


function getSobiTreeData ( $parent = 1, $wordlimit=8, $delimiter='|')
{
global $sobiLastChildId;
global $sobiLastChildTree;
global $sobiTmpList;

    $config =& sobi2Config::getInstance();
    $database =& $config->getDb();
    $published = null;
    if ( $parent > 1 )
{
if ( ! ( defined( '_SOBI2_ADMIN' ) ) )
{$published = " published = 1 AND ";}
$query = "SELECT relations.catid " . "FROM `#__sobi2_categories`" . "LEFT JOIN `#__sobi2_cats_relations` AS relations ON `#__sobi2_categories`.catid = relations.catid " . "WHERE `parentid` = {$parent} AND `published` = 1 ORDER BY `#__sobi2_categories`.name ASC";
$config->database->setQuery( $query );
$cids = $config->database->loadResultArray();
if( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}
if(sizeof($cids)>0)
{
 $ids = ( ! empty( $cids ) )? implode( " , ", $cids ) : null;
 $query = "SELECT * FROM #__sobi2_categories WHERE catid IN({$ids}) AND published = 1 ORDER BY name ASC";//ORDER BY {$config->catsOrdering}";
 $config->database->setQuery( $query );
}
$return = $config->database->loadObjectList();
if ( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}

if( !empty( $return ) )
{
foreach( $return as $category )
{
$category->name = $config->jsAddSlashes( $config->getSobiStr( $category->name ) );
$category->name = $config->getSobiStr($category->name);
if(strlen($category->name)>$wordlimit && $wordlimit>0)
{$category->name=mb_substr(trim($category->name), 0, $wordlimit).'... ';}
$tmpStr1=$sobiLastChildTree;
$sobiLastChildTree.=$delimiter.' '.$category->name.' ';
$tmpStr2=$sobiLastChildTree;

$q = "SELECT relations.catid " . "FROM `#__sobi2_categories`" . "LEFT JOIN `#__sobi2_cats_relations` AS relations ON `#__sobi2_categories`.catid = relations.catid " . "WHERE `parentid` = {$category->catid} AND `published` = 1 ORDER BY `#__sobi2_categories`.name ASC";
$config->database->setQuery( $q );
$res = $config->database->loadResultArray();
if( $config->database->getErrorNum() )
{trigger_error( "DB reports: " . $config->database->stderr(), E_USER_WARNING );}
if(empty($res))
{
$sobiLastChildTree=trim($sobiLastChildTree);
$sobiLastChildId=(int)$category->catid;
if($sobiLastChildId>0 && strlen($sobiLastChildTree)>0)
{$sobiTmpList[]=sobiHTML::makeOption( $sobiLastChildId, $sobiLastChildTree );}
}
else
{
$sobiLastChildId=$category->catid;
getSobiTreeData($category->catid, $wordlimit, $delimiter);
}
$sobiLastChildTree=$tmpStr1;
}
}
}
}

?>

Теперь пользователь может выбрать нужную ему категорию в 1-2 клика!
Очень полезна тем, у кого большая глубина вложенности категорий
« Последнее редактирование: 19.01.2011, 11:14:00 от Djangar »
*

malinka

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
  • 9212321 поможем выехать с любого бездорожья
Re: Выпадающий список вместо дерева
« Ответ #38 : 21.01.2011, 13:20:00 »
Последняя версия (Спасибо Анару Джафарову! <num8er@mail.ru>)
Теперь пользователь может выбрать нужную ему категорию в 1-2 клика!
Очень полезна тем, у кого большая глубина вложенности категорий
Мальчики это просто замечательно что у вас все получилось и сошлось, ну пожалуйста для БЛОНДИНКИ САМОУЧКИ (всетаки, я одна из первых догадалась что надо по аналогии поиска делать и вопрос здесь задала) так вот пожалуйста для меня расскажите пожалуйста КУДА ЭТО ВСТАВИТЬ, очень вас прошу
*

num8er

  • Новичок
  • 2
  • 1 / 0
Re: Выпадающий список вместо дерева
« Ответ #39 : 22.01.2011, 09:11:02 »
Мальчики это просто замечательно что у вас все получилось и сошлось, ну пожалуйста для БЛОНДИНКИ САМОУЧКИ (всетаки, я одна из первых догадалась что надо по аналогии поиска делать и вопрос здесь задала) так вот пожалуйста для меня расскажите пожалуйста КУДА ЭТО ВСТАВИТЬ, очень вас прошу

это часть кода компонента для Joomla. так что заходим:
папка_с_joomla/components/com_sobi2/includes/inc/

1. там будет файл custom.functions.php
открываещь этот файл и код (последний пост или пред последний) кидаешь туда.
2. там же файл config.ini    находим строку
Код
edit_callback_func = 0
в разделе [edit_form] и заменяем значение переменной на
Код
edit_callback_func = "getSobiCatsDrop" 
т.е. указываем имя нашей пользовательской функции, которую мы добавили в файл custom.functions.php
*

GDV

  • Завсегдатай
  • 1898
  • 201 / 5
Re: Выпадающий список вместо дерева
« Ответ #40 : 22.01.2011, 09:47:04 »
Спасибо. Работает. Немного дополню ваш же код.
Для настройки количества букв в категории и подкатегории

Код
function getRabotaCatsDrop ( $parent = 1, $wordlimit=10, $delimiter='|')

$wordlimit=10 количество букв по умолчанию 10. Выставляем свое значение
$delimiter='|' разделитель между категорией и подкатегорией. Можно поставить свой знак. Я сделал так $delimiter=' ->'. Так прикольнее вышло. Хотя на любителя.

Метод работает. Жаль только что не зависимые поля. А только одно поле. Ну и на этом спасибо.
Убедительная просьба не писать в ЛС. Для решения Ваших проблем есть форум.
*

num8er

  • Новичок
  • 2
  • 1 / 0
Re: Выпадающий список вместо дерева
« Ответ #41 : 22.01.2011, 11:33:58 »
Спасибо. Работает. Немного дополню ваш же код.
Для настройки количества букв в категории и подкатегории

Код
function getRabotaCatsDrop ( $parent = 1, $wordlimit=10, $delimiter='|')

$wordlimit=10 количество букв по умолчанию 10. Выставляем свое значение
$delimiter='|' разделитель между категорией и подкатегорией. Можно поставить свой знак. Я сделал так $delimiter=' ->'. Так прикольнее вышло. Хотя на любителя.

Метод работает. Жаль только что не зависимые поля. А только одно поле. Ну и на этом спасибо.

По Wordлимиту и делимитеру скажу что кому как нравитца. )))
Рад что помогло хоть как.
*

Muzzy

  • Захожу иногда
  • 107
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #42 : 22.01.2011, 15:10:55 »
Зависимые категории плагином для Sobi2: http://joomlaforum.ru/index.php/topic,147526.0.html
*

Djangar

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
  • all possible
Re: Выпадающий список вместо дерева
« Ответ #43 : 24.01.2011, 23:20:47 »
Зависимые категории плагином для Sobi2: http://joomlaforum.ru/index.php/topic,147526.0.html

мда... тут люди бизнес делают, а мы, ёшкин кот, альтруисты какие-то -)
*

Muzzy

  • Захожу иногда
  • 107
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #44 : 24.01.2011, 23:24:59 »
мда... тут люди бизнес делают, а мы, ёшкин кот, альтруисты какие-то -)
Альтруистов в этом топике маловато.
Знаю пару человек с этого форума, которые сделали каскадный выбор категорий,
но они почему-то не торопятся выкладывать в паблик решение.
*

GDV

  • Завсегдатай
  • 1898
  • 201 / 5
Re: Выпадающий список вместо дерева
« Ответ #45 : 24.01.2011, 23:50:55 »
Скорее всего под заказ делалось. И было предьявленно условие не распростронять решение. За это платится хорошие деньги.
Убедительная просьба не писать в ЛС. Для решения Ваших проблем есть форум.
*

Djangar

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
  • all possible
Re: Выпадающий список вместо дерева
« Ответ #46 : 27.01.2011, 10:57:40 »
Скорее всего под заказ делалось. И было предьявленно условие не распростронять решение. За это платится хорошие деньги.

Интересно, "Хорошие деньги" - это сколько?
*

GDV

  • Завсегдатай
  • 1898
  • 201 / 5
Re: Выпадающий список вместо дерева
« Ответ #47 : 27.01.2011, 13:29:25 »
Как договоришься, потом могли быть комплексные решения, в которое вошло и это ковыряние.
Второй вариант почему не выкладывают - Жаба давит
Третий вариант - Хотса заработать (что естественно)

p.s. Вы еще не видели наверное как в собипро категории выбирать. Там полный ахтунг. Разработчик маленько перебрал. Мозги были повернуты на Joomla 1.0 щас повернулись наверное на Joomla 10.0. где то ребята пропустили 1.5 и 1.6.
Убедительная просьба не писать в ЛС. Для решения Ваших проблем есть форум.
*

Muzzy

  • Захожу иногда
  • 107
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #48 : 27.01.2011, 22:35:47 »
Интересно кто "малина абсирайт" по части SOBI2 Pro?
Были обещаны зависимые выпадающие поля любые. Где они?
В бета-версиях нет такого. И вообще что-то не радует JS.
Того гляди сделают пагинацию на JS  и тогда капут котёнку.

Я делаю на SOBI2 любые каскадные поля сам, но это же геморно.

Но раз уж тема пошла по выпадающим спискам в категориях, то
у меня есть решение плагином для SOBI2, но оно для моей задумки децл не подходит.
Продам скриптец. Крутой канешна, но не для меня.
Может буду в других проектах юзать.

У меня как минимум 141 000 категорий. Все вложенные.
А мне нужны УВ2 и УВ3. Не более. Ну макс УВ4. У меня не получается.
Я не знаю как это организовать проще, но как говорицца "очень нужно".
Кажись здесь вообще SOBI2 не поможет.
« Последнее редактирование: 28.01.2011, 10:10:42 от Muzzy »
*

Djangar

  • Осваиваюсь на форуме
  • 15
  • 1 / 0
  • all possible
Re: Выпадающий список вместо дерева
« Ответ #49 : 28.01.2011, 12:52:17 »
А есть ли достойная альтернатива СОБИ2? Мне кажется - нет.
Остальные пакеты малость недотягивают по надежности и гибкости расширения.
Пусть СОБИ2 - не идеал и в общем-то очень даже далёк от идеала, НО ничего более "идеалистого", к сожалению, программистское сообщество дать не способно... при условии фриварности софта (что обязательно).

Re: Выпадающий список вместо дерева
« Ответ #50 : 30.01.2011, 11:26:32 »
Смотрю больше никакой активности в этой теме(((
никто так и не решил проблему с зависимыми категориями при добавлении как в поиске?
*

stoks

  • Новичок
  • 3
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #51 : 04.03.2011, 16:37:10 »
Спасибо за код. Работает, единственная проблема у меня, после добавления этой функции, это кодировка, на против выбора категорий квадраты �� �� �� ��   и сами категории наполовину русские, на половину отображаются квадратами. Помогите решить проблему.   


*

GDV

  • Завсегдатай
  • 1898
  • 201 / 5
Re: Выпадающий список вместо дерева
« Ответ #52 : 04.03.2011, 17:07:50 »
Это проблема резки символов. Хотите избавиться? Добавте лимит символов на полное количество символов.  Если у вас самая длинная категория имеет 70 символов, столько и добавтье. А что бы полоса не вышла за пределы поля добавления. В стилях добавте max-width:200px; Ширину выбирайте на свое усмотрение. На примере ширина 200пикселей.
Убедительная просьба не писать в ЛС. Для решения Ваших проблем есть форум.
*

Lord Glue

  • Захожу иногда
  • 95
  • 66 / 0
  • добрый пандо
Re: Выпадающий список вместо дерева
« Ответ #53 : 04.03.2011, 22:14:28 »
вообще-то ИМХО в коде как раз и используется mb_substr - для резки utf-8.
можно попробовать сменить на просто substr - вдруг там сайт в cp1251
*

GDV

  • Завсегдатай
  • 1898
  • 201 / 5
Re: Выпадающий список вместо дерева
« Ответ #54 : 04.03.2011, 23:28:55 »
Да нет. У меня все в utf-8 и такая же беда была. Так и решил
Убедительная просьба не писать в ЛС. Для решения Ваших проблем есть форум.
*

stoks

  • Новичок
  • 3
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #55 : 05.03.2011, 00:47:51 »
Всё решилось. Перекодировал файл в utf8 и добавил лимит символов. Всем большое человеческое спасибо.
*

Andry48

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #56 : 05.03.2011, 20:38:30 »
Пацаны! Ну что вы тут выкладываете! Ничего не работает!! Или где то закавыку какую подстроили?! Может точку или запятую где то не поставили в коде?;) ну раз вы тут готовые решения выкладываете, я полагаю и надеюсь на правильность того. Или вы уж тогда скажите честно, что тут надо поковыряться в минимум 100 строках и 50000 символов и найти то, что вы накосячили или заплати и мы тебе тогда сделаем. А то я тут время теряю, последнее зрение гроблю. Ну все сделал как написали, и толку нет. Ну и вообще то я не первый год за компом и не один и не ламерский сайт сделал, к сведению. Все как было так и осталось....:(
*

GDV

  • Завсегдатай
  • 1898
  • 201 / 5
Re: Выпадающий список вместо дерева
« Ответ #57 : 14.04.2011, 17:57:42 »
Пацаны! Ну что вы тут выкладываете! Ничего не работает!! Или где то закавыку какую подстроили?! Может точку или запятую где то не поставили в коде?;) ну раз вы тут готовые решения выкладываете, я полагаю и надеюсь на правильность того. Или вы уж тогда скажите честно, что тут надо поковыряться в минимум 100 строках и 50000 символов и найти то, что вы накосячили или заплати и мы тебе тогда сделаем. А то я тут время теряю, последнее зрение гроблю. Ну все сделал как написали, и толку нет. Ну и вообще то я не первый год за компом и не один и не ламерский сайт сделал, к сведению. Все как было так и осталось....:(
Не наезжай. Все работает. У кого руки с того места растут. ;)
Убедительная просьба не писать в ЛС. Для решения Ваших проблем есть форум.
*

Nova2009

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: Выпадающий список вместо дерева
« Ответ #58 : 09.08.2011, 21:20:18 »
а зависимые списки кто нибудь пробовал? В поиске такое реализовано но при выборе категории нет!
« Последнее редактирование: 09.08.2011, 23:26:39 от Nova2009 »
*

devul

  • Захожу иногда
  • 283
  • 21 / 1
  • если помог можете поставить +
Re: Выпадающий список вместо дерева
« Ответ #59 : 28.08.2011, 20:06:28 »
как продвижение с зависимыми категориями? кто то уже накопал?
Бложик про joomla, k2, joomshoppingdevul.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться