Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Вывод новостей на отдельной странице

Вывод новостей на отдельной странице


     07.01.2014    Все вопросы » Общие вопросы по PHP    4794

вопрос
Есть скрипт который выводит новости на отделенную страницу, но он не умеет выводить новости из под категорий и выводит все, что есть в short_story, а нужен только текст. Кто может допилить его за отделенную плату?
Вот сам скрипт:

<?php
include("engine/api/api.class.php");
$siteurl = "http://site.ru";

$row = $dle_api->take_news(15, "id,date,title,short_story");

$i = 0;
while($row[$i] != "")
{
    echo "<a href='".$siteurl."/index.php?newsid=".$row[$i]['id']."'><b>".$row[$i][title]."</b></a>";
    echo "<br>".$row[$i]['short_story']."";
    echo "<br>";
    $i++;
}
?>

Ответил: rocksmart


<?php
define ( 'DATALIFEENGINE', true );
include("engine/modules/functions.php");
include("engine/api/api.class.php");
$siteurl = "http://site.ru"; //$config['home_url']

/* настройки */

$cat = '1,4';                                  // - категории новостей, через запятую
$fields = 'id,date,title,short_story';       // перечень получаемых полей новостей или * для всех
$start = '0';                                 // начальное значение выборки
$limit = '10';                                  // количество новостей для выборки, 0 - выбрать все новости
$sort = 'id';                                  // поле, по которому осуществляется сортировка
$sort_order = 'desc';                           // направление сортировки
$length_text = '222';         // длина обрезания текста, оставляем без указания тект будет выводиться весь

$row = $dle_api->take_news($cat, $fields,$start,$limit,$sort,$sort_order);
//echo'<pre>';print_r($row);echo'</pre>';

$i = 0;
while($row[$i] != "")
{

// Выводим только текст
$row[$i]['short_story'] = str_replace( "</p><p>", " ",$row[$i]['short_story'] );
$row[$i]['short_story'] = strip_tags($row[$i]['short_story'], "<br>" );
$row[$i]['short_story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $row[$i]['short_story'])))));
if($length_text AND dle_strlen($row[$i]['short_story'], $config['charset'] ) > $length_text ) {
$row[$i]['short_story'] = dle_substr($row[$i]['short_story'], 0, $length_text, $config['charset'] );
if( ($temp_dmax = dle_strrpos($row[$i]['short_story'], ' ', $config['charset'] )) ) $row[$i]['short_story'] = dle_substr($row[$i]['short_story'], 0, $temp_dmax, $config['charset'] );
}
                
echo "<a href='".$config['home_url']."index.php?newsid=".$row[$i]['id']."'><b>".$row[$i][title]."</b></a>";
    echo "<br>".$row[$i]['short_story']."";
    echo "<br>";
    $i++;
}

//http://pro-script.ru/ rocksmart wmr R355489577439
?>

3 комментария

Westus
Юзер

Westus - 7 января 2014 12:07 -

Работает, но есть проблема. Выводит новости которые не опубликованы.

rocksmart
Юзер

rocksmart - 7 января 2014 16:47 -

Ха косяк api .

Вносим правку в api.class.php

ДОбавляем $condition .= 'and approve=1';// добавляем это

/**
         * Получение новостей
         * @param $cat string - категории новостей, через запятую
         * @param $fields string - перечень получаемых полей новостей или * для всех
         * @param $start int - начальное значение выборки
         * @param $limit int - количество новостей для выборки, 0 - выбрать все новости
         * @param $sort string - поле, по которому осуществляется сортировка
         * @param $sort_order - направление сортировки
         * @return array - ассоциативный 2-х мерный массив с новостями
         */
        function take_news ($cat, $fields = "*", $start = 0, $limit = 10, $sort = 'id', $sort_order = 'desc')
        {
            if ($this->dle_config['allow_multi_category'] == 1)
            {
                $condition = 'category regexp "[[:<:]]('.str_replace(',', '|', $cat).')[[:>:]]"';
            }
            else
            {
                $condition = 'category IN ('.$cat.')';
            }
            
            $condition .= 'and approve=1';// добавляем это
            
            return $this->load_table (PREFIX."_post", $fields, $condition, $multirow = true, $start, $limit, $sort, $sort_order);
            
        }

Westus
Юзер

Westus - 31 марта 2014 22:02 -

А как еще картинки с дополнительных полей вывести?

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх