Что нового

Определить наличие доп.поля в новости (1 Viewer)

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

deadaphelia

Посетитель
Регистрация
5 Апр 2022
Сообщения
36
Реакции
28
Код:
$pole = "next_episode_at";
$rows = $db->super_query("SELECT * FROM ". PREFIX . "_post", true);
foreach($rows as $value){
if (in_array($pole,$value, false)){
   echo "Поле найдено";}
    else{
  echo "Поле не найдено";}
}
Заранее скажу чтобы не кидались тапками за банальные вопросы, в пхп буквально неделю. Хочу сделать скрипт расписание выхода серий. Сначала скрипт должен определять у каких новостей есть доп.поле(next_episode_at)(пока неважно какая там дата) и на основании этого выводить если ли поле в новости или нет. Почему функция in_array не работает?
Пробовал переводить массив в строку и там уже с помощью strpos он находил, но вернуть такую строку в нормальный массив не получилось.
 
Почему функция in_array не работает?
потому что ты спрашиваешь массив с данными самой новости, а не доп. полей. в таком случае нужно парсить доп. поля
PHP:
$xfields = xfieldsdataload($value['xfields']); // стандартная функция DLE

и потом уже сравнивать
PHP:
if(isset($xfields[$pole])) {
    ...
}
 
потому что ты спрашиваешь массив с данными самой новости, а не доп. полей. в таком случае нужно парсить доп. поля
PHP:
$xfields = xfieldsdataload($value['xfields']); // стандартная функция DLE

и потом уже сравнивать
PHP:
if(isset($xfields[$pole])) {
    ...
}
о
потому что ты спрашиваешь массив с данными самой новости, а не доп. полей. в таком случае нужно парсить доп. поля
PHP:
$xfields = xfieldsdataload($value['xfields']); // стандартная функция DLE

и потом уже сравнивать
PHP:
if(isset($xfields[$pole])) {
    ...
}
PHP:
$date = strtotime('today');
$date2 = strtotime("+1 day",$date);
$date3 = strtotime("+1 day",$date2);
$date4 = strtotime("+1 day",$date3);
$date5 = strtotime("+1 day",$date4);
$date6 = strtotime("+1 day",$date5);
$date7 = strtotime("+1 day",$date6);
$pole = "next_episode_at";
$rows = $db->super_query("SELECT * FROM ". PREFIX . "_post WHERE xfields LIKE '%{$pole}|%'",true);
foreach($rows as $value){
$xfields = xfieldsdataload($value['xfields']);
$t = ($xfields[$pole]);
$d = mb_substr($t,0,10);
$d = strtotime($d);
if($d == $date ){
    $Arr_today[] = $value;}
elseif ($d == $date2){
    $Arr_tommorow2[] = $value;}

elseif ($d == $date3){
    $Arr_tommorow3[] = $value;}

elseif ($d == $date4){
    $Arr_aaattommorow4[] = $value;}

elseif ($d == $date5){
    $Arr_aaattommorow5[] = $value;}

elseif ($d == $date6){
    $Arr_aaattommorow6[] = $value;}

elseif ($d == $date7){
    $Arr_aaattommorow7[] = $value;}

else{
    $arr_all[] = $value;
}
}
Я понимаю, что возможно это бред и некрасиво, но как можно например из массива $Arr_today[] вывести новости в привычном виде?
 
да, пойдет даже на примере короткой.
сначала надо продумать макет, либо найти библиотеку календаря. К примеру: https://fullcalendar.io/docs/month-view-demo

Далее, отталкиваясь от шаблона нужно продумать из чего должен состоять сам базовый макет. Т.е., определить зависимости.
1650566508708
пример

Определив составные, нужно создать шаблонизаторы.
К примеру, день:
PHP:
                $tpl_day = new dle_template();
                $tpl_day->dir = TEMPLATE_DIR;
                $tpl_day->load_template( 'calendar_day.tpl' );

Ну, как дальше прописывать теги для шаблона можно посмотреть в show.full или show.short.

Нужно сразу прояснить. Основной элемент - это месяц, который содержит дни. Значит, при помощи foreach обрабатываем дни и под конец добавляем их к месяцу. Месяц оформляется под конец. Как-то так.

Думаю, принцип понятен.
 
сначала надо продумать макет, либо найти библиотеку календаря. К примеру: https://fullcalendar.io/docs/month-view-demo

Далее, отталкиваясь от шаблона нужно продумать из чего должен состоять сам базовый макет. Т.е., определить зависимости.
Посмотреть вложение 1360
пример

Определив составные, нужно создать шаблонизаторы.
К примеру, день:
PHP:
                $tpl_day = new dle_template();
                $tpl_day->dir = TEMPLATE_DIR;
                $tpl_day->load_template( 'calendar_day.tpl' );

Ну, как дальше прописывать теги для шаблона можно посмотреть в show.full или show.short.

Нужно сразу прояснить. Основной элемент - это месяц, который содержит дни. Значит, при помощи foreach обрабатываем дни и под конец добавляем их к месяцу. Месяц оформляется под конец. Как-то так.

Думаю, принцип понятен.
Ну с ходу сложно конечно дойти, но я буду пытаться, спасибо за план)
 
сначала надо продумать макет, либо найти библиотеку календаря. К примеру: https://fullcalendar.io/docs/month-view-demo

Далее, отталкиваясь от шаблона нужно продумать из чего должен состоять сам базовый макет. Т.е., определить зависимости.
Посмотреть вложение 1360
пример

Определив составные, нужно создать шаблонизаторы.
К примеру, день:
PHP:
                $tpl_day = new dle_template();
                $tpl_day->dir = TEMPLATE_DIR;
                $tpl_day->load_template( 'calendar_day.tpl' );

Ну, как дальше прописывать теги для шаблона можно посмотреть в show.full или show.short.

Нужно сразу прояснить. Основной элемент - это месяц, который содержит дни. Значит, при помощи foreach обрабатываем дни и под конец добавляем их к месяцу. Месяц оформляется под конец. Как-то так.

Думаю, принцип понятен.
Решил попробовать вывести хоть что-то
Код:
$tpl_1 = new dle_template(); $tpl_1->dir = TEMPLATE_DIR;    $tpl_1->load_template( 'calendar.tpl' );
$tpl_1->set( '{num}', $pole );
$tpl_1->compile( 'calendar' );
прописал это в начало пхп, создал файл calendar.tpl в нем 1 сточка {num}. Почему оно ничего не вывело?
 

я реально советую посмотреть как работают файлы show.full и show.custom. Можно многое из них подчеркнуть.

Почему оно ничего не вывело?
echo $tpl_1->result('calendar');
 
сначала надо продумать макет, либо найти библиотеку календаря. К примеру: https://fullcalendar.io/docs/month-view-demo

Далее, отталкиваясь от шаблона нужно продумать из чего должен состоять сам базовый макет. Т.е., определить зависимости.
Посмотреть вложение 1360
пример

Определив составные, нужно создать шаблонизаторы.
К примеру, день:
PHP:
                $tpl_day = new dle_template();
                $tpl_day->dir = TEMPLATE_DIR;
                $tpl_day->load_template( 'calendar_day.tpl' );

Ну, как дальше прописывать теги для шаблона можно посмотреть в show.full или show.short.

Нужно сразу прояснить. Основной элемент - это месяц, который содержит дни. Значит, при помощи foreach обрабатываем дни и под конец добавляем их к месяцу. Месяц оформляется под конец. Как-то так.

Думаю, принцип понятен.
получилось что-то вывести, не знаю насколько это мне поможет через
echo $tpl_1->result['calendar'];
 

Пользователи, просматривающие данную тему

Верх