Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Вывод новостей на отдельной странице

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


     07.01.2014    Общие вопросы по PHP    2486

вопрос
Есть скрипт который выводит новости на отделенную страницу, но он не умеет выводить новости из под категорий и выводит все, что есть в 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
4

189 | 28

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

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

rocksmart
64

307 | 115

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
4

189 | 28

Westus - 31 марта 2014 22:02 - Юзер

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

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

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