Произвольные PHP-скрипты в документах Блоговой Наны.

26 июля 2017, 13:00

Произвольные PHP-скрипты в документах Блоговой Наны.

Кот и бездна.

Перила. Сижу.
Мне так уютно. И пофиг,
Что бездна вокруг.

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

Совсем недавно, переосмысливая, к чему сегодня скатились SEO-движки на примере ЛастоБлога, вовремя реинкарнировавшегося в Блоговую Нану, мы сетовали, что собственно SEO как такового отныне нет. И теперь всё просто - напишите годный текст про актуальное и людям интересное, позвольте прилинковаться на него десятку ресурсов коллективного пользования (назовём это ростом естественной ссылочной массы), и этот «годный текст» будет в первых строчках выдачи всё равно какой поисковой системы. Не сразу, но вскоре.

Однако пользователи, привыкшие к сложно устроенным SEO-движкам, теперь впадают в некоторое недоумение. Потому как предельно простой функционал по сути сводится к сентенции про дурака. А как же впихивать в движок всякие хитрости? Например, на интерпретируемых языках уровня сервера (PHP)?

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

Нас интересует, как PHP скрипт воткнуть в сам пост, чтобы он получил доступ к движку Блоговой Наны, пользовался её данными и какими-то функциями. Раньше такое было нельзя, но теперь вроде как всё можно?

Да. Далее инструкция, как это делается.

Пост-призрак.

Если Вам не нужен документ, воспринимаемый как пост (то есть встраиваемый в категорию, отображаемый на морде блога, и т. д.), то можно в настройках категорий блога создать новую категорию всё равно с каким идентификатором, в ней пост с любой датой размещения и содержимым, его URL запомнить, а саму категорию сразу же удалить.

Понятно, что в общем списке постов такой пост не сыщется (он не принадлежит к разрешённым для отображения категориям), но при прямой адресации к себе всё-таки будет показываться. Это и есть пост-призрак, от которого нужен только его URL, дабы его прилинковать к навигации.

Что нам важно, этот пост способен открыть доступ к внутреннему миру Блоговой Наны, со всеми её внутренними данными и функциями. Последнее особо полезно, так как позволяет создавать куски контента одной строчкой.

PHP скрипт внутри поста-призрака.

Собственно, посту (или любому другому документу Блоговой Наны) совсем не обязательно быть «призраком», чтобы уметь нести в себе произвольный PHP код. Но мы сейчас решаем конкретную задачу.

Для начала следует вспомнить, что, помимо постов и комментариев, а также всякой графики, Блоговая Нана оперирует так называемыми трейлерами («прицепами» к документам), для которых заводится специальная папка - в мануале даже есть раздел про «странное»

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

Сей документ из мануала надо изучить.
Чтобы понимать в дальнейшем, что почём.

Пример 1. Оглавление Блога.

Из навигации видно, что пост-призрак для этого документа имеет URL:
http://lasto.com/blog/index_post_1483207200.htm

В соответствии с правилами формирования имён трейлеров, файл PHP-скрипта станет зваться так:
.blog.index.post.1483207200.0.php

Собственно содержимое поста-призрака нас совсем не интересует, так что тайтл и контент документа мы переназначим, и организуем вместо всего этого многостраничный листинг, заодно сразу с пагинацией.

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

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

Пример 2. Лучшие посты Блога в розыске.

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

Лицезрение такого рейтинга обычно сильно отрезвляет.

Мало ли что думает автор блога о своих талантах написания буковок и избранной генеральной тематике. Реальность всё расставляет по местам - людей интересует нечто совсем иное.

С этого места автору блога обычно становится понятным, в какую сторону стоит развиваться. Так что сервис типа «Лучшие посты Блога в розыске» является совершенно необходимым, и первейшим советником.

Но есть две оговорки.

Первая: Ваша Нана должна быть оборудована статмодулем.
Брендированное название «Нана Любопытствующая»

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

Интерес представляет только поисковый трафик с распознанными поисковыми запросами, но он составляет лишь единицы процентов от валового поискового трафика. Такое поисковиками сделано специально, и именно это убило SEO-ориентированные движки.

Пара уместных ссылок по теме для размышления:

Гугл отнял у вебмастеров и SEO-шников поисковые запросы.
Яндекс окончательно отнял у вебмастеров поисковые запросы.

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

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

Они сначала выстраиваются по популярности для каждой поисковой системы, потом упорядочиваются сами поисковые системы (по количеству таких распознанных запросов с них), а потом это всё выводится на экран под анонсом поста. Но, если листинг велик, наступает его секвестирование.

Поэтому для популярных постов отображается лишь самая «производительная» поисковая система, и лишь кусочек от листинга запросов.

Там, где запросов мало, можно наблюдать весь зверинец.
Хотите сделать иначе - делайте.

Ну и учтите, что статистика по распознанным поисковым запросам накапливается только за последний месяц, так что рейтинг самых отыскиваемых постов будет динамическим. В нём будут взлёты и падения, блеск и нищета - в нём будет всё.

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

Пример 3. На какие посты народ линкуется.

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

На уровне кода всё делается аналогично - забирается лог со статистикой у «Любопытствующей Наны», смотрятся все ссылки с внешних сайтов, ведущие на странички с постами и комментариями к ним, и далее строится рейтинг постов по трафику и числу ссылающихся сайтов.

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

Про всё другое.

При наличии фантазии можно спроектировать иные сервисы, или вообще вставлять PHP-скриты прямо внутрь поста. К примеру, калькуляторы какие-нибудь (если JavaScript никак не покоряется).

Вернее, прямо в коде поста PHP исполняться не будет. Но всегда можно вставить в нужное место поста какой-нибудь специальный тег (например, пустой div с определённым классом), и потом заменить его выводом от скрипта, прицепляемого трейлером к этому посту. При этом POST запросы никак и ничем не блокируются, так что внешний PHP-скрипт способен полноценно работать с данными пользователя.

Ну и то, что стандартный документ Блоговой Наны может работать парсером чего-либо, мимикрировать под распознанный поисковый запрос что-то слегка клоача, нести в себе какой-то интерактивный сервис, и т. п., должно быть уже понятно. Никаких особых затруднений с этим нет.

Причём всё это интересно лишь во взаимодействии с данными или функционалом Блоговой Наны. В противном случае оно способно жить и как стандартный документ самой Наны.

Другие статьи категории «Софт от Мастера Ласто»

Весеннее обострение у Nano CMS.

Весеннее обострение у Nano CMS. Многие, вероятно, заметили, что местный автор в последнее время хоть и неторопливо и постепенно, но определённо планомерно переводил все свои скрипты на движок Наны. Что вряд ли так уж сильно необходимо тому или иному «standalone» скрипту, который пользователю обычно нужен сам по себе, а не в виде сайта.

О Дятлах, Выхухолях, и прочих Печкиных.

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

Кошерная передача данных через web-форму.

Кошерная передача данных через web-форму. Первый уровень абстракции. Однажды местному автору понадобилась функция управления Вселенной из любого места и с любого устройства. Грубо говоря, через заурядный браузер. Как-то ещё проще придумать не получается. Но, поскольку страшно даже представить, какая беда случится, если в интерфейс управления Вселенной попадёт кто ни попадя, здесь требуется надёжная защита от несанкционированного доступа.
27 июля 2017, 18:49

№ 1Примерчик php для поста блога?

«При наличии фантазии можно спроектировать иные сервисы, или вообще вставлять PHP-скриты прямо внутрь поста.
...
Но всегда можно вставить в нужное место поста какой-нибудь специальный тег (например, пустой div с определённым классом), и потом заменить его выводом от скрипта, прицепляемого трейлером к этому посту.»

Можно ли примерчик такого шаманства?
Как раз для калькулятора... :)
Ну как бы вывод скрипта не на экран, а в переменную $str по силам?
Ну вот теперь по str_replace замените HTML код дива с его классом на эту самую переменную. Текст поста сидит в $_s['content'], как обычно.

$_s['content']=str_replace('<div class="del"></div>',$str,$_s['content']);
air
Все заметки категории «Софт от Мастера Ласто»