Помощь Вывести все значения одного доп поля

Тема в разделе "DLE", создана пользователем killoff, 1 окт 2013.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.166
    Симпатии:
    796
    Помогите вывести все значения доп поля по всем новостям. Раньше где-то видел что-то подобное, но найти так и не смог ни на форуме ни в гугле...
     
  2. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    не совсем понятно в каком виде надо вывести.
    Вот держи такой вариант.
    Вывод в виде массива...
    Создаешь файлик в папке modules и в него помещаешь
    PHP:
    <?php
    include ('engine/api/api.class.php'); // подключаем api
    $table 'dle_post';  // название таблицы
    $fields  'xfields'// нужные поля, * - все поля
    $where 'approve=1'// условия выборки
    $multirow 1// забирать ли один ряд или несколько
    $start 0// начальное значение выборки
    $limit 0// количество записей для выборки, 0 - выбрать все

    $xfields $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit);

    print_r($xfields); // вывод на экран количества элементов
    А затем в нужном месте выводишь.
     
    killoff нравится это.
  3. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.166
    Симпатии:
    796
    а как ещё можно добавить свои HTML теги к каждому значению?

    PS забыл добавить закрывающий тег ?> :)
     
  4. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    закрывать не обязательно :pioner:

    лови с выводом элементов массива
    PHP:
    <?php
    include ('engine/api/api.class.php'); // подключаем api
    $table 'dle_post';  // название таблицы
    $fields  'xfields'// нужные поля, * - все поля
    $where 'approve=1'// условия выборки
    $multirow 1// забирать ли один ряд или несколько
    $start 0// начальное значение выборки
    $limit 0// количество записей для выборки, 0 - выбрать все
    $xfields $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit);

    //print_r($xfields); // вывод на экран количества элементов

    foreach($xfields as $value//выводим на экран массив
      
    {
        if(
    $value[xfields]){ //проверяем есть ли элемент в массиве
            
    echo "<strong>"//любой тег ;)
            
    echo $value[xfields]; //выводим значение
            
    echo "</strong>"//любой тег ;)
        
    }
      } 
    PS можно еще сюда добавить кеширование ;)
     
    killoff нравится это.
  5. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.166
    Симпатии:
    796
    все выводит, но только вообще всЁ ((( забыл уточнить что нужно вывести все значения по конкретному доп полю! Как можно добавить кеширование?
     
  6. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    лови с кешем
    PHP:
    <?php
    include ('engine/api/api.class.php'); // подключаем api
    $table 'dle_post';  // название таблицы
    $fields  'xfields'// нужные поля, * - все поля
    $where 'approve=1'// условия выборки
    $multirow 1// забирать ли один ряд или несколько
    $start 0// начальное значение выборки
    $limit 0// количество записей для выборки, 0 - выбрать все


    $xfields $dle_api->load_from_cache (xfields$xfields); //берем наш кеш, если есть конечно ))

    if( !$userblock ) { //проверяем взяли ли мы кеш и если не взяли, то делаем запрос

        
    $xfields $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit); //делаем запрос к бд
        
    }

    $dle_api->save_to_cache xfields$xfields); //сохраняем в кеш

    foreach($xfields as $value//выводим на экран массив
      
    {
        if(
    $value[xfields]){ //проверяем есть ли элемент в массиве
       
            
    echo "<strong>"//любой тег ;)
            
    echo $value[xfields]; //выводим значение
            
    echo "</strong>"//любой тег ;)
        
    }
      } 
    По поводу вывода отдельного доп поля(С этим надо идти в раздел форума посвященном регуляркам и уже с помощью них выводить.)
    Покажи как выводятся у тебя значения всех доп полей для одной записи
    Вроде в таком виде
     
    killoff нравится это.
  7. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    спешиал фо ю
    нашел функцию в дле для обработки доп полей
    Вот готовый выриант
    PHP:
    <?php
    include ('engine/api/api.class.php'); // подключаем api
    $table 'dle_post';  // название таблицы
    $fields  'xfields'// нужные поля, * - все поля
    $where 'approve=1'// условия выборки
    $multirow 1// забирать ли один ряд или несколько
    $start 0// начальное значение выборки
    $limit 0// количество записей для выборки, 0 - выбрать все
    $xfield ''///ИМЯ ДОП ПОЛЯ ДЛЯ ВЫВОДА


    $xfields $dle_api->load_from_cache (xfields$xfields); //берем наш кеш, если есть конечно ))

    if( !$userblock ) { //проверяем взяли ли мы кеш и если не взяли, то делаем запрос

        
    $xfields $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit); //делаем запрос к бд
        
    }

    $dle_api->save_to_cache xfields$xfields); //сохраняем в кеш

    foreach($xfields as $value//выводим на экран массив
      
    {
        if(
    $value[xfields]){ //проверяем есть ли элемент в массиве
       
            
    $row xfieldsdataload($value[xfields]);
            echo 
    "<strong>"//любой тег ;)
            
    echo $row[$xfield];
            echo 
    "</strong>"//любой тег ;)
            
    }
      }
     
    killoff нравится это.
  8. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.166
    Симпатии:
    796
    вот как все выводится:
    Код:
    year|1979||country|СССР||slogan|-||director|Андрей Тарковский||scenario|Аркадий Стругацкий, Борис Стругацкий, Андрей Тарковский||director-of-the-film|Александра Демидова, Вилли Геллер||operator|Александр Княжинский, Георгий Рерберг, Леонид Калашников||composer|Эдуард Артемьев||painter|Александр Бойм, Андрей Тарковский, Шавкат Абдусаламов||editing|Людмила Фейгинова||genre|фантастика, драма, детектив, приключения||premiere|17 апреля 1980||years-old|12||time|163 мин. / 02:43||artist|Александр Кайдановский, Анатолий Солоницын, Алиса Фрейндлих, Николай Гринько, Наташа Абрамова, Файме Юрно, Е. Костин, Раймо Ренди, Сергей Яковлев, Владимир Заманский||vk_filmpack_
    все одним целым идет...
     
  9. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.166
    Симпатии:
    796
    добавил в $xfield = ''; ///ИМЯ ДОП ПОЛЯ ДЛЯ ВЫВОДА имя нужного доп поля, но ничего вообще не вывидится ((((
     
  10. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    вот так вот? кеш удалил(хотя он здесь не при чем)
    PHP:
    <?php
    include ('engine/api/api.class.php'); // подключаем api
    $table 'dle_post';  // название таблицы
    $fields  'xfields'// нужные поля, * - все поля
    $where 'approve=1'// условия выборки
    $multirow 1// забирать ли один ряд или несколько
    $start 0// начальное значение выборки
    $limit 0// количество записей для выборки, 0 - выбрать все
    $xfield 'year'///ИМЯ ДОП ПОЛЯ ДЛЯ ВЫВОДА


    $xfields $dle_api->load_from_cache (xfields$xfields); //берем наш кеш, если есть конечно ))

    if( !$userblock ) { //проверяем взяли ли мы кеш и если не взяли, то делаем запрос

        
    $xfields $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit); //делаем запрос к бд
        
    }

    $dle_api->save_to_cache xfields$xfields); //сохраняем в кеш

    foreach($xfields as $value//выводим на экран массив
      
    {
        if(
    $value[xfields]){ //проверяем есть ли элемент в массиве
     
            
    $row xfieldsdataload($value[xfields]);
            echo 
    "<strong>"//любой тег ;)
            
    echo $row[$xfield];
            echo 
    "</strong>"//любой тег ;)
            
    }
      }
     
    killoff нравится это.