Пятница, 10.04.2026Приветствую Вас, Гость! | RSS
Главная » Статьи » Статьи uCoz

Использование кода substr для уменьшения дублированных страниц
Мне всегда не нравилась одна штука в Ucoz - если в модуле несколько страниц, а это почти всегда так, то все эти страницы называются одинаково (имеют один и тот же TITLE и H1), а это неправильно, как с точки зрения SEO, так и с точки зрения обычного пользователя. Чтобы вы могли понять о чем я, объясню подробнее:

Есть модуль "Каталог статей", на одной странице отображается по 10 статей, всего на сайте 100 статей. Получаем 10 страниц по 10 статей, и у всех одинаковый заголовок, описание с главной страницы модуля дублируется везде. А я хочу примерно так:

Главная страница модуля называется "Статьи" и имеет текстовое описание.
Вторая и следующая страница имеют названия "Статьи - страница №2, описания здесь нет.

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

На этом со вступлением все, перейдем к substr. Использовать такой оператор придется потому что Ucoz не дает "чистый" номер страницы, за номер страницы отвечает глобальный код $CURRENT_PAGE$, который выдает номер страницы в виде тега, например:

<span class="currentPage79" >1</span>

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

Title у меня получился такой:

<?if(substr($CURRENT_PAGE$,28,2) = "1<")?>$MODULE_NAME$<?else?>Новые статьи - страница <?substr($CURRENT_PAGE$,28,len($CURRENT_PAGE$)-35)?><?endif?>

Разберу весь код детальнее:

Если в коде номера страницы, который мы получаем из $CURRENT_PAGE$, номер страницы и знак за ним (начинаем разбирать код с 28-го символа и берем только 2 символа) равен "1<", то выводим просто название модуля, иначе выводим "Новые статьи - страница №" (получаем с помощью кода substr), а сколько цифр в номере страницы вычисляем математически.

?if - Если
substr - разбираем код
$CURRENT_PAGE$ - код с номером страницы (выдаст <span class="currentPage79" >1</span>)
28 - с какой позиции начать искать (подсчитали все символы в коде до нужного нам номера)
1 - сколько символов вывести (нам нужно вывести только номер страницы)
len - вычисляет сколько символов есть в коде с номером страницы

Тег H1 выводим таким же образом. Вывести описание только на первой странице можно окружив описание в такой же код, только ?else? и весь код после него убирается кроме ?endif?.

Пытался описать все как можно проще, но все равно получилось сложно, поэтому скоро напишу еще статью по этому оператору.
Категория: Статьи uCoz | Добавил: Me[N]t (29.07.2013)
Просмотров: 443 | Рейтинг: 0.0/0