sonyps4.ru

Скрипт новостной ленты. Делаем классную ленту изображений с автопрокруткой

Данная статья написана для людей, которым в силу непреодолимых обстоятельств приспичило срочно изучить Перл. Для меня таким обстоятельством стало то, что мой компьютер стал WEB-сервером, а я, соответственно, WEB-мастером. Учиться принято на чужих ошибках и опыте, поэтому предлагаю Вашему вниманию свой опыт изучения Перла.

Сразу нужно пояснить, для кого это все написано. Если Ваш сервер работает на платформе UNIX, то это я должен читать Вашу статью. У меня же установлен Windows NT workstation 4.0 (RUS) плюс Service Pack 3. Когда пришло время сделать из компьютера WEB-сервер, я было кинулся ко встроенным Службам узла WEB, но быстро понял, что это мне не нравится (почему?). И тут один добрый человек посоветовал поставить Xitami WEB Server от iMatix Corporation (), который и стоит по сей день.

Что касается самого Перла, то здесь несколько сложнее. Покопавшись по различным Перловым серверам (www.perl.org , www.perl.com) я узнал, что версий Перла настолько много, что выбрать что-нибудь конкретное довольно сложно. При этом каких-нибудь вразумительных рекомендаций по поводу выбора той или иной версии нигде нет. Перепробовав почти все версии для Windows, я остановил свой выбор на Active Perl ().

Человеку, избалованному всякими Виндовозами и Дельфями, писать программы на Перл довольно непривычно, поэтому настоятельно рекомендую сразу установить Perl Builder. Взять его можно на www.solutionsoft.com. Там лежала тридцатидневная Демо версия.

Ну, думаю, пора переходить непосредственно к делу. В общем случае, скрипт на Перл, как и любая другая программа, работает так:

  • получает данные
  • обрабатывает данные
  • выдает результаты
  • Передать данные скрипту можно двумя методами - GET и POST. Разница между ними в том, что при использовании GET данные постоянно болтаются в строке адреса браузера, напимер:

    Httр://treagraf.tasur.edu.ru/cgi-bin/price.pl?Category=POWER&Description=varta

    В этом случае скрипт B_price.pl берет данные в переменной окружения QUERY-STRING.

    $data=$ENV{"QUERY_STRING"};

    При использовании метода POST данные передаются на стандартный вход скрипта. Длинна блока данных берется в переменной CONTENT_LENGTH:

    Read(STDIN,$data,$ENV{"CONTENT_LENGTH"});

    Теперь эти данные нужно перевести в удобоваримый вид, поскольку они закодированы.

    Стандартным соглашением служит замена пробелов знаками плюс и затем кодировка оставшихся недопустимых символов с помощью ASCII-кодов в шестнадцатиричной форме, перед которыми ставится знак (%). Пример:

    Http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl\ ?Category=%C2%E8%E4%E5%EE&Description=%E0%E1%E2%E3

    Это значит:

    Http://treagraf.tasur.edu.ru/cgi-bin/B_price.pl?\ Category=Видео&Description=абвг

    Декодировать строку запросов в первый раз лучше самому. На вопрос "а как?" есть множество ответов, переписывать которые нет смысла. Приведу лишь короткий пример:

    Заменяем знаки (+) на пробелы

    $query = ~ s/\+/ /g;

    Потом заменяем все сочетания знака (%), после которого следуют шестнадцатиричные цифры, на соответствующий символ ASCII

    $query =~ s/%({2})/pack("C", hex($1))/eg;

    Я пользуюсь тем, что предлагает Perl Builder:

    #! E:\perl5\bin\perl &GetFormInput; # вызов подпрограммы получения данных $Category = $field{"Category"}; # получаем данные из поля Category $Description = $field{"Description"}; # получаем данные из поля Description $Page = $field{"Page"}; # получаем данные из поля Page

    В конце скрипта помещаем подпрограмму "прозрачного" чтения данных.

    Sub GetFormInput { (*fval) = @_ if @_ ; local ($buf); if ($ENV{"REQUEST_METHOD"} eq "POST") { read(STDIN,$buf,$ENV{"CONTENT_LENGTH"}); } else { $buf=$ENV{"QUERY_STRING"}; } if ($buf eq "") {return 0;} else { @fval=split(/&/,$buf); foreach $i (0 .. $#fval){ ($name,$val)=split (/=/,$fval[$i],2); $val=~tr/+/ /; $val=~ s/%(..)/pack("c",hex($1))/ge; $name=~tr/+/ /; $name=~ s/%(..)/pack("c",hex($1))/ge; if (!defined($field{$name})) { $field{$name}=$val; } else { $field{$name} .= ",$val"; #if you want multi-selects to goto into an array change to: #$field{$name} .= "\0$val"; } } } return 1; }

    Второй этап работы скрипта - обработка данных - полностью на Ваше усмотрение. Проверяйте полученные данные на правильность, пишите их в файл, делайте что хотите.

    И, наконец, Вам нужно выдать какие-то результаты броузеру клиента, причем так, чтобы броузер правильно их отобразил. То есть, выдавать результаты нужно в HTML. Это делается просто: (тоже можно по-разному)

    Print "Content-type: text/html", "/n/n"; #обязательная строка print "

    В поле Category Вы ввели: ", $Category, "

    Все это касается скриптов, получающих данные из формы на странице HTML. При этом страница с формой - отдельно, скрипт - отдельно. Можно сделать красивее и удобнее: объединить страницу и скрипт в единое целое. Для этого скрипт пишется по схеме:

  • При первом запуске скрипт рисует HTML страницу с формой и ссылкой в тэге ACTION на самого себя. Первый запуск определяется по отсутствию входных данных.
  • Если входные данные есть, то получаем их, обрабатываем и выдаем результаты.
  • #! E:\perl5\bin\perl if (($ENV{"QUERY_STRING"} eq "") or ($ENV{CONTENT_LENGTH}=0)) { # генерируем страницу с формой } else {# получаем данные, обрабатываем и выдаем результат}

    Гостевая книга

    Общий алгоритм работы гостевой книги таков:

    1. Если посетитель хочет сделать запись в книгу, то
    1.1 Получаем данные
    1.2 Записываем их в файл или в базу данных
    1.3 Говорим спасибо на HTML и предлагаем почитать другие записи
    2. Если посетитель хочет почитать записи в книге, то
    2.1 Читаем записи из файла или из базы данных
    2.2 Выводим их красиво в HTML

    Для удобства восприятия я оформил пункты 1 и 2 отдельными скриптами add_guestbook.pl и read_guestbook.pl соответственно. Сообщения гостевой книги хранятся в текстовом файле построчно, т.е. на каждую запись - строка. Так сделано для удобства чтения этого файла. Пример одной записи:

    Sat Dec 5 13:31:20 1998&Наташа&студентка&Good&Для начала хорошо. Успехов на данном поприще Вам, Александр!&нету@пока&194.226.60.34

    Вот описание полей рассматриваемой гостевой книги.

    • Name - имя, фамилия, отчество, кличка - на усмотрение посетителя
    • Work - профессия, род занятий
    • RadioButton - три кнопки: понравилось (Good), не понравилось (Bad), пофигу (Different)
    • Text - text box комментариев и примечаний
    • Email - обратный адрес

    Типы данных используются в программах при объявлении переменных. Короче говоря, тип данных определяет то множество значений, которые может принимать переменная, а также набор операций,которые программа может выполнять с ней. В языке Perl данные могут быть числом или строкой символов.

    Одно значение называется скалярной величиной или просто скаляром. Ниже приведены примеры скалярных значений, которые используются в языке Perl:
    - Десятичные: 127 или 127.0 или 1.27Е2
    - Шестнадцатиричные: Ox7F или 0x7f
    - Восьмеричные: 0177 (первый 0 указывает, что используется восьмеричное число)
    - Строка: "Hello World\n" или "Hello World"

    Например, следующая команда использует отладчик Perl для того,чтобы вывести число 0177 восьмеричной системы, соответствующеечислу 127 десятичной:

    DB р 0177 127

    Perl переводит данные в свой внутренний формат. Когда Perl печатает восьмеричные или шестнадцатиричные значения, он сначала переводит их в десятичный формат, как было показано.

    Примечание: Как вы узнаете, скрипт Perl позволяет использовать функцию printf для того, чтобы выводить, значения в вызываемом формате, в таком как восьмеричный или шестнадцатиричный.

    В качестве внутреннего представления всех чисел используется формат с плавающей запятой двойной точности (double). Иными словами, среди внутренних форматов нет целочисленного. Тем не менее, в большинстве случаев вы можете не обращать на это внимания, и Perl сделает все сам как надо. Например, если вы используете величины в контексте, где только целочисленные значения имеют смысл, Perl сам автоматически усечет число.

    Примечание: Если вы программируете на С и использовали целочисленное деление с усечением целых чисел автоматически, то, программируя на языке Perl, надо не забыть выполнить усечение вручную, используя функцию int().

    Следующая команда иллюстрирует, как Perl обрабатывает числа целого типа и с плавающей запятой:

    Print 6 & 3; # выведет 2 print 6.9 & 3.1 # print 7 / 2 # выведет 2.3333 не целое print int(7/3) # выведет 2

    Точно так же, как Perl преобразует числа с плавающей запятой в целые числа: когда скрипт использует целочисленные значения, он также преобразует числа в строки и наоборот, когда такое преобразование имеет смысл. Например, если скрипт использует числа в контексте, где только строки имеют смысл, например, при соединении строк, он конвертирует числа в строки. Аналогичным образом, если требуется использовать строки там, где только числа имеют смысл, то Perl конвертирует их в числа. Работая со скриптами Perl, обычно не надо беспокоиться о внутреннем представлении скалярных величин.

    Perl поддерживает также концепцию булевых значений, но не имеет для их описания специального типа. Как и в С, численное значение рассматривается истинным, если оно не равно нулю. Дополнительно строковое значение рассматривается как истинное, если оно не равно "" или "0". Некоторые булевы операторы,такие как > (больше), возвращают единицу в качестве значения и нуль - в качестве .

    Тем самым, ваш скрипт должен просто рассматривать ненулевые величины как строчного типа,так и числового в качестве булева значения . Скрипты Perl могут группировать скалярные величины вместе и создавать список (list). Если скрипт хранит список в какой-то переменной,то эта переменная становится массивом (array).

    ПЕРЕМЕННЫЕ

    Perl поддерживает три типа переменных: скаляры, массивы и ассоциативные массивы. Как и в языке С, имена переменных пишутся с различением строчных и заглавных букв. Таким образом, имена VAR, Var и var описывают различные переменные. Скрипт может иметь скалярную переменную под именем var и переменную-массив, также названную var. Они будут различаться в языке Perl в соответствии с контекстом.

    Примечание: Переменные Perl нетипизированы, как это делается и в С. Например, скалярная переменная может содержать любой тип скаляра, и приведение типов осуществляется автоматически. Также, как вы могли уже заметить, переменные на языке Perl необязательно должны быть объявлены. Если переменная не объявлена, то Perl рассматривает ее как глобальную. Ниже вы познакомитесь с объявлением переменных и их областью видимости.

    СКАЛЯРНЫЕ ПЕРЕМЕННЫЕ

    Как отмечалось, скалярная переменная может содержать единственное значение. В языке Perl имена скалярных переменных всегда начинаются со знака ($). В следующем выражении скалярной переменной $age присваивается значение 35, а переменной $name строковое значение . Затем используется функция print для вывода значения каждой из переменных:

    $age = 35; $name = "Bob"; print ($name,"is",$age);

    Если вы сохраните эти выражения в файле под именем SCALAR.PL, то сможете запустить программу следующим образом:

    C:\PERL> Perl SCALAR.PL Bob is 35

    МАССИВЫ

    Как было сказано выше, массивы представляют собой переменные, принимающие в качестве значения список из скалярных величин.Следующий текст программы на языке Perl иллюстрирует объявление переменных типа массив и их инициализацию:

    @days = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat"); print(@days); # выведет "SunMonTueWedThuFriSat" print($days); # выведет "Thu" @weekdays = @days; # значение ("Mon","Tue","Wed","Thu","Fri") @emptylist = (); # постой список

    Ссылка на переменные типа обычно начинается со знака (@) и сопровождается значениями в квадратных скобках ().Как и в программировании на языке С, индексами массивов для скриптов всегда являются переменные целого типа, которые обычно начинаются с нулевого значения. Вы увидите исключения из этих двух правил в примерах, которые будут объясненены в этой главе.Третье выражение ($days) служит примером массива, который ссылается на скалярное значение. Поскольку он содержит только один элемент, результирующее значение представляет собой скаляр.

    Если использовать знак ($) вместо знака (@), то скрипт будет ссылаться на скалярную величину. Это замечание является очень важным. Квадратные скобки указывают, что скрипт ссылается на массив.Знак $, в свою очередь, означает ссылку на скалярную величину.Инициализация массива @weekdays осуществляется путем выборки части массива @days. В предыдущем примере массив @days использовался без индекса. Когда индекс опущен, Perl ссылается на весь массив. Аналогичным образом, в предыдущем примере массив @days инициализировался списком литералов.

    Кроме того, что массиву могут присваиваться в качестве значений литералы, скрипт может также присваивать массивам значения переменных или даже других массивов, как показано ниже:

    @stuff = ($age, $name) @FriendsOfMine = ("Joe","Mary", @FriendsOfYours);

    В следующем примере используются части массивов:

    @weekend = @days ; # результат ("Sun","Sat") print (@days); # выведет "MonTueWedThuFriSunSat"

    Если скрипт использует переменную типа массив в контексте скаляра, то значением служит число элементов массива. Скалярным контекстом является такой контекст, где только скалярные значения имеют смысл. Например, следующее выражение использует скалярный контекст для массива stuff для того, чтобы определить число элементов содержащееся в массив. Если число элементов, больше или равно 2, то скрипт выдает сообщение и заканчивает исполнение:

    (@stuff >= 2) || die "Too much stuff! \n";

    Функция die служит директивой языку Perl закончить выполнение и выдать при этом указанное сообщение. Если сообщение не содержится, то функция просто заканчивает выполнение скрипта.

    Perl также поддерживает специальную конструкцию $# переменная, которая возвращает последнее значение индекса в массиве. Например,следующее выражение for использует $[ для того, чтобы определить начальное значение индекса массива, и $# для определения последнего из элементов массива. При этом с помощью выражения for выводятся значения каждого из элементов:

    For ($i =$[; $i member. Кроме того, в языке Perl реализовано много новых операторов для использования в таких операциях как сравнение и обработка строк.

    АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ

    Арифметические операторы действуют на числовые значения, и их результатом является число. Если выражение включает строковые операнды, то Perl конвертирует строковые значения в числовые перед тем, как оценить выражение. Perl выполняет преобразование строк в числа подобно тому, как это делает функция atof() языка С в библиотеки времени выполнения. В настоящее время Perl поддерживает следующие арифметические операторы:
    - + сложение
    - - вычитание или изменение знака
    - * умножение
    - / деление (только для чисел с плавающей запятой)
    - % взятие по модулю (только для целочисленных значений)

    Рассмотрим примеры следующих арифметических операций языка Perl:

    $x = 2.5; $y = 3; print ($x + 2*$y); # выведет 8.5 print (7 / $y); # выведет 2.3333333 print int (7 / $y); # выведет 2 print (7 % $y); # выведет 1 print (7.5 % $y); # выведет 1

    Примечание: В языке Perl оператор деления всегда имеет результатом число с плавающей точкой, а результатом взятия одного числа помодулю другого является целое число и причем предварительно оба операнда преобразуются к целому типу.

    Рассмотрим следующую операцию взятия по модулю:

    Print (7.9 % 3.6); # выведет 1 то же (7 % 3) = 1

    Perl также поддерживает операторы инкремента и декремента:
    - ++ декремент в префиксной или постфиксной форме
    - - инкремент в префиксной или постфиксной формеРассмотрим примеры операций инкремента и декремента:

    $x = 4; ++$x; print $x; # выведет 5 $y = $x-; # уменьшит x после присвоения y значения x print "$y $x" # выведет 5 4

    Наконец, Perl обеспечивает арифметический оператор для возведения в степень (**). Рассмотрим следующие примеры использования операции возведения в степень:

    $x = 2 ** 3; # результат 8 $x = 2 ** 0.5; # квадратный корень из 2 $x = -2 ** -3; # 1/(-2 в кубе), результат -1/8 (-0.125)

    ПОБИТОВЫЕ ОПЕРАТОРЫ

    Побитовые операторы воздействуют на бинарное представление целых чисел и имеют целочисленный результат. Если операндом является строка или дробное число, Perl предварительно преобразуетего в целое число, обрабатывает операнд, используя 32-битноепредставление. Все побитовые операторы С представлены в языкеPerl:
    - | побитовое ИЛИ
    - & побитовое И
    - ^ побитовое исключающее ИЛИ
    - ~ побитовая инверсия
    - > сдвиг вправо

    Рассмотрим следующие примеры побитовых операций:

    $x = 5; # 101 в двоичном $y = 3; # 011 в двоичном print $x | $y; # 7 (111) print $x & $y; # 1 (001) print $x ^ $y # 6 (110) print $x & ~1; # 4 (100) print $x > 1 # 2 (10)

    Так же как в С, поведение операторов сдвига вправо зависит отреализации язы ка в случае, если операнд является отрицательным.

    ОПЕРАТОРЫ СРАВНЕНИЯ

    Операторы сравнения сравнивают величины двух операндов. Также как при работе с арифметическими операторами, Perl преобразует строчные операнды в численные перед тем, как выполнять сравнение. Для того чтобы позволить скрипту сравнивать строки, которые не являются числами, Perl имеет дополнительные операторы строкового сравнения. Эти операторы сравнивают строки, используявеличины ASCII. Если численное значение задано как операнд присравнении строк, оно сначала преобразуется в строку. Таблица 12.1перечисляет операторы сравнения:

    Число Строка Значение = = eq равно!= nе не равно > gt больше чем < it меньше чем >= gе больше или равно >logfile.dat") || die; ############## ($m, $d, $y) = (localtime(time)) ; print LogFile "Captain"s log, Stardate ++m$/$d/$y\n"; close(LogFile);

    Примечание: Указатель файла и выходной список не разделяются запятой.

    ЧТЕНИЕ И ЗАПИСЬ БЛОКОВ ДАННЫХ

    Программисты часто рассматривают текстовые файлы как текстовые потоки просто потому, что один символ следует за другим до маркера конца файла. Если скрипт должен работать с файлом, который ориентирован на работу с блоками, а не потоками, то скрипт может использовать функции sysread и syswrite для обработки фиксированных блоков данных. Функции sysread и syswrite имеют следующие форматы:

    $result = sysread(FileHandle, $Var, Length[, Offset]); $result = syswrite(FileHandle, $Var, Length[, Offset]);

    Если в вызове функций указывается сдвиг от начала файла(Offset), то функции выполнят поиск места, с которого они начнутоперации ввода/вывода. Функции sysread и syswrite обе передаютданные, используя скалярную переменную строкового типа. Поскольку функции обрабатывают фиксированные блоки памяти, то данные могут содержать бинарные значения, включая нули и маркерыконца файла. Если в вызове функции указывается сдвиг от началафайла (Offset), то функция выполняет поиск места в файле, с которого начинает выполнять операции ввода/вывода. Если вы работаете с блоками данных, то скрипты могут также использовать следующие функции ввода/вывода:

    $result = seek(FileHandle, Position, Base); $result = tell(FileHandle); $result = eof(FileHandle);

    Функция seek работает в точности так же, как fseek - функция библиотеки времени выполнения языка С. Параметр Position задает позицию относительно начала отсчета, которая в свою очередьзадается параметром Base следующим образом:


    - 0 Поиск от начала файлов
    - 1 Поиск от текущей позиции
    - 2 Поиск от конца файла

    Функция tell языка Perl работает в точности так же, как фикция ftell библиотеки времени выполнения языка С. Эта функция возвращает текущую позицию в файле, с которой выполняются операциичтения или записи. Наконец, функция eof, так же как и функцияfeof языка С, возвращает значение или , которое скрипт может использовать для определения достижения концафайла.

    ОБРАБОТКА БИНАРНЫХ ДАННЫХ

    Хотя Perl ориентирован в первую очередь на обработку текста, он также может обрабатывать бинарные данные. Скрипты могут перемещать бинарные данные частями, используя строковые переменные, и выполнять байтовые операции ввода/вывода, используя функции sysread и syswrite. Однако для того, чтобы выполнить что-нибудь с данными, скрипт вынужден конвертировать данные в свои скалярные форматы.

    ХРАНЕНИЕ БИНАРНЫХ ДАННЫХ

    Когда скрипт на языке Perl читает блок бинарных данных, используя функцию sysread, он помещает эти бинарные данные в скалярную строковую переменную. Perl не заботится о том, что это заданные, содержат ли они нули или значения, не являющиесяASCII-символами. В пределах символьной строки Perl принимает байты как байты. В отличие от языка С, Perl не использует строк,оканчивающихся нуль-символом. Если данные соответствуют кодовойтаблице ASCII, то скрипт может их обрабатывать, как любой текст.Но если данные представляют собой бинарные величины, то скрипт обязан распаковать их перед тем, как Perl сможет обработать этиданные.

    РАСПАКОВКА СТРОК БИНАРНЫХ ДАННЫХ В ПЕРЕМЕННЫЕ ЯЗЫКА PERL

    Для того чтобы скрипт получил доступ к бинарным данным, ондолжен распаковать их, перейдя в свой скалярный формат. СкриптыPerl распаковывают данные, используя функцию unpack, котораяимеет следующий формат:

    $result = unpack(Template, Expression);

    Expression является обычной строковой переменной, которая содержит бинарные данные, прочитанные функцией sysread, но можетбыть также выражением, которое необходимо интерпретировать какстроку. Template представляет собой символьную строку-шаблон,описывающую, как интерпретировать значения в операнде Expression.Следующий фрагмент программы иллюстрирует использование функции unpack:

    ($r, $g, $b) = unpack("C3", $color);# распакует в 3 символа
    - @longwords = unpack("L*", $data); # распакует в список длинных # слов @stuff = unpack("S2L", $bin); # распакует в 2 shorts и long

    Каждый символ шаблона может сопровождаться числом, указывающим, сколько раз использовать этот символ. Если вместо числа стоит звездочка (*), то операция будет выполняться для всех остающихся данных в строке. Если число не поставлено, то она выполняется однократно. Скрипт может поместить любое число символов шаблона в строку Template. В таблице 12.4 перечисляются символы,входящие в строковый параметр Template вместе с описанием влияния каждого из них на выполнение функции unpack.

    Табл. 12.4. Символы шаблона

    Символ шаблона Описание
    a
    А Строка ASCII без нулевого символа
    b Битовая строка (младший бит идет первым)
    В Битовая строка (старший бит идет первым)
    с Однобайтовый символ со знаком
    С Однобайтовый символ без знака
    d Значение с плавающей запятой, двойной точности
    f Значение с плавающей запятой, одинарной точности шаблона
    h Строка шестнадцатиричных значений (младшие разряды идут первыми)
    Н Строка шестнадцатиричных значений (старшие разряды идут первыми)
    i Целое со знаком
    I Целое без знака
    l Целое со знаком типа long
    L То же, только без знака
    n Короткое целое
    N Длинное целое
    p Указатель на строку
    s Короткое целое со знаком
    S Короткое целое без знака
    u Раскодировка строки
    v Короткое целое
    V Длинное целое
    x Пропустить вперед один байт
    X Пропустить назад один байт
    @ Перейти на указанную позицию в строке
    УПАКОВКА ДАННЫХ В БИНАРНЫЕ СТРОКИ

    Для вывода бинарных данных скрипт должен запаковать скалярные величины в строки бинарных символов. Для этого используется функция pack, формат которой указан ниже:

    $result = pack(Template, List);

    Следующий фрагмент программы иллюстрирует использование функции pack:

    $color = pack("C3", $r, $g, $b); $data = pack("L*", @longword); $bin = pack("S2L", @stuff);

    Функция pack использует те же самые символы шаблона, что и функция unpack, за исключением символов а. А, и, х, X, @.

    РАБОТА С КАТАЛОГАМИ

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

    ОТКРЫТИЕ, ЧТЕНИЕ И ЗАКРЫТИЕ КАТАЛОГОВ

    Скрипты на языке Perl позволяют открывать и читать содержимое файлов. Точно так же эти скрипты открывают каталоги и читают имена содержащихся в них файлов. Для открытия каталога скрипты используют функцию opendir, передавая указатель каталога и путь к нему. Для чтения списка файлов, содержащихся в каталоге, скрипт использует функцию readdir. Наконец, для закрытия каталога используется функция closedir. Следующий фрагмент программы иллюстрирует использование функции readdir для того, чтобы вывести на экран список файлов в текущем каталоге:

    Opendir(Dir, $INC) || die; while ($file = readdir(Dir)) { print "$file \n" } closedir(Dir);

    В этом фрагменте используется переменная $INC для доступа к текущему каталогу. Изменяя $INC на $ARGV, скрипт выводит на экран список файлов, содержащихся в каталоге, который вы указали в командной строке.

    В дополнение к функциям для работы с каталогами, которые были рассмотрены выше, Perl предлагает еще набор функций, которые позволяют позиционировать текущий указатель в списке каталога:

    $result = rewinddir(DirHandle); $result = telldir(DirHandle); $result = seekdir(DirHandle, Position);

    ФОРМАТИРОВАННЫЙ ВЫВОД

    В этой главе вы познакомились с несколькими способами форматирования выходных данных скрипта с помощью функции print. Аналогично языку С, Perl также поддерживает функции printf и sprintf.В дополнение Perl также поддерживает генерацию отчетов в форместолбцов, используя шаблоны форм.

    ИСПОЛЬЗОВАНИЕ ФУНКЦИИ PRINT

    В этой главе скрипты широко использовали функцию print. Кроме того, Perl обеспечивает специальные переменные, которые влияют на работу функции print. В таблице 12.5 кратко характеризуются эти специальные переменные.

    Табл. 12.5. Специальные переменные, которые управляют функцией печати

    Для использования этих специальных переменных достаточно просто присвоить им значения, которые вы хотите. Например, в следующем фрагменте программы используется переменная $ для того,чтобы задать сепаратор между элементами печати:

    $, = "*"; @list = 1..10; print @list; # Выведет 1*2*3*4*5*6*7*8*9*10

    Оказывается, что переменная $ на самом деле воздействует на все строки, а не только на те, которые выводятся на печать. Однако чаще всего вы будете использовать ее для того, чтобы изменить значение, выводимое функцией print.

    ФОРМАТИРОВАННЫЙ ВЫВОД ДАННЫХ ФУНКЦИЕЙ PRINTFPerl имеет функции printf и sprintf, которые очень похожи насоответствующие функции библиотеки времени выполнения языка С.Они имеют следующий формат: $result = printf( Format, List); $result = sprintf(Format, List);

    По умолчанию функция printf посылает форматированный выходна стандартный выход STDIO, а функция sprintf возвращает форматированную строку. В обоих случаях формат строк почти аналогичен функциям языка С, исключая только отсутствие поддержки функциямиязыка Perl спецификатора длины (*). Следующий фрагмент программы иллюстрирует использование функций printf и sprintf.

    $precision = 2; $pi = 3.1415; printf("%.2f\n", $pi); # выведет 3.14 printf("%.${precision}f", $pi); # выведет 3.14

    ВЫЗОВ ВНЕШНИХ ПРОГРАММ ИЗ СКРИПТА НА ЯЗЫКЕ PERL

    Будучи в известном смысле заменой скриптов shell, Perl обеспечивает поддержку системного взаимодействия, включая вызов внешних программ. В следующих разделах рассматривается несколько способов вызова внешних программ из скриптов Perl. Имейте, однако, ввиду, что позволяя скриптам выполнять системные команды, вы темсамым открываете бреши в системе безопасности вашего узла. Придерживайтесь общего правила не выполнять внешних команд из скрипта на языке Perl. Тем не менее, если вы вынуждены выполнять внешние команды из скрипта, то можете использовать для этих целейвстроенные функции system, exec или fork.

    РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

    На протяжении этой главы вы познакомились с примерами функций для обработки строк. Многие из них основаны на концепции регулярных выражений. Как вы видите из следующих разделов, скрипты языка Perl широко используют регулярные выражения для обработки текста. Если регулярные выражения внове для вас, то не беспокойтесь. Спустя короткое время после того, как вы познакомитесь снесколькими разделами этой главы, регулярные выражения станут длявас просты и понятны.

    ОБЗОР РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ

    Регулярные выражения являются причудливым термином, возникшим в компьютерной науке и служащим для обозначения образца, состоящего из символов. Скрипты на языке Perl используют символьныеобразцы просто для того, чтобы провести анализ входных данных,расщепляя их на части. Часто скрипт может проанализировать входные данные, основываясь на пробелах, запятых, символах табуляциии других разделителях. Но когда входные данные имеют произвольный формат то лучше всего с такой задачей справляются регулярные выражения.

    СИНТАКСИС РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ

    Для сокращения размеров регулярных выражений, Perl использует специальные символы. Таблица 12.6 содержит список некоторых из символов, используемых скриптами языка Perl в регулярных выражениях.

    Табл. 12.6. Символы, используемые в регумрных выражениях

    Символ Описание
    . Соответствует любому символу (за исключением символа новой строки)
    (..) Группирует последовательность элементов
    + Удовлетворяет предыдущему образцу один или большее количество раз

    -
    Удовлетворяет образцу нуль или один раз
    * Соответствует образцу один или нуль раз
    [...] Соответствует символу из заданного множества
    [^...] Соответствует символу из множества, полученного отрицанием
    (...|...|...) Соответствует одной из альтернатив
    ^ Соответствует началу строки
    $ Соответствует образцу в конце строки
    {n,m} Соответствует образцу от n до m раз
    {n} Соответствует образцу точно n раз
    {n,} Соответствует образцу минимум n раз
    \n\t etc. Соответствует знаку новой линии, символу табуляции и т. д.
    \b Соответствует на границе слова
    \B Соответствует внутри границ слова
    \d Соответствует цифре
    \D Соответствует не цифре
    \s Соответствует пробелу
    \S Соответствует не пробелу
    \w Соответствует букве или цифре
    \W Соответствует символу, не являющемуся ни буквой, ни цифрой

    Perl помещает регулярные выражения (образцы, шаблоны) в слэши, т. е. в наклонные черточки, например, в виде /pattern/. Следующий фрагмент программы иллюстрирует регулярные выражения языка Perl:

    # the following regular expressions are true if: /ig/ # string contains "ig" /(b|d|f)ig/ # string contains "big", "dig" or "fig" /+/ # string contains a number /*/ # string contains an identifier

    Если эти выражения кажутся вам бессмысленными, не беспокойтесь. В этой главе мы собираемся рассмотреть несколько регулярных выражений. Сейчас просто запомните, что Perl помещает регулярные выражения между двумя наклонными чертами-слэшами, как показано выше.

    ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ ДЛЯ ПОИСКА ПО КЛЮЧЕВЫМСЛОВАМ

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

    If ($str =~ /pattern/)

    В данном случае регулярные выражения принимают значение , если образец найден в строке ($str). Если строка по содержит образца, то выражение возвращает значение . Например, следующее выражение проверяет, содержит ли строка текст WebProgramming:

    If ($str =~ /Web Programming/)

    Для того, чтобы проверить полное совпадение, выражение должно привязать сравнение к началу и концу строки. Например, следующее выражение имеет значением величину , если итолько если переменная $str принимает одно из трех значений:, ) :

    ($str =~ /^ba(na) {2,4}$/)

    Аналогичным образом, следующее выражение истинно тогда итолько тогда, когда переменная $str содержит слово и не является частью другого слова, такого как .

    ($str =~ /\bthe\b/)

    ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ ДЛЯ АНАЛИЗА ВХОДНЫХ ДАННЫХ

    По мере усложнения ваших скриптов Perl возникнет много случаев, когда вы захотите узнать больше, чем просто проверить, совпадает ли образец со строкой или нет. Например, может потребоваться, чтобы скрипт извлек определенное значение строки.Используя символы группировки () внутри регулярного выражения,скрипт может извлечь соответствующие образцу значения из строки и сформировать из них список. Например, следующий фрагмент программы использует регулярные выражения для того, чтобы извлечь месяцы, дни и годы из списка:

    $str = " January 1, 1997, "; ($m, $d, $y) = $str =~ /\s*(\S*)\s + (\d+)\D + (\d{4})/;


    - Пропустить вначале любой специальный символ;
    - записать все символы, не являющиеся специальными, в переменную $m
    - (переменная для обозначения месяцев);
    - пропустить специальный символ;
    - поместить все цифры в переменную $d (переменная для записи дней);
    - пропустить все знаки, не являющиеся цифрами;
    - записать четыре цифры в переменную $у (переменная для обозначения лет).

    Perl поддерживает также другую форму сравнения с образцом,использующую оператор (=~), который добавляет отрицание результата: (!~). Этот оператор эквивалентен выражению!($str=~/pattern/).

    РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ ДЛЯ ПОИСКА И ЗАМЕНЫ СТРОК

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

    $str =~ s/pattern/replacement/;

    Например, следующая инструкция заменит слово на:

    $str =~ s/\bcolour\b/color/;

    Небольшая модификация позволяет заменить все слова на :

    $str =~ s/\bcolour\b/color/g;

    В данном случае g в конце выражения указывает языку Perl нанеобходимость глобальной подстановки.

    Используя суффикс i, можно задать выполнение поиска с учётом регистра. В противоположность простой проверке на соответствие образцу, следующее выражение осуществляет также и замену:

    $str =~ tr/SearchList/ReplacementList/;

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

    $str =~ tr/a-z/A-Z/; # меняет регистр, с нижнего на верхний

    Проанализируйте сами следующий пример:

    $letters = "abcde"; print "$letters\n" # Выведет abcde $letters =~ tr/a-z/A-Z/; print "$letters\n" # Выведет ABCDE

    РЕЗЮМЕ

    В этой главе рассмотрено введение в программирование на языке Perl. Используя рассмотренные здесь концепции, можно писать сложные скрипты CGI на языке Perl. Следующая глава окажет вам помощь в получении навыков в создании CGI-скриптов на языке Perl,которые можно запустить на собственном сервере. Прежде чем следовать далее, удостоверьтесь, что вы понимаете следующие ключевыеконцепции:

    Perl представляет собой интерпретируемый язык программирования,который используется программистами для написания скриптов дляWeb и Internet.

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

    Perl является основным языком для написания CGI-программ дляWeb и Internet, в первую очередь благодаря своей гибкости, компактному стилю и обеспечению высокой безопасности.

    ВАЖНЕЙШИЕ WEB-УЗЛЫ С ИНФОРМАЦИЕЙ О PERL

    Следующие узлы Web помогут отыскать информацию об интересующих вас деталях относительно языка Pcrl, скриптов на нем, а также специальной информации о ресурсах языка Perl 5 и его библиотеках. Используйте эти Web-узлы в качестве отправной точки вашего поиска.

    РЕЗЮМЕ

    В этой главе вы познакомились с тем, как использовать Perlдля написания достаточно сложных скриптов CGI. Используя ту технику, с которой вы познакомились можете, услуги программиста профессионального уровня вашим клиентам, которые желали бы, чтобы их бизнес был представлен на Web. В главе 14 вы познакомитесь с языком Java. Как вы увидите, язык Java хорошо приспособлен для создания узлов Web, содержащих анимацию и мультимедиа. Дополнительно глава 14 представляет другой язык для написания скриптов JavaScript. Однако перед тем как переходить к главе 14, проверьте, понимаете ли вы следующие ключевые концепции:
    - Perl представляет собой разносторонний и гибкий язык программирования, с помощью которого можно разрабатывать скрипты CGI для Web, а также традиционные программы для каждодневного использования.

    • Perl хорошо приспособлен для обработки текстов, организации доступа к базам данных, он является переносимым языком и обеспечивает безопасность при работе в сетях. Все эти его характеристики являются важными для Web программирования.
    • Для обработки текстов скрипты языка Perl широко используют регулярные выражения.
    • Большинство скриптов на Web в настоящее время написаны на языке Perl. Однако такие языки, как JavaScript и VBScript, могут посягнуть на монополию языка Perl.

    Лента новостей без использования mysql. Устанавливается ввиде модуля на страницу. Имеется админ панель (защищено). Удобен в работе, прост при установке.

    Версия: 1.0

    Простой и удобный движок новостной ленты.

    Основные возможности:

    * удобный и функциональный редактор новостей;

    * поддержка ;

    * возможность смены пароля администратора;

    * предварительный просмотр;

    * отображение сокращенной версии новости на главной странице;

    * отображение полной версии каждой новости отдельно;

    * редактируемый шаблон новости;

    * встраивается директивой include();

    * быстрая установка скрипта, средствами инсталлятора.

    Требования: MySQL и PHP версии не ниже 4.3.

    Версия: 2.0

    Размер файла 118 Kb

    Простенький скрипт новостей, добавление, исправление, удаление.

    Версия: 1.0

    Размер файла 4 Kb

    Cкрипт каталога новостей с поддержкой RSS

    Возможности:

    Новости разбиваются по дням и по страницам

    Автоматическое создание RSS - потока

    Возможность администрирования записей

    Системные требования:

    PHP4 и выше

    База данных MySQL или SQLite

    Версия: 1.2

    Возможность добавлять новости сайта на главную страницу. Администрирование. Не использует mysql. Все новости записуются в текстовый файл. Подробнее в архиве со скриптом.

    Версия: 1.0

    Новостная лента на MySQL и PHP. Очень проста в управлении и настройке. Для установки скрипта, запустите скрипт SQL "query.sql". Будет создана DB lss. Если вы хотите изменить DB то до установки скрипта query.sql, откройте его блокнотом и измените CREATE DATABASE `lss`, вместо lss установите значение вашей DB которое вы хотите. Затем если все прошло удачьно, запустите скрипт install.php и настройте. Скрипт готов к работе.

    Возможности скрипта:

    * Добавление новостей

    * Изменение новостей

    * Удаление новостей

    * Закачька файлов

    Версия: 1.0

    Этот скрипт предназначен для новостеи мира, саита, города и т.д.

    В нём есть:

    1)Функция добавления, редактирования, удаления новостеи

    2)Также имеется возможность комментариев к любои новости

    3)А также есть такая функция как версия для печати новости, то есть распечатания новости в обыкновенном режиме

    4)А также есть счётчик просматривания каждои новости, и количество оставящих комментариев

    Версия: 1.0

    Размер файла 14 Kb

    Новая версия скрипта Vum News! В этой версии появилось несколько новых возможностей!

    Такие как:

    Добавление много изображений в новость

    Поддержка тегов

    Версия: 1.4

    Бесплатный PHP скрипт новостей на основе MySQL.

    Возможности:

    * Простое добавление, редактирование и удаление новостей.

    * WYSIWYG и текстовый редактор.

    * Заменяймые скины.

    Версия: 1.9

    Размер файла 13 Kb

    Скрипт для создания новостей. Имеется админ-панель, работа с шаблонами, удаление, добавление, редактирование новостей. Все настройки через панель админа.

    Версия: 1.3

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

    Возможности:

    Календарь

    Поиск по новостям

    Создание разделов новостей

    Добавление комментариев в новостях

    Поддержка настраиваемых смайликов в комментариях

    Таймер на показ новостей

    Версия: 1.0

    Umbrella это скрипт новостей с открытым исходным кодом (open source) написанный на PHP.

    Фичи/возможности:

    1. WYSIWYG редактор.

    2. Не требуется внешняя БД (MySQL, и т.п. все данные хранятся в текстовых файлах).

    4. Комментирование новостей (регистрация не требуется).

    5. ЧПУ (Человеко-Понятные УРЛы, УРЛы вида http://сайт/news/номерновости/).

    6. Шаблоны (ВСЁ можно контролировать с помощью шаблонов и темплейт-функций).

    7. Документация (немного).

    Версия: 1.02b

    Скрипт для размещения новостей с безграничными возможностями. Вот только неполный список того, что можно сделать на сайте при помощи данного скрипта (и все это без использования mySQL):

    Добавление и редактирования новостей с поддержкой HTML;

    Архивирование и резервное копирование новостей;

    Осуществление поиска по новостям и архиву и мн.др.

    Также существует масса дополнительных плагинов и скинов. А в стандартный дистрибутив входит несколько примеров оформления и вывода новостей на сайте. В русской версии, переведено все, в т.ч. и справка. Также добавлен ряд дополнительных модулей, отсутствующих в базовом пакете.

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

    1. Facio

    Facio представляет собой jQuery -плагин, который отображает последние новости с указанной страницы в Facebook . В виджете также есть кнопка Like . Просто интегрируйте плагин в сайт, укажите адрес страницы и отображайте контент из социальной сети на страницах сайта.

    2. Feedify


    Feedify – jQuery -плагин для конвертации текста в HTML -ленту новостей, как в Twitter и Facebook .

    3. Social Feed


    Social Feed представляет собой jQuery -плагин, который отображает ленту новостей конкретного пользователя из его аккаунтов в нескольких социальных сетях.

    4. MiniTwitter


    MiniTwitter – это jQuery -виджет, с помощью которого можно осуществить ретрансляцию комментариев из Twitter на ваш сайт или блог на основе WordPress .

    5. jFlickrFeed Plugin


    jFlickrFeed Plugin позволяет легко извлекать контент из Flickr , и отображать его на собственном сайте.

    6. zTwitterFeed


    Плагин zTwitterFeed считывает твиты определенных пользователей в Twitter . После чего записи трансформируются в структурированный HTML -код со встроенными CSS -классами.

    7. zFlickrFeed


    Плагин zFlickrFeed умеет извлекать фотографии определенных пользователей Flickr . После чего мы получаем структурированный HTML -код со встроенными CSS -классами.

    8. zLastFM


    Плагин zLastFM извлекает информацию об избранных песнях, недавно прослушанных композициях, любимых альбомах, артистах и композициях из профилей Last.FM (понадобится API-ключ ). После чего плагин выдает структурированный HTML -код со встроенными CSS -классами.

    9. zWeatherFeed


    Плагин zWeatherFeed ретранслирует информацию о текущих погодных условиях из сервиса Yahoo! Weather . Можно указывать одно или несколько географических мест, использовать фоновые изображения, отражающие погодные условия, а также дневное и ночное оформление. Также можно показывать информацию о городе и текущей температуре.

    10. FeedEk


    FeedEk представляет собой jQuery -плагин для парсинга и отображения RSS и Atom -рассылок. Для извлечения данных FeedEk использует Google Feed API . Можно легко получить ленту новостей любого домена без необходимости использовать какие-либо скрипты на стороне сервера.

    11. Ballboy.js


    ballboy.js – jQuery -плагин, который извлекает пользовательские работы из сервиса Dribbble , и отображает их на сайте.

    12. Yunero


    Yunero представляет собой новый jQuery -плагин для отображения ленты новостей из канала в Youtube . Также можно указывать ссылку на плейлисты, из которых нужно показывать видео. Кроме того вместе с виджетом можно отобразить форму подписки на канал, что позволит увеличить количество постоянных пользователей.

    13. Socialist


    Socialist – плагин для отображения новостной ленты из социальных сетей, который комбинирует все каналы в одном месте. Можно показывать единую ленту новостей из Facebook , Twitter , LinkedIn , YouTube , Pinterest , Flickr , Tumblr , Craiglist RSS и других социальных сетей.

    14. jQuery Google Feed


    Google Feed – плагин, с помощью которого разработчики могут смешивать разные новостные ленты на клиентской стороне. Для этого нужно будет просто интегрировать новый API -скрипт от Google .

    15. Fancy News


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

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

    Загрузка...