Скрытые возможности Блоговой Наны.

Если хочется странного.

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

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

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

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

Можно ли такое сделать?

Да, сделать можно что угодно.
Главное понимать, как это реализуется на PHP.
А механизм мы сейчас рассмотрим.

Предостережение:

Описанное далее носит статус шаманства, которому нет места в обыденной жизни. Шаманство требуется раз в пятилетку, его приберегают для особых случаев.

Посему не просите автора скрипта сделать шаманство куском стандартного функционала, внедрить его силами кнопочек в админке Блога, и т.д.

Произвольные действия над текстом любой странички Блога.

Давайте на примере Скрытного Блога, доступ к которому возможен только через Скрытную Нану, посмотрим на структуру адреса указанного выше документа. Запишем его полный URL:

https://nanocms.name/blog/hidden/index_index_travel_0.htm

Договоримся считать разделителями слэши и подчерки.
Тогда этот URL можно структурировать так:

  1. https://nanocms.name/ - корень Наны.
  2. blog - директория.
  3. hidden - вложенная в неё директория.
  4. index - документ, в котором живёт блог.
  5. index - морда категории.
  6. travel - идентификатор категории "путешествия".
  7. 0 - номер страницы морды категории.

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

С именем файла всё просто - получилось так:

.blog.hidden.index.index.travel.0.php

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

Корневая папка скрипта 755
data 755
modules 755
blog 755
main 777
comments 777
posts 777
settings 777
trailer 777

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

   $_s['title']
   
$_s['content']

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

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

<?php /* Выше этой строки в файле ничего не должно быть */

 
$_s['content']=h2('Карта некоторых путешествий - кликайте в цветные области.').'
<center>
<img 
   src="'
.$_s['loc']['bose'].preg_replace('~^\.~','',get_data_file('imgs')).'docs/map-all-01.jpg"
   alt="Хадж по Алтаю"
   usemap="#Map"
   width="680"
   height="510"
/>
</center>
<div class="clear"><br></div>
<map name="Map" id="Map">
   <area 
 alt="Хадж бродячих самураев на Мультинские озёра."
 title="Хадж бродячих самураев на Мультинские озёра."
 href="'
.$_s['loc']['this'].'_post_1343102400.htm"
 shape="poly"coords="137,20,167,30,172,49,168,82,157,119,139,152,105,175,87,204,64,228,54,250,59,276,69,315,69,346,63,371,42,375,39,355,46,321,44,298,29,284,24,260,32,225,45,198,66,178,93,130,116,90,117,70,112,53,109,38,121,28" 
 
 / >
 <area
 alt="Хадж бродячих самураев на озеро Кучерлинское."
 title="Хадж бродячих самураев на озеро Кучерлинское."
 href="'
.$_s['loc']['this'].'_post_1470297600.htm"
 shape="poly"coords="416,36,416,89,428,134,456,175,473,225,499,273,516,306,510,333,506,363,504,397,501,434,515,449,534,447,539,421,539,393,538,374,546,355,545,320,547,294,546,272,521,251,489,195,480,160,470,124,460,99,455,81"

 />
 <area
 alt="Хадж бродячих самураев к подножию Белухи."
 title="Хадж бродячих самураев к подножию Белухи."
 href="'
.$_s['loc']['this'].'_post_1374393600.htm"
 shape="poly"coords="424,26,463,86,496,115,532,120,536,139,538,161,568,212,584,252,595,315,611,403,627,418,641,416,652,396,637,330,622,250,613,199,593,163,574,136,579,101,547,97,508,87"
 />
</map>'
.$_s['content'];

/* Ниже этой строки в файле ничего не должно быть. */ ?>

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

Однако Вы не ограничены только дописыванием к контенту выбранной странички какой-то добавочки выше или ниже содержимого этой странички.

Например, через переменную $_s['from'] Вам может быть известен источник трафика. И, если этот трафик достаётся Вам из какого-то конкретного источника (домен, либо особая его страница), Вы можете предпринять какие-то действия в рамках соображений, высказанных в начале этого документа.

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

Полезный пример.

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

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

Да, можно проще. В нашем случае за морду блога ответственен файл в папке трейлеров .blog.hidden.index.index.0.0.php - в него достаточно включть код:

<?php /* Выше этой строки в файле ничего не должно быть */

   
$file='./tmp/blog.marda.txt';  # Файл кэша
   
$tm=60*60*8;                   # Пусть будет кэш на 8 часов

   
if (!file_exists($file) or filemtime($file)+$tm $_s['unix']) {
      if (!
$_blog['admin']) file_put_contents($file,$_s['content']);
   }

/* Ниже этой строки в файле ничего не должно быть. */ ?>

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

Обратите внимание, при авторизации Админом этот код не работает. Потому как могут существовать отложенные публикации, которые Администратор видит, но пользователю пока их видеть не положено.