Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Вопрос? Выбор категорий галочками — чекбокс

Тема в разделе "Вопросы- ответы", создана пользователем oranges, 2 мар 2023.

02.03.23 в 07:50
04.03.23 в 19:19
17
840
3
  1. TopicStarter Overlay
    oranges

    oranges Бывалый

    Регистрация:
    15 май 2016
    Сообщения:
    169
    Лучших ответов:
    0
    Рейтинги:
    +38 / 16 / -0
    Есть код js, который облегчает работу с выбором категорий. Не нужно листать целый список, просто появляется таблица, где нужные категории, подборки и т.д. проставляешь галочками. Невероятно полезный, у кого 50+ категорий, а про 100 вообще молчу: просто визуально прошелся глазками за 5 секунд проставил галочки и готова.

    Screenshot.jpg

    Есть 1 минус — категории все по id в разнобой. id33 id50 id3 и т.д.
    Может кому удастся помочь и слегка поправить код? Нужно сделать так, чтоб высвечивающиеся категории в списке можно было редактировать, выставлять по собственному желанию по id. То бишь выставлять в таком порядке, в котором мне нужно.
    К примеру: сгруппировать все категории и подборки к боевиками id15, id16, id45. Драмы к драмам и т.д. Это будет уже для полного удобства и идеально для работы с сайтом!

    Открыть engine/skins/jаvascripts/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();});
    
    }
    
    });
     
    • Нравится Нравится x 3
    • Полезно Полезно x 1
  2. dr.gopher

    Команда форума VIP Кинотрафик v2

    Регистрация:
    26 июн 2015
    Сообщения:
    1.591
    Лучших ответов:
    8
    Рейтинги:
    +472 / 46 / -0
    Спасибо! Полезная штука.

    Был вроде модуль, в ктором можно было групировать по спискам категории. Но он был кривой и током не работал.
    Поищу, если найду выложу.
     
  3. MrPechenkO

    MrPechenkO Зелёный

    Регистрация:
    3 мар 2023
    Сообщения:
    3
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    Попробовал данный плагин на 15.3, но что то вообще не чего не меняется, увы
     
  4. TopicStarter Overlay
    oranges

    oranges Бывалый

    Регистрация:
    15 май 2016
    Сообщения:
    169
    Лучших ответов:
    0
    Рейтинги:
    +38 / 16 / -0
    Это не плагин. Просто скопируй и помести в самый низ engine/skins/jаvascripts/application.js
     
  5. dr.gopher

    Команда форума VIP Кинотрафик v2

    Регистрация:
    26 июн 2015
    Сообщения:
    1.591
    Лучших ответов:
    8
    Рейтинги:
    +472 / 46 / -0
    Один огромный минут. Парсер кинопоиска откзываетя прописывать категории.
     
  6. MrPechenkO

    MrPechenkO Зелёный

    Регистрация:
    3 мар 2023
    Сообщения:
    3
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    Да, так и сделал, вот скрин файла с кодом: Imgur: The magic of the Internet

    А вот как на сайте выглядит: imgur.com

    Кеш почистил и в браузере и в дле и даже кеширование в фастпанеле выключил
     
  7. MrPechenkO

    MrPechenkO Зелёный

    Регистрация:
    3 мар 2023
    Сообщения:
    3
    Лучших ответов:
    0
    Рейтинги:
    +0 / 0 / -0
    oranges А, так это работает только на админскую часть или на пользовательскую тоже?
     
  8. TopicStarter Overlay
    oranges

    oranges Бывалый

    Регистрация:
    15 май 2016
    Сообщения:
    169
    Лучших ответов:
    0
    Рейтинги:
    +38 / 16 / -0
    MrPechenkO К сожалению только в админке.
     
  9. TopicStarter Overlay
    oranges

    oranges Бывалый

    Регистрация:
    15 май 2016
    Сообщения:
    169
    Лучших ответов:
    0
    Рейтинги:
    +38 / 16 / -0
    Может кто сможет, доработает его?
    1) Расставлять категории по нужному ид.
    2) Как оказалось для парсера
    3) Для белых тематик, чтоб у пользователей при добавлении такая же форма заполнения категорий была.
    Если бесплатно нет желания помогать, может тогда платно хоть поможете?
     
  10. Heiz

    PRO Users

    Регистрация:
    24 сен 2016
    Сообщения:
    1.211
    Лучших ответов:
    1
    Рейтинги:
    +371 / 59 / -0
    Кто-то в кино проставляет категории сам?)
     
  11. teds

    Команда форума VIP Кинотрафик v2

    Регистрация:
    5 авг 2021
    Сообщения:
    342
    Лучших ответов:
    0
    Рейтинги:
    +70 / 46 / -0
    Heiz Я иногда)
     
  12. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Вариант конечно не очень хорошо, но вроде заявленные требования выполняет. Может кто лучше предложит потом.

    Итак код js убираем.
    Чистим кэш браузера и дле.

    Открываем engine/inc/addnews.php
    находим:

    Код:
    $categories_list = CategoryNewsSelection( 0, 0 );
    
    Перед :
    Код:
    </script>
    ставим:
    Код:
    function smartColumns() {
    
    $(\".categoryCheckbox\").css({ 'width' : \"100%\"});
    
    var colWrap = $(\".categoryCheckbox\").width();
    
    var colNum = Math.floor(colWrap / 100);
    
    var colFixed = Math.floor(colWrap / colNum);
    
    $(\".categoryCheckbox\").css({ 'width' : colWrap});
    
    $(\".categoryCheckbox div\").css({ 'width' : colFixed});}
    
    smartColumns();
    
    $(window).resize(function(){smartColumns();});
    Далее после:
    Код:
    $categories_list = CategoryNewsSelection( 0, 0 );
    ставим:

    Код:
    $array = ['1' => [11,4,3], '2' => [5,6,8], '3' => [7,1,2],];// Каждая новая подборка категорий '*' => [здесь ид категорий через запятую],
        $fg = '';
        $i = 1;
        preg_match_all('#value="(.*?)"#',$categories_list,$cats);
      
        foreach($array as $ir){
          
          
            foreach($ir as $sd){
              
                if(in_array($sd,$cats[1])){
                  
                    $fg .= "<input type=\"checkbox\" name='category[]' id='chk".$i."'onclick=\"onCategoryChange(this);\" value='".$sd."'>";
                    $fg .= '<label for="chk'.$i.'" style="width:50%;max-width:75px;">&nbsp'.$cat_info[$sd]['name'].'</label>';
                    if($sd == end($ir)){
                        $fg .= "<br/>";
                    }
                    $i += 1;
                }
            }
        }
    Ниже находим:
    Код:
    <select data-placeholder="{$lang['addnews_cat_sel']}" title="{$lang['addnews_cat_sel']}" name="category[]"id="category" onchange="onCategoryChange(this)" $category_multiple style="width:100%;max-width:350px;">{$categories_list}</select><input type="hidden" name="category_custom_sort" id="category_custom_sort" value="">
                                    
    После ставим:
    Код:
    <div class="categoryCheckbox">{$fg}</div>
    Сохраняем файл и проверяем. Без ручного указания идишек категории не удалось найти решение, возможно кто выдаст более удачное решение.

    Пример как выдает информацию :
    Список категорий:
    upload_2023-3-4_12-35-27.png

    Как выглядит :
    upload_2023-3-4_12-35-56.png
     
    #12 igrovik, 4 мар 2023
    Последнее редактирование: 4 мар 2023
    • Лучший Лучший x 1
  13. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Для вашего случая делаем так.
    Открываем engine/modules/addnews.php
    находим:
    Код:
    else $categories_list = CategoryNewsSelection( 0, 0 );
    ниже ставим
    Код:
                $array = ['1' => [11,4,3,12,13,8,2,1,14], '2' => [5,6], '3' => [7],];// Каждая новая подборка категорий '*' => [здесь ид категорий через запятую],
                $fg = '';
                $i = 1;
                preg_match_all('#value="(.*?)"#',$categories_list,$catse);
                
                foreach($array as $ir){
                    
                    
                    foreach($ir as $sd){
                        
                        if(in_array($sd,$catse[1])){
                            
                            $fg .= "<input type=\"checkbox\" name='catlist[]' id='chk".$i."'onclick=\"onCategoryChange(this);\" value='".$sd."'>";
                            $fg .= '<label for="chk'.$i.'" style="width:50%;max-width:75px;">'.$cat_info[$sd]['name'].'</label>&nbsp';
                            if($sd == end($ir)){
                                $fg .= "<br/>";
                            }
                            $i += 1;
                        }
                    }
                }
    
    Далее находим
    Код:
    if( $config['allow_multi_category'] ) {
                
                $cats = "<select data-placeholder=\"{$lang['addnews_cat_sel']}\" name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this)\" style=\"width:350px;height:140px;\" multiple=\"multiple\">";
            
            } else {
                
                $cats = "<select data-placeholder=\"{$lang['addnews_cat_sel']}\" name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this)\" style=\"width:350px;\">";
            }
            
            $cats .= $categories_list;
            $cats .= "</select>";
    Изменяем на:
    Код:
    if( $config['allow_multi_category'] ) {
                
                //$cats = "<select data-placeholder=\"{$lang['addnews_cat_sel']}\" name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this)\" style=\"width:350px;height:140px;\" multiple=\"multiple\">";
            
            } else {
                
                //$cats = "<select data-placeholder=\"{$lang['addnews_cat_sel']}\" name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this)\" style=\"width:350px;\">";
            }
            
            //$cats .= $categories_list;
            $cats .= "<div class=\"categoryCheckbox\">{$fg}</div>";
    Далее находим :
    Код:
            $script = "
    <script>
    после <script> ставим

    Код:
    function smartColumns() {
    
    $(\".categoryCheckbox\").css({ 'width' : \"100%\"});
    
    var colWrap = $(\".categoryCheckbox\").width();
    
    var colNum = Math.floor(colWrap / 100);
    
    var colFixed = Math.floor(colWrap / colNum);
    
    $(\".categoryCheckbox\").css({ 'width' : colWrap});
    
    $(\".categoryCheckbox div\").css({ 'width' : colFixed});}
    
    smartColumns();
    
    $(window).resize(function(){smartColumns();});
    
        
    В
    Код:
    $array =[
    помещаем свои ид категорий в нужном порядке.
    Чистим кэш дле и браузера пробуем.
     
    • Лучший Лучший x 1
  14. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Попробуйте так.
    В js файлах парсера pspvolt
    найти такую функцию
    Код:
    function kinopoikcategory( categoryMINI ){
    если конечно он ее уже не изменил на другую.
    сразу после
    Код:
    function kinopoikcategory( categoryMINI ){
    ниже ставим

    Код:
    var htmls = document.getElementsByTagName("html")[0].innerHTML;
        var matches = htmls.match(/id="chk(.*?)"/g);
        
        for (var i=0; i<categoryMINI.length; i++) {
            for (var j=0; j < matches.length; j++) {   
            if ($('#chk'+j).val() == categoryMINI[i]) {
                   document.getElementById('chk'+j).checked = true;
                   document.getElementById('chk'+j).setAttribute('checked', 'checked');
                }     
            }
        }
    чистим кэш браузера и сайта и пробуем.
     
  15. TopicStarter Overlay
    oranges

    oranges Бывалый

    Регистрация:
    15 май 2016
    Сообщения:
    169
    Лучших ответов:
    0
    Рейтинги:
    +38 / 16 / -0
    Сделал все по инструкции, 2 раза пробовал. Как добавлять или редактировать новость, выскакивает ошибка:
    Код:
    Parse error: syntax error, unexpected '(', expecting variable (T_VARIABLE) or '{' or '$' in /home/admin/web/сайт/public_html/engine/inc/addnews.php on line 444
    
    Подскажи пожалуйста, что это за ошибка такая и как исправить?
     
  16. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Скиньте свой addnews.php
     
  17. TopicStarter Overlay
    oranges

    oranges Бывалый

    Регистрация:
    15 май 2016
    Сообщения:
    169
    Лучших ответов:
    0
    Рейтинги:
    +38 / 16 / -0
    Сейчас все заново прописал и теперь другая, немного от
    Спасибо большое! Помог настроить!
     
    • Нравится Нравится x 1
  18. igrovik

    igrovik Местный

    Регистрация:
    11 дек 2016
    Сообщения:
    1.007
    Лучших ответов:
    8
    Рейтинги:
    +355 / 12 / -0
    Не за что.
     
Похожие темы
  1. never3d22
    Ответов:
    9
    Просмотров:
    1.707
  2. Bashmak
    Ответов:
    2
    Просмотров:
    395
  3. oranges
    Ответов:
    3
    Просмотров:
    982
Загрузка...
Яндекс.Метрика