Редактор темы

Реклама
Реклама

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

  • Автор темы Автор темы Frosty
  • Дата начала Дата начала

Frosty

Забанен
Регистрация
31 Мар 2017
Сообщения
935
Рейтинг реакций
134
Баллы
43
Возраст
37
1/3
Автор темы
Была необходимость вывести на главной, в краткой и в слайдере не весь список жанров и стран у новости а только по 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 не меняются!
 
Последнее редактирование:
Что бы жанр выводился с заглавной буквы
год, страна и один жанр... зачем на пхп делать какую-то функцию, когда это просто в стили быстрее прописать:
Код:
text-transform: capitalize; /* Каждое слово начинается с заглавной буквы */
text-transform | htmlbook.ru
 
Автор темы
год, страна и один жанр... зачем на пхп делать какую-то функцию, когда это просто в стили быстрее прописать:
Код:
text-transform: capitalize; /* Каждое слово начинается с заглавной буквы */
text-transform | htmlbook.ru

Есть и такой вариант, кому как нравится, нагрузки все равно никакой не влечет.
 
Есть и такой вариант, кому как нравится, нагрузки все равно никакой не влечет.
время выполнения скрипта не влияет на количество вызываемых скриптом функций? Я конечно не прогер, но думаю что выполнение каждой функции занимает какое то время работы скрипта, но стили css - не влияют на работу пхп кода и выполняются в браузере на стороне пользователя.
 
Автор темы
😕
 
Последнее редактирование:
dle 12.1 не работает к сожалению.
 
А что не поулчается? какую ошибку видите? тестировалось на 11.3
А тупо не открываeтся сайт. Пишет типа "Ошибка в файле ..snow.short.php, в такой-то строке"

если память не изменяет то в этой
$tpl->set( '{genre_one}', mb_ucfirst($genres[0], 'utf-8'));
 
Проверьте все изменения
я уже другой выход нашел, пускай не один жанр отображается, но строка одна. Да и не по феншую, взять ту же хдрезку, когда находишься в категории боквики, а под постером отображатся к примеру жанр "фантастика". Лучше так:

K0VxuHds.png
 
Так вроде работает. Жанры вводятся с заглавной буквы в файле 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}', "" );
}
 
Последнее редактирование:
Хак для актёров, по умолчанию если больше 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);
 
Последнее редактирование:
а как сделать вывод одной категории(если они не в доп поле)?
 

Похожие темы Последние темы Популярные темы

Назад
Сверху