Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #27, ФЕВРАЛЬ 2003 г.

ЖЕМЧУЖНЫЙ САЙТ - cкриптинг на перле

Леха ББ ака Alexys

Спецвыпуск Xakep, номер #027, стр. 027-026-5


Обработка текста статей

Для начала создай папку, где будут находиться тексты статей (например, папка arts). Если их много и у них есть свои тематики, то можно раскидать их по рубрикам, точнее по вложенным папкам. Картинки, прилагаемые к статьям, запихни в папку arts/screens. В верхней строке файла с текстом статьи на всякий случай оставь ее название - если потом кто-то найдет ошибку в статье, то ее придется исправить ручками, а с указанным вверху названием статьи ты наверняка не ошибешься с выбором файла. В местах, где идут картинки, укажи имя файла картинки и через ;; напиши к ней комментарий:

library.gif;;Библиотеки разные бывают

Это, конечно, утомительная работенка, но это лучше, чем писать полностью пути к картинкам:

<img src="/screens/library.gif" border=0><br>Библиотеки разные бывают

Немного ниже расскажу, как все обрабатывать.

if ($input{'act'} eq "read")

{

$chart=$input{'art'};

# $input{'art'} - значение параметра art, который был передан скрипту из списка

# это уже знакомо

$artindfile=$homedir.'index.txt';

open(AA1, "$artindfile");

@ind=<AA1>;

close(AA1);

for ($q=0; $q<@ind; $q++)

{

chomp($ind[$q]);

}

($date, $folder, $chname, $chauthor, $fname)=split(/;;/,$ind[$chart]);

# присваивание переменным значений из выбранной строки индексного файла

# $folder - имя папки (вложенной в arts), к которой относится статья

# $chname - название выбранной статьи

# $fname - имя файла выбранной статьи

# $chauthor - автор статьи

$artfolder=$homedir.$folder;

# путь к папке с выбранной статьей

$artfile=$artfolder.'/'.$fname.'.txt';

# путь к файлу с выбранной статьей

open(AA2, "$artfile");

@arts=<AA2>;

close(AA2);

print "<center>\n";

print "<h1>$chname</h1>\n";

print "<div><b>Автор статьи</b>: $chauthor</div>\n";

print "<br></center>\n";

print "<div>\n";

for ($qw=0; $qw<@arts; $qw++)

{

chomp($arts[$qw]);

# так как имена файлов картинок идут с расширением gif или jpg, находятся они на отдельных строках, а следом через ;; идет комментарий, то все подобное, что встретится в тексте статьи, будет преобразовано в тэги с подставленными путями к картинкам и комментариям к ним

if (($arts[$qw]=~".gif;;") || ($arts[$qw]=~".jpg;;"))

{

($imgname, $subscr) = split(/;/,$arts[$qw]);

print "<center>\n";

print "<img src=$mydir\/arts/screens\/$imgname border=0 alt=\"$subscr \">\n";

print "<div style=\"font-size: 11px;\">";

print "$subscr";

print "</div>\n";

print "</center>\n";

$qw++;

}

print " $arts[$qw]\n<br>\n";

}

print "</div>\n";

print "<br><center>\n";

print "<a class=\"a1\" href=\"$script\">Вернуться к списку статей</a>\n";

print "</center>\n";

}

В результате имеем быстро генерящийся список статей с линками на них и сами статьи, которые весьма неплохо выглядят. Осталось только вниз страниц запихнуть дубль навигации. Это, конечно, прибавит веса html-страницам, которые выдаются в ответе, но разницу в килобайт, а то и еще меньше, мало кто заметит. А не прокручивать страницу наверх для перехода в другой раздел - это уже хоть какая-то забота о посетителях сайта. Тебе это теперь сделать легко, а другим приятно будет. Менюшка опять будет браться из файла navi.txt, как и верхняя. Но для внесения разнообразия можно немного поменять цвет фона меню. Для этого в свойствах таблицы просто укажи другой цвет.

Назад на стр. 027-026-4  Содержание  Вперед на стр. 027-026-6