При работе с сайтами в системе uCoz иногда
возникает
проблема с
дублями метаописаний и заголовков. Это происходит (кроме других
проблем) потому, что при разбиении материала на страницы uServ
присваивает им одинаковые метаданные. Выход из этой ситуации
состоит,
например, в том, чтобы в шаблоне ввести в тело этих
данных номер
страницы. Существует даже специальный код для этого: $CURRENT_PAGE$
.
Однако эта переменная содержит не число, а целую строку
вывода вида:
<span class="currentPage79">1</span>
В результате получаем:
<meta name="description" content="Раздел «Иллюстрации» блока фотоальбомов, стр. <span class="currentPage79">1</span>" />,
что совершенно нас не устраивает. Выход один — резать
эту строку, чтобы выделить необходимую информацию. Для этого будем
использовать встроенную функцию substr()
.
Эта функция имеет общий вид substr(S,N1,N2)
. Здесь
S — строка, которую будем резать, N1 — номер
символа, с которого начнём резать, а N2 — количество
символов, которые будем отрезать. Какую строку будем резать
понятно — $CURRENT_PAGE$
. Чтобы выяснить, с
какого места отрезать, найдём первое вхождение символа «>». Он
закрывает открывающий тег span. Номер позиции ищет встроенная функция strpos(S1,S2)
.
Здесь S1 — строка, в которой ищем, а S2 — строка,
которую ищем. В нашем случае получается:
strpos($CURRENT_PAGE$,'>')+1
.
Единицу прибавляем для того, чтобы взять следующий за закрывающей угловой скобкой символ.
Дальше надо найти количество символов, которые нам нужно отрезать.
Здесь немного сложнее. Мы будем использовать функцию strrpos(S1,S2)
.
Она тоже ищет первое вхождение символа в строку,
но не с начала строки
S1, а с конца. В конце концов получим следующее:
strrpos($CURRENT_PAGE$,'<')-strpos($CURRENT_PAGE$,'>')-1
.
И в общем виде:
<meta name="description" content="Раздел «$SECTION_NAME$»
блока фотоальбомов<?if($CURRENT_PAGE$)?>, стр.
<?substr($CURRENT_PAGE$,strpos($CURRENT_PAGE$,'>')+1,strrpos($CURRENT_PAGE$,'<')-strpos($CURRENT_PAGE$,'>')-1)?><?endif?>"/>
Когда все коды сработают, браузер (и паук поисковика) получит следующее:
<meta name="description" content="Раздел „Иллюстрации“ блока фотоальбомов, стр. 1" />
что и требовалось.