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

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

DLE [хак] вывод одного жанра, страны

Тема в разделе "Хаки DLE", создана пользователем Frosty, 30 янв 2018.

30.01.18 в 18:14
05.05.19 в 20:32
14
2.163
0
  1. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    941
    Лучших ответов:
    1
    Рейтинги:
    +188 / 18 / -0
    Была необходимость вывести на главной, в краткой и в слайдере не весь список жанров и стран у новости а только по 1 штуке, то есть внутри новости у нас идет минимум по 2-5 жанра по стандарту если выводим доп полем, например
    Код:
    [xfvalue_country]
    или
    Код:
    [xfvalue_genre]
    , а так же может быть несколько стран.
    VPAV-MkGQvC1tM2BO0NG4g.png

    А на главной теперь будет выводится так

    123.png

    Открываем файлы: show.full.php и ищем
    Код:
    if( $count AND dle_strlen( $xfieldsdata[$value[0]], $config['charset'] ) > $count ) {
                              
                            $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $count, $config['charset'] );
                              
                            if( ($temp_dmax = dle_strrpos( $xfieldsdata[$value[0]], ' ', $config['charset'] )) ) $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $temp_dmax, $config['charset'] );
                          
                        }
          
                        $tpl->set( $matches[0], $xfieldsdata[$value[0]] );
          
                    }
                }
            }
    

    после вставляем:
    Код:
    //Дата выхода
             if($xfieldsdata['premiere_rus']){
             $date_full = array();
             list($date, $trash) = explode(',', $xfieldsdata['premiere_rus']);
             list($d, $m, $y) = explode(' ', $date);
             $date = $d . ' ' . $m;
             $tpl->set('{date_full}', $date);
              } else {
             $tpl->set('{date_full}', '');
             };
    В шаблоне в нужно месте вставляем {date_full}
    В коде не забываем менять значением доп поля premiere_rus везде где встречается на свой доп поле

    Открываем файл: show.custom.php и show.short.php и ищем строку
    Код:
    $row['title'] = stripslashes( $row['title'] );
    Выше вставляем:
    Код:
        //Вывод одного жанра
    if($xfieldsdata['genre']) {
    $genres = explode(',', $xfieldsdata['genre']);
    $tpl->set( '{genre_one}', mb_ucfirst($genres[0], 'utf-8'));
    } else {
    $tpl->set( '{genre_one}', "" );
    }
    
    //Вывод одной страны
    if($xfieldsdata['country']) {
    $countrys = explode(',', $xfieldsdata['country']);
    $tpl->set( '{country_one}', mb_ucfirst($countrys[0], 'utf-8'));
    } else {
    $tpl->set( '{country_one}', "" );
    }
    В шаблоне в нужном месте выводим тегами: {genre_one} и {country_one}, в коде который вставили, не забываем изменять genre и country на свои доп поля.

    Что бы жанр выводился с заглавной буквы, открываем файл: fubctions.php и в самом низу добавляем код:
    Код:
    function mb_ucfirst($string, $encoding)
    {
    $strlen = mb_strlen($string, $encoding);
    $firstChar = mb_substr($string, 0, 1, $encoding);
    $then = mb_substr($string, 1, $strlen - 1, $encoding);
    return mb_strtoupper($firstChar, $encoding) . $then;
    }
    Обратите внимания при смене названия доп поля на свое, значения $countrys и $genres не меняются!
     
    #1 Frosty, 30 янв 2018
    Последнее редактирование: 31 янв 2018
  2. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.204 / 74 / -0
    год, страна и один жанр... зачем на пхп делать какую-то функцию, когда это просто в стили быстрее прописать:
    Код:
    text-transform: capitalize; /* Каждое слово начинается с заглавной буквы */
    text-transform | htmlbook.ru
     
  3. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    941
    Лучших ответов:
    1
    Рейтинги:
    +188 / 18 / -0
    Есть и такой вариант, кому как нравится, нагрузки все равно никакой не влечет.
     
  4. byroot

    Забанен

    Регистрация:
    10 окт 2015
    Сообщения:
    12.297
    Лучших ответов:
    54
    Рейтинги:
    +5.204 / 74 / -0
    время выполнения скрипта не влияет на количество вызываемых скриптом функций? Я конечно не прогер, но думаю что выполнение каждой функции занимает какое то время работы скрипта, но стили css - не влияют на работу пхп кода и выполняются в браузере на стороне пользователя.
     
    • Согласен Согласен x 2
  5. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    941
    Лучших ответов:
    1
    Рейтинги:
    +188 / 18 / -0
    :confused:
     
    #5 Frosty, 31 янв 2018
    Последнее редактирование: 31 янв 2018
    • Смешно Смешно x 2
  6. 10000

    10000 Бывалый

    Регистрация:
    5 ноя 2017
    Сообщения:
    133
    Лучших ответов:
    2
    Рейтинги:
    +36 / 5 / -0
    dle 12.1 не работает к сожалению.
     
  7. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    941
    Лучших ответов:
    1
    Рейтинги:
    +188 / 18 / -0
    А что не поулчается? какую ошибку видите? тестировалось на 11.3
     
  8. 10000

    10000 Бывалый

    Регистрация:
    5 ноя 2017
    Сообщения:
    133
    Лучших ответов:
    2
    Рейтинги:
    +36 / 5 / -0
    А тупо не открываeтся сайт. Пишет типа "Ошибка в файле ..snow.short.php, в такой-то строке"

    если память не изменяет то в этой
    $tpl->set( '{genre_one}', mb_ucfirst($genres[0], 'utf-8'));
     
  9. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    941
    Лучших ответов:
    1
    Рейтинги:
    +188 / 18 / -0
    Проверьте все изменения
     
  10. 10000

    10000 Бывалый

    Регистрация:
    5 ноя 2017
    Сообщения:
    133
    Лучших ответов:
    2
    Рейтинги:
    +36 / 5 / -0
    я уже другой выход нашел, пускай не один жанр отображается, но строка одна. Да и не по феншую, взять ту же хдрезку, когда находишься в категории боквики, а под постером отображатся к примеру жанр "фантастика". Лучше так:

    K0VxuHds.png
     
  11. tyz75

    tyz75 Посетитель

    Регистрация:
    5 авг 2017
    Сообщения:
    54
    Лучших ответов:
    0
    Рейтинги:
    +1 / 4 / -0
    Так вроде работает. Жанры вводятся с заглавной буквы в файле fubctions.php не надо ничего добавлять.


    PHP:
    $xfieldsdata xfieldsdataload$row['xfields'] );
    if(
    $xfieldsdata['genre']) {
    $genres explode(','$xfieldsdata['genre']);
    $tpl->set'{genre_one}'mb_convert_case($genres[0], MB_CASE_TITLE"UTF-8"));
    } else {
    $tpl->set'{genre_one}'"" );
    }
     
    #11 tyz75, 24 сен 2018
    Последнее редактирование: 7 окт 2018
  12. wawe

    PRO Users

    Регистрация:
    23 янв 2017
    Сообщения:
    3.549
    Лучших ответов:
    6
    Рейтинги:
    +1.574 / 404 / -0
  13. tyz75

    tyz75 Посетитель

    Регистрация:
    5 авг 2017
    Сообщения:
    54
    Лучших ответов:
    0
    Рейтинги:
    +1 / 4 / -0
    Я только немного поправил , в принципе теперь тоже работает;)
     
  14. tyz75

    tyz75 Посетитель

    Регистрация:
    5 авг 2017
    Сообщения:
    54
    Лучших ответов:
    0
    Рейтинги:
    +1 / 4 / -0
    Хак для актёров, по умолчанию если больше 7 актёров будет выводит 7 если меньше то сколько есть, можно менять местами и менять значение. Доп поле для вывода {actors_mod}


    PHP:
    $xfieldsdata xfieldsdataload$row['xfields'] );
    $s explode(','$xfieldsdata['доп поле']);
           if (
    count($s) > 7) {
              
    $actors_mod $s[0]. "," .$s[1]. "," .$s[2]. "," .$s[3]. "," .$s[4]. "," .$s[5]. "," .$s[6];    
          } else {
              
    $actors_mod $s;   
          }
    $tpl->set'{actors_mod}'$actors_mod);
     
    #14 tyz75, 4 окт 2018
    Последнее редактирование: 7 окт 2018
  15. hent4iboys

    Забанен

    Регистрация:
    31 авг 2018
    Сообщения:
    695
    Лучших ответов:
    2
    Рейтинги:
    +139 / 27 / -0
    а как сделать вывод одной категории(если они не в доп поле)?
     
Яндекс.Метрика