Тарифы Услуги Сим-карты

Cвоя новостная лента на PHP

Что объединяет все информационные сайты? Что обязательно присутствует на главной странице? Если вы подумали о новостях, то оказались правы! Сегодня мы с вами разберемся как раз в том, как сделать собственную новостную ленту с админкой и защитой на php. Заранее скажу, что дело это совсем не сложное, но и не двухминутное, так что запаситесь всем, что вам нужно (пивом, колой, соком, чипсами...) и вперед! Для начала продумаем структуру новостной ленты. Безусловно, мы будем использовать mysql, а как же без него! В mysql-базе, которую назовем mynews, будут храниться данные. Какие? Cейчас объясню. Разместим в базе mynews таблицу под названием news. А в таблице - вот что:

News_id - MediumInt длина 9 AutoIncrement, это будет primary key.
Ntext - текст новости, тип Text.
Ntitle - заголовок новости, тип varchar, длина 255
Ndate - это дата, varchar, длина 255
Nuser - а это имя автора новости, varchar, длина 255.

Как все это создать? Почитайте предыдущие тексты на этом сайте, там есть вся необходимая информация. А от себя могу посоветовать отличную, очень удобную программу Mysql-Front, в которой все таблицы создаются визуально. Но идем дальше. Теперь разберемся в том, какие скрипты нужно написать. Я предлагаю написать следующие: admin.php, сreatenews.php (этот скрипт и будет создавать новость), tnews.php (будет отображать новость). Можно было написать скрипт и для удаления новостей, но это вы сможете сделать и сами после выполнения упражнения. Итак, начнем. Для начала напишем скрипт createnews.php. В нем пока будет мало понятного, но все станет на свои места после того, как вы посмотрите на листинг admin.php.

Листинг 1. Createnews.php

"". addslashes ($ ntitle)."" // эта строка нужна для того, чтобы в заголовке правильно отображались кавычки.

Как видите, вместо mysql-даты используется varchar, так проще. Теперь, чтобы все в рассмотренном скрипте встало на свои места, нужно написать админку. Напишем.

Листинг 2. Admin.php

Добавление новостей Добавление новостей Заголовок новости:
Ваше имя:
Текст

Очевидно, используется простая html форма. Так зачем же создавать php-скрипт? Затем, что мы совершенно не подумали о безопасности. Безопасность админки можно обеспечить, запретив доступ случайным пользователям, не знающим логин и пароль. Злоумышленник сможет узнать пароль только тогда (и не раньше), когда получит доступ к скрипту, т.е. к директории. Измените admin.php следующим образом:

Листинг 3. Модифицированный admin.php

Добавление новостей Добавление новостей Заголовок новости:
Ваше имя:
Текст

Давайте разберемся в написанном скрипте. В самом начале двум переменным присваиваются текущие логин и пароль, затем осуществляется проверка введенных. Если введенные данные содержат " (пусто), или не равны тем, что хранятся в переменных, выводится печальная для ][акера надпись "Неверное имя пользователя или пароль". В противном случае выводится "Авторизация прошла успешно" и идет html -код. В самом конце описана форма ввода.

С админкой все. Теперь переходим к скрипту, который будет выводить новостную ленту.

Листинг 4. tnews.php:

На что здесь следует обратить внимание? Во-первых, на запрос

$request = "SELECT ntext , ntitle , ndate , nuser FROM news ORDER BY ndate DESC LIMIT 15";

Здесь написано вот что: выводить новости, отсортированные по дате, причем на странице показывать только 15 первых новостей. Функция mysql _ fetch _ array ($ result) возвращает массив, который записывается в переменную $ row . Для тех, кто не знает, что такое & nbsp, говорю: это свободное пространство. Все, что осталось сделать - вставить tnews в некоторую готовую страничку, например вот так:

Include("./tnews.php")

Вот и все, что я хотел рассказать. Если появятся вопросы, задавайте их смело на нашем .

В первой части данного руководства мы дали вам подробную информацию о том, как применять RSS-кодинг (Really Simple Syndication) в целях публикации бесплатных новостей и ссылок на любом сайте.

Целью данного руководства является рассказать вам о том, как добавить больший по объемам новостной модуль, горизонтальную ленту новостей, а также ленту в формате списка.

Давайте же приступим. Идея интеграции бесплатного новостного контента и ссылок в собственный веб-сайт или блог может заинтриговать, но вероятно вам захочется охватить большую область, нежели маленький модуль с 4-мя ссылками. Также, вы вероятно захотите единовременно интегрировать целый список новостей, нежели вручную копаться в RSS-кодинге, чтобы указать разные источники. Идеальным решением в данной ситуации будет лента новостей, предназначенная для нескольких источников.

Модуль вертикальной ленты новостей

Для того чтобы настроить ленту, скопируйте код, приведенный ниже, в головную секцию любой веб-страницы. Весь массив строк должен быть расположен после тэгов title и meta, прямо перед закрывающим тэгом head:


@import url("http://www.google.com/uds/solutions/dynamicfeed/gfdynamicfeedcontrol.css");

#feedControl {
margin-top: 20px;
margin-left: auto;
margin-right: auto;
width: 440px;
font-size: 16px;
color: #9CADD0;
}



function showControl() {
var feeds = [
{title:"CNN",
url:"http://rss.cnn.com/rss/edition_world.rss"},
{title:"NY Times",
url:"http://feeds.nytimes.com/nyt/rss/World"},
{title:"Reuters",
url:"http://feeds.reuters.com/Reuters/worldNews"}];


{numResults: 6, stacked: true,
title: "World News"});
}
google.load("feeds", "1");
google.setonloadCallback(showControl);

В том месте в теле документа, где бы вы хотели отобразить новостную ленту, расположите следующую строку кода:


Как и в случае с небольшой новостной лентой, о которой мы говорили в предыдущем посте, здесь присутствуют опции оформления. Например, выражение margin-left в разделе feedControl выставлено на auto, и это центрирует модуль в соответствующей области.

Если вы захотите сместить его влево, все, что вам потребуется, это изменить указанный параметр на 0px.

#feedControl {
margin-top: 20px;
margin-left: 0px;
margin-right: auto;
width: 440px;
font-size: 16px;
color: #9CADD0;
}
Три источника, которые входят в список, это: CNN, The New York Times и Reuters. Если вы захотите изменить любой из них, или использовать код АПИ Feed таким образом, чтобы оно охватывало все темы новостей, то просто замените существующие URL на желаемые.

Например, чтобы «заставить» источник The Times транслировать только тему Религии, вам нужно сделать следующее замещение:

Http://feeds.nytimes.com/nyt/rss/World
поменять на:

Http://feeds.nytimes.com/nyt/rss/NYRegion
Число отображаемых ссылок также может быть изменено. Для того чтобы изменить стандартное количество новостей (6) для каждого источника на 4, вам просто нужно будет изменить следующую строку:

{numResults: 4, stacked: true,
Когда страница будет загружена, модуль будет похож на этот:


Модуль горизонтальной новостной ленты

Если у вас есть пространство в теле какой-нибудь страницы, то вы, вероятно, захотите сэкономить там как можно больше места, и при этом интегрировать горизонтальную новостную ленту. Пример такой ленты можно наблюдать на всех крупных новостных веб-сайтах, включая даже BBC.co.uk.

Для этого нам нужно будет изменить следующие строки кода в головной секции (в коде, который был приведен выше):

{title:"", (remove the news source name from each of the designated areas)

new GFdynamicFeedControl(feeds, "feedControl",
{horizontal: true,
Когда страница будет загружена на сервер после отмеченных изменений, вы сможете наблюдать горизонтальный модуль вроде этого:


Новостная лента в виде списка

В качестве примера для более свободного стиля новостной ленты давайте взглянем на новостной модуль в виде списка. Он не ограничен никакими рамками, и текстовое наполнение адаптируется к любой веб-странице, и перенимает уже ранее указанный шрифт.

Для того чтобы начать, расположите следующий код в головную секцию, под тэгами title и meta, прямо перед закрывающим тэгом head:


google.load("feeds", "1")
Далее, в раздел веб-страницы, где вам необходимо отображать новостной блок, добавьте следующий код:

var feedcontainer=document.getElementById("feeddiv")

var feedlimit=10
var rssoutput="Latest New York Regional News:

    "

    function rssfeedsetup(){
    var feedpointer=new google.feeds.Feed(feedurl)
    feedpointer.setNumEntries(feedlimit)
    feedpointer.load(displayfeed)
    }

    function displayfeed(result){
    if (!result.error){
    var thefeeds=result.feed.entries
    for (var i=0; i