Часто задаваемые вопросы (FAQ-A)
Разметка страниц для команд http:// и ftp://
Версия 1.11 от 12.11.2010
Содержимое полученное с помощью команд http://, ftp:// подвершается фильтрации для того, чтобы в рассылку попал только тот текст, который Вы хотите в ней видеть.
Из страницы берутся только те части, которые попадают между маркерами и содержимое которых изменилось.
Сначала опишем как работают маркеры, а затем - как определяется что содержимое изменилось
Как работают маркеры
Фильтрация страницы по специальным маркерам позволяет не готовить каждый новый выпуск делать в двух варианта - для веба и для рассылки. Вы можете указать части которые: должны быть на сайте, но не попасть в рассылку (банеры например - всё равно в почте не работаю), должны быть в рассылке но не быть видны на сайте (например приветствие подписчикам) или должны быть и на сайте и в рассылке.
При использовании http:// и ftp:// в тексте выпуска маркеры это:
- маркер начала текста - строка, начинающаяся с <!--subscribeBegin
- и маркер конца текста - строка, заканчивающаяся на subscribeEnd-->
При использовании http:// и ftp:// в меню выпуска маркеры это:
- маркер начала меню - строка, начинающаяся с <!--subscribeBeginMenu
- и маркер конца меню - строка, заканчивающаяя на subscribeEndMenu-->
При использовании http:// и ftp:// в дайджесте выпуска маркеры это:
- маркер начала дайджеста - строка, начинающаяся с <!--subscribeBeginDigest
- и маркер конца дайджеста - строка, заканчивающаяся на subscribeEndDigest-->
Сами строки, содержащие маркеры, в рассылку не попадают. Это значит, что их следует писать на отдельных строках HTML-страницы.
Если текст не содержит ни одного маркера начала блока, то он попадает в рассылку целиком - это позволяет Вам ничего не менять при вводе рассылки, если Вам не интересна фильтрация.
Важная особенность команд http:// и ftp:// состоит в том, что если встретились в шаблоне тексте выпуска (а не меню или дайджеста), то кроме обычного результата делается попытка дополнительно найти на скаченой странице блоки для меню и дайджеста.
Если такие блоки будут найдены, то они заменят собой соответственно меню или дайджест письма.
Такое поведение позволяет достичь автоматизиции выпуска рассылки более простым путём - надо подготовить всего одну страниц, вместо двух или трёх при использовании меню и дайджеста. Так же, это позволяет иметь дайджест у выпусков автоматически выходящих по рассписанию.
А вы заметили, что маркер начала не обязан заканчиваться --> , а маркер конца - начинаться с <!--? Упущение? Нет - это специальная возможность очень гибко формировать страницу. Вот пример текста страницы, которая должна быть на вебе в одном виде, а в рассылке - в другом. Надеемся, он всё объяснит. Так же в коде страницы задан дайджест выпуска.
|
Отфильтрованный по описаным тут правилам текст пропускается ещё раз через интерпретатор языка SubScript.
Именно это позволило в дайджесте указать каманду [SUBSCRIBE issue_number] для подстановки номера выпуска, что дало в примере номер 777.
Как определяется что страница изменилась
При выпуске рассылки по рассписанию, может создатся ситуация когда вы не успели выложить новый материал на веб и не успели отменить приближавшийся автоматический выпуск. В результате подписчики получат дубль того, что вышло в прошлый раз.
Для того что бы избежать выхода дублей достаточно снабдить маркер начала текста выпуска параметром uuid для определения версии содержимого (любая строка - время, дата, внутренний номер новости у вас - что вам удобнее).
Для каждой страницы забираемой командами http:// или ftp:// запоминается на будущее только одна - последняя - использовавшаяся там версия.
Если у свежезабраной страницы версия совпала с хранимой, то считается что ничего не изменилось и такая команда http:// (ftp://) вернёт пустое значение. А, если, при выпуске по рассписанию все команды http:// (ftp://) и lenta вернули пусто, то такой выпуск и не выёдет. Что и требовалось.
[НОВОЕ] Специальное значение версии-=-SKIP-=- обозначает что блок надо пропустить. Хранимая версия от этого не изменяется.
Вот пример блока с параметром версии:
<!--subscribeBegin uuid="20080910.abc"
содержимое
subscribeEnd-->
При наличии на странице одного или нескольких блоков ни один из которых не содержит номера версии они все попадут в выпуск вне зависимости ни от чего, а хранимый номер версии изменён не будет.
При наличии на странице только одного блока и при наличии у этого блока параметра версии произойдет фильтрация как описано выше. Хранимый номер версии изменится на номер версии этого блока.
Если на странице будет несколько блоков и у одного (или нескольких) будет номер версии, то блоки с такой страницы попадут в выпуск только если ни одна встреченная на странице версия не совпала с хранимой, а хранимая версия будет заменена на последнюю встреченную при разборе страницы.
Если же у какого-то из этих нескольких блоков версия совпадёт с хранимой, то все блоки этой страницы будут прогнорированы (даже с другой версией, даже без версии вообще) - если вы в состоянии давать всем своим новостям уникальные номера, то вам прямая дорога сделать из них RSS и автоматизировать выпуск на основе него.