Page 1 of 1

Трюки с $friendly_position

Posted: Wed Dec 30, 2009 11:10 am
by Jim Lalareco
Возможно, уже где-то было и обсуждалось.

Если тебе нужно, чтобы на странице поверх блока контента появилась надпись - "Мы все умрём", то как вариант ты залезешь в редактирование шаблона и там перед тэгом {content}, вставишь Мы все умрём. Выглядеть это будет примерно так:

Code: Select all

...
<h1>Мы все умрём</h1>
{content}
...
Потом ты решишь, что эта фраза нелепо смотрится, когда в контенте рассказывается про увеличение кхм.. прибора. И надо её отобразить только там где контент повествует о всяких цунами и рассвете мертвецов. И у тебя есть два варианта в лоб. Первый - создать копию шаблона, который идёт у тебя по умолчанию и оставить надпись "Мы все умрём", только в копии, а оригинале - удалить. Затем со скурпулезностью библиотекаря, нужные страницы ты переведешь на другой(скопированный и уже с надписью) шаблон. И на сто миллион первой странице умрешь от монотонности. Второй способ это удалить запись из шаблона, и втыкать её в нужные страницы. Открывая каждую делать копи-паст. Умрешь ты на пятидесятимиллионной записи.

Но у смерти на тебя будут другие планы если воспользоватся трюком с $friendly_position.
В этой переменной хранится то, что у тебя заключено между тэгами . Оно же у тебя отображается в админке, когда ты смотришь весь свой контент на странице Контент -> Страницы. Это место некоторой страницы в иерархии меню.
Наглядно в html это выглядит так:

Code: Select all

...
      <h2 class="accessibility">Navigation</h2>
<ul>

<li><a href="example.com"><dfn>1: </dfn>Главная</a>


</li>

<li><a href="http://example.com/?page=articles"><dfn>2: </dfn>Статьи</a>
</li>

<li><a href="http://example.com/?page=articles1"><dfn>2.1: </dfn>Про увеличение прибора</a>
</li>

<li><a href="http://example.com/?page=articles2"><dfn>2.2: </dfn>Про смерть</a>
<ul>
<li><a href="http://example.com/?page=articles2_avarii"><dfn>2.2.1: </dfn>Аварии</a>
</li>
<li><a href="http://example.com/?page=articles2_tsunami"><dfn>2.2.2: </dfn>Цунами</a>
</li>
<li><a href="http://example.com/?page=articles2_catastrophes"><dfn>2.2.3: </dfn>Катастрофы</a>
</li>
</ul>
</li>
<li><a href="http://example.com/?page=about_all"><dfn>2.3: </dfn>Про всякое</a>
</li>


<li><a href="http://forum.example.com" title="Форум"><dfn>3: </dfn>Форум</a>
</li>
</ul>
...
Вот эти 2.2 или 2.2.1 и даже 3 являются значениями которые будут лежать в $friendly_position при отображении некоторой страницы. Например, для пункта Аварии, в переменной будет 2.2.1, без запятой.

Напоминаю, задача состоит в том, чтобы на некоторых страницах разместить фразу "Мы все умрём". Заходим в редактирование нашего шаблона и делаем это так:

Code: Select all

...
{if ($friendly_position >= "2.2")}
<h1>Мы все умрём</h1>
{/if}
{content}
...
Что изменилось в сравнении с первоначальным вариантом, ты и сам догадаешься. Тут можно бы поставить точку, но нужно ещё одно пояснение. Приведенный трюк означает то, что на ВСЕХ страницах чей $friendly_position больше или равен 2.2, (а это не только 2.2.1, но и 2.3, 2.10, 3.15, 8.150 и т.д., т.е. с 2.2 до конца всех твоих миллионов страниц) будет отображатся надпись "Мы все умрём". Но задача стоит так - только на определенных страницах. Правим код и получаем что-то вроде этого:

Code: Select all

...
{if (($friendly_position >= "2.2")&&($friendly_position < "2.3"))}
<h1>Мы все умрём</h1>
{/if}
{content}
...
Задача решена. Но есть ещё дополнение.

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

Code: Select all

...
{if (($friendly_position >= "2.2")&&($friendly_position < "2.3"))}
<h1>Мы все умрём</h1>
{/if}
{if (($friendly_position >= "2.1")&&($friendly_position < "2.2"))}
<h1>Мы себе уже увеличили</h1>
{/if}
{content}
...
При всем при этом, вместо этих фраз ты можешь втыкать и Блоки контента({global_content name="myGlobalContentBlock"}) и свои тэги(UDT - user defined tag).

Удачи!