Выбор категорий галочками DLE

Рубрика: Хаки для DLE » Хак DLE 12.1, 12.0, 11.3, 11.2, 11.1, 11.0, 10.6, 10.5, 10.4, 10.3, 10.2, 10.1, 10.0, 9.8, 9.7, 9.6, 9.5, 9.4, 9.3, 9.2, 9.0
Выбор категорий галочками DLE
Как сделать выбор категории с галочками для DLE в форме добавления новостей? Удобное добавление новостей - хак выбор категорий галочками для DLE на http://www.dle9.com/ под любую версию движка DataLife Engine, проверен на dle 10.4, должен работать на dle 10.5 версии.

Хак для dle заменяет стандартный выбор категорий при добавление новостей в пользовательской части и административном разделе галочками для DLE.
Сделать выбор категорий select на checkbox в форме добавления новостей, поможет хак (Выбор категорий галочками) в DLE в админ панели и пользовательской части сайта.

В этой статье рассмотрим два варианта замены на JS и PHP.

Вариант первый на JS
Для пользовательской части делаем выбор категорий галочками в DLE
Открыть addnews.tpl и в самый вверх вставить

<script> 

$(function() {

var new_box = '', name_select = $('#entryform #category');

if(typeof name_select.attr('name')!=='undefined'){

$.each($('option', name_select),function (i,c) {

if(this.value!=0){

new_box += '<div style="width:200px;float: left;">'

+'<input type="checkbox" name="'+name_select.attr('name')+'" id="chk'+i+'" onclick="onCategoryChange(this);" value="'+this.value+'"'+(this.selected==true ? ' checked' : '')+'>'

+' <label for="chk'+i+'">'+this.text+'</label>'

+'</div>';}});    

name_select.after('<div class="categoryCheckbox">'+new_box+'</div>').remove();

function smartColumns() { 

$(".categoryCheckbox").css({ 'width' : "100%"});  

var colWrap = $(".categoryCheckbox").width();

var colNum = Math.floor(colWrap / 200);

var colFixed = Math.floor(colWrap / colNum);

$(".categoryCheckbox").css({ 'width' : colWrap}); 

$(".categoryCheckbox div").css({ 'width' : colFixed});}  

smartColumns();

$(window).resize(function(){smartColumns();}); 

}

});

</script>

Готово!

Для админ панели Выбор категорий галочками для
<a href="http://www.dle9.com/">дле</a>

Открыть engine/skins/javascripts/application.js в самом низу вставить

$(function() {

var new_box = '', name_select = $('#addnews #category');

if(typeof name_select.attr('name')!=='undefined'){

$.each($('option', name_select),function (i,c) {

if(this.value!=0){

new_box += '<div style="width:200px;float: left;">'

+'<input type="checkbox" name="'+name_select.attr('name')+'" id="chk'+i+'" onclick="onCategoryChange(this);" value="'+this.value+'"'+(this.selected==true ? ' checked' : '')+'>'

+' <label for="chk'+i+'">'+this.text+'</label>'

+'</div>';}});    

name_select.after('<div class="categoryCheckbox">'+new_box+'</div>').remove();

function smartColumns() { 

$(".categoryCheckbox").css({ 'width' : "100%"});  

var colWrap = $(".categoryCheckbox").width();

var colNum = Math.floor(colWrap / 200);

var colFixed = Math.floor(colWrap / colNum);

$(".categoryCheckbox").css({ 'width' : colWrap}); 

$(".categoryCheckbox div").css({ 'width' : colFixed});}  

smartColumns();

$(window).resize(function(){smartColumns();}); 

}

});


Готово!

Вариант второй на PHP
Для пользовательской части выбор категорий галочками DLE
Открыть engine/modules/functuions.php найти

function CategoryNewsSelection
......
return $returnstring;
}


Заменить на

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 .= '';
    } 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 .= $sublevelmarker . "<input id=\"catlist_".$id."\" onchange=\"onCategoryChange(this.value)\" name=\"catlist[]\" type=\"checkbox\" value=\"".$id."\" ";
                    if( is_array( $categoryid ) ) {
                        foreach ( $categoryid as $element ) {
                            if( $element == $id ) $returnstring .= ' CHECKED ';
                        }
                    } elseif( $categoryid == $id ) $returnstring .= ' CHECKED ';
                    
                    $returnstring .= '/><label for=\"catlist_".$id."\" style=\"color: {$color}\">' . $cat_info[$id]['name'] . '</label><br />';
                }
                $returnstring = CategoryNewsSelection( $categoryid, $id, $nocat, $sublevelmarker, $returnstring );
            }
        }
    }
    return $returnstring;
}


Найти

$returnstring .= $sublevelmarker . "<input id=\"catlist_".$id."\" onchange=\"onCategoryChange(this.value)\" name=\"catlist[]\" type=\"checkbox\" value=\"".$id."\" ";


Заменить на

$returnstring .= "<div style=\"float:left;width:200px;\"><input id=\"catlist_".$id."\" onchange=\"onCategoryChange(this.value)\" name=\"catlist[]\" type=\"checkbox\" value=\"".$id."\" ";


Найти

$returnstring .= '/><label for=\"catlist_".$id."\" style=\"color: {$color}\">' . $cat_info[$id]['name'] . '</label><br />';


Заменить на

$returnstring .= '/><label for=\"catlist_".$id."\" style=\"color: {$color}\">' . $cat_info[$id]['name'] . '</label></div>';


Открыть engine/modules/addnews.php найти

$tpl->set( '{category}', $cats );


Заменить на

$tpl->set( '{category}', $categories_list );


Готово!

Для админ панели
<a href="http://www.dle9.com/">дле</a>

Рабочей версии я не нашел, чуть позже попробую прикрутить!

Версия DLE: Любаая проверен на DLE 10.4 в админке и в пользовательской чати. Всё отлично работает, спасибо автору :)
Автор JS версии: rocksmart
Автор PHP версии: ХЗ

Если категорий и подкатегорий много получается не очень, а если парочка подкатегорий, то очень даже удобно.

Внимание, если в профиле исчезли все закладки, то следует почистить Кеш браузера, после обновите страницу! Я поставил закладки в модальном окне!
Скачать другие у нас хаки для dle, как хак выбор категорий галочками
Как сделать выбор категории с галочками для DLE в форме добавления новостей? Удобное добавление новостей - хак выбор категорий галочками для DLE вы найдете всё лучшее у нас форумы, хаки, модули, шаблоны.
  • 80
Рубрика: DLE хаки » Хак для DLE
Ранее » Users Hide для DLE« Далее Запрет добавления новостей в пустые категории сайта
Нажмите на ссылку, чтобыОставить комментарий