| Главная » Статьи » Статьи 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?. Пытался описать все как можно проще, но все равно получилось сложно, поэтому скоро напишу еще статью по этому оператору. | |
| Просмотров: 443 | |