Я практически закончил плагин голосовалки - остается дотестировать и кое какие мелочи. Встал вопрос о динамическом показе результатов прямо в форме. В посте находится законченный html формы, и в форме есть только результаты на момент генерации формы. Кстати после подачи голоса, результаты голосования обновляются прямо в странице, но это уже после голосования. Необходимо показывать всем. Можно было бы решить вопрос прямой вставкой в пост php кода, но тогда каждый раз будут дергаться результаты голосования при каждом обращении к странице, вне зависимости от состояния кеша. Необходимо выдавать результаты в контенте поста - а дальше не следует контролировать контент: будет ли он кэшироваться или нет не дело плагина. Таким образом задача переформулируется следующим образом: необходимо при каждом обращении к свойству content отдавать новые данные. Как же это сделать? Внедрять php код? Если php, то как отличить php, который выполняется только сейчас, а который останется в кеше? На мой взгляд - никак. Однозначно внедренный php код должен выполнятся на любом обращении к странице. Как быть? Вводит новую сущность - а ля динамические данные? А не слишком ли усложнит это понимание работы движка? Там, где сложно, там и ломается. Вставить в форму сигнатуру, а потом сделать замену текста на результаты голосования? И поставить обработчик на событие $posts->beforecontent или aftercontent? Вполне возможно, но мне кажется такой подход накладным: придется обрабатывать весь контент постов, вне зависимости от того, есть ли в нем голосование или нет. Фишка блоголёта в том, что все его функции используются только тогда, когда вызываются, а иначе их как бы и вовсе нет.

В блоголёте есть механизм добавления новых тегов в ttemplate?, но тогда нужно будет парсить средствами менеджера темы такой код. В таком случае становиться вопрос как быть в тексте поста с этими тегами, которые должны документировать сами теги, ну по другому - как отличить теги, которые должны работать, от тех, которые должны остаться простым текстом? Как пример - выше есть тег $posts.content и он должен остаться этим же текстом, а не быть замененным на свое значение? Экранировать символы $? Кажется мне это плохой вариант. Как быть?

Решение с парсингом темой части текста поста мне кажется хорошим решением. Ну например тег html code ведь трансформируется в и внутри него можно использовать теги html, для того чтобы проиллюстрировать сам html. Почему бы не ввести симметричный тег для парсинга темы? Например добавить такую штуку


<!--parsetheme-->
псевдо код в формате темы, например $options.name $post.title
<!--/parsetheme-->

Но мне кажется это лишней сущностью - если хочется чтобы посты интерпретировались бы темой, то в настройках безопасности можно добавить галочку запрета/разрешения обработки поста как шаблона темы. Если хочется процитировать код как текст, то для этого уже есть одна понятная сущность - html code. Таким образом дело пока сводится к всего одной галочке. Обыкновенное использование $somename одиночного символа $ не нужно заключать в тег code, так как тема обрабатывает строго конструкции одного вида $object.property

Так, начав писать о голосовалке, дошел то обработки поста, как шаблона темы. А как же быть с голосовалкой? Предположу, что вставил тег $poll.votes то как же тогда определить о какой конкретно идет голосование? Узнать из контекста - в посте поглядеть id голосования. А если в посте несколько голосований, то как отличить одно от другого? Ставить в начале и в конце спецтеги? Например $polls.start_id где id - это как раз и id голосования, а в конце (на всякий случай) $polls.end а сами теги будут возвращать пустые строки. Вполне как вариант, а в методе __get обрабатывать свойства вида start_*