• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Категории с галочками, в добавлении новостей

Статус
В этой теме нельзя размещать новые ответы.

mishqa35

Создатель
Регистрация
23 Мар 2008
Сообщения
33
Реакции
6
Помогите доделать вывод категорий, с галочками в две\три колонки.
Реализован вывод в одну колонку.
Версия dle 9.0
Изменял файлы.
modules/addnews.php
PHP:
		if( $config['allow_multi_category'] ) {
		//	$cats = "<select name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this.value)\" style=\"width:316px;height:73px;\" multiple>";
		} else {
		//	$cats = "<select name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this.value)\">";
		}
		$cats = $categories_list;
		//$cats .= "</select>";
		$tpl->set( '{category}', $cats );
modules/functions.php
PHP:
function CategoryNewsSelection($categoryid = 0, $parentid = 0, $nocat = TRUE, $sublevelmarker = '', $returnstring = '') {
	global $cat_info, $user_group, $member_id;
	$allow_list = explode( ',', $user_group[$member_id['user_group']]['cat_allow_addnews'] );
	$spec_list = explode( ',', $user_group[$member_id['user_group']]['cat_add'] );
	$root_category = array ();
	//if( $parentid == 0 ) {
	//	if( $nocat ) $returnstring .= '<option value="0"></option>';
	//} else {
	//	$sublevelmarker .= '&nbsp;&nbsp;&nbsp;';
	//}
	if( count( $cat_info ) ) {
		foreach ( $cat_info as $cats ) {
			if( $cats['parentid'] == $parentid ) $root_category[] = $cats['id'];
		}
		if( count( $root_category ) ) {
			foreach ( $root_category as $id ) {
				if( $allow_list[0] == "all" or in_array( $id, $allow_list ) ) {
					if( $spec_list[0] == "all" or in_array( $id, $spec_list ) ) $color = "black";
					else $color = "red";
					$returnstring .= "<input type=\"checkbox\" name=\"catlist[]\" id=\"category\" value=\"" . $id . '" ';
					if( is_array( $categoryid ) ) {
						foreach ( $categoryid as $element ) {
							if( $element == $id ) $returnstring .= 'checked';
						}
					} elseif( $categoryid == $id ) $returnstring .= 'checked';
					$returnstring .= '>' . $sublevelmarker . $cat_info[$id]['name'] . '<br />';
				}
				$returnstring = CategoryNewsSelection( $categoryid, $id, $nocat, $sublevelmarker, $returnstring );
			}
		}
	}
	return $returnstring;
}
На первом скриншоте показано что выводится, на втором то что хотелось бы реализовать. Но что то не выходит. Нужно добавить толи таблицу и код для разбивки по местам или хз что. Зарание спасибо, с меня спасибка.
Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся
 
попробуй вставить float:left для checkbox.

$returnstring .= "<input style=\"float:left;\" type=\"checkbox\" name=\"catlist[]\" id=\"category\" value=\"" . $id . '" ';

p.s. поделись сомной этим хаком тоже :D
 
Весь код хака в первом посте.
А одним style=\"float:left;\" тут не обойтись.
ps; тема все еще актуальна, решения так и не придумал. help:thenks:
 
  • Заблокирован
  • #4
Элементарно, засуньте категории в таблицу, сделайте счетчик и скажем при $j равном 5 вставляйте </td><td> и обнуляйте $j
вот пример, может не до конца въехал в код, так как уже праздную НГ :yahoo: ...

PHP:
function CategoryNewsSelection($categoryid = 0, $parentid = 0, $nocat = TRUE, $sublevelmarker = '', $returnstring = '') {
    global $cat_info, $user_group, $member_id;
    $allow_list = explode( ',', $user_group[$member_id['user_group']]['cat_allow_addnews'] );
    $spec_list = explode( ',', $user_group[$member_id['user_group']]['cat_add'] );
    $root_category = array ();
    //if( $parentid == 0 ) {
    //    if( $nocat ) $returnstring .= '<option value="0"></option>';
    //} else {
    //    $sublevelmarker .= '&nbsp;&nbsp;&nbsp;';
    //}
    if( count( $cat_info ) ) {
        foreach ( $cat_info as $cats ) {
            if( $cats['parentid'] == $parentid ) $root_category[] = $cats['id'];
        }
        if( count( $root_category ) ) {
            $j=1;
            $returnstring .="<table><tr><td>";
            foreach ( $root_category as $id ) {
                if( $allow_list[0] == "all" or in_array( $id, $allow_list ) ) {
                    if( $spec_list[0] == "all" or in_array( $id, $spec_list ) ) $color = "black";
                    else $color = "red";
                    $returnstring .= "<input type=\"checkbox\" name=\"catlist[]\" id=\"category\" value=\"" . $id . '" ';
                    if( is_array( $categoryid ) ) {
                        foreach ( $categoryid as $element ) {
                            if( $element == $id ) $returnstring .= 'checked';
                        }
                    } elseif( $categoryid == $id ) $returnstring .= 'checked';
                    $returnstring .= '>' . $sublevelmarker . $cat_info[$id]['name'] . '<br />';
                    if($j==5)
                    {
                        $returnstring .="</td><td>";
                        $j=0;
                    }
                    $j++;
                }
                $returnstring = CategoryNewsSelection( $categoryid, $id, $nocat, $sublevelmarker, $returnstring );

            }
            $returnstring .="</td></tr></table>";
        }
    }
    return $returnstring;
}
 
Juri, большое тебе спасибо! Все точно так как и хотел, добавил стили выравнивания и убрал вывод не нужных категорий, и все стало выглядеть шикарно.
С наступающим тебя! ;)

ps; тему можно закрывать.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху