Затачиваем CMS ModX для SEO

(Ответов: 8, Просмотров: 12255)
  1. {YaGoo} Аватар для sinneren
    • Регистрация: 10.11.2011
    • Сообщений: 285
    • Репутация: 63
    Всем привет, шалом и так далее. В этой статье речь пойдёт о движке ModX. Да, мануалов по нему пруд пруди, есть же сообщество официальноес кучей документации, есть русское, c той же документацией, форумом и так далее. Есть и очень популярный блог где множество статей посвящено настройке этой CMS. И даже статья на хабре по настройке новой версии движка – 2.x версии Revo (Для тех, кто не в курсе, CMS делится на две различные…версии Evo и Revo 1.x и 2.x соответственно, они различаются кардинально).

    НО речь пойдёт не о стандартных настройках движка, а о его адаптации и подстройке под SEO нужды оптимизаторов. Хоть и статья рассчитана на пользователей, которые имеют некие знание и представления о ModX, тем не менее, постараюсь разъяснять всё как можно проще и расписывать шаги более-менее подробно.

    Данный мануал расписан под версию движка Evo 1.0.5. Почему старая? Потому что к новой многие еще не привыкли, потому что большинство используют его, ну и… потому что сам не пробовал еще новый :)

    Осторожно: в статье присутствует кровь, кишки и обнажёнка.

    Часть I. Кровь.

    TransAlias

    В первую очередь хочется упомянуть о конфигурации плагина TransAlias. Этот плагин управляет ЧПУ, теми самыми человекочитаемыми ссылками. Находится плагин в меню: «Элементы-Управление элементами», вкладка «Плагины». Он уже должен быть предустановлен. Открываем плагин и заходим во вкладку «Конфигурация». Здесь вы можете выбрать параметры вручную в списках или внести код и «обновить параметры». Я люблю по своим причудам, а также в купе с многочисленными советами SEO-форумов использовать ссылки транслитом, а разделять символом подчёркивания. Для этого просто замените параметры на эти:

    код

    Код:
    &table_name=Trans table;list;common,russian,utf8,utf8lowercase;russian &char_restrict=Restrict alias to;list;lowercase alphanumeric,alphanumeric,legal characters;lowercase alphanumeric &remove_periods=Remove Periods;list;Yes,No;Yes &word_separator=Word Separator;list;dash,underscore,none;underscore &override_tv=Override TV name;string;
    [свернуть]


    А затем нажмите кнопку «Обновить параметры». Не забудьте потом сохраниться.
    Так же стоит добавить, что для верного отображения ЧПУ ссылок, нужно в шаблоне указать важный параметр:
    Код HTML:
    <base href="[(site_url)]"></base>
    Вместо site_url иногда бывает нужно использовать base_url.

    Часть II. Кишки.

    Ссылка на себя

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

    Итак, как убрать ссылку на себя с главной страницы. Есть два способа: тривиальный и не очень.

    Способ первый: мы будем использовать плагин PHx. Скачать его можно отсюда.
    P.S. Не забывайте про разность версий CMS.

    Я покажу как использовать этот сниппет на примере с картинкой, так как часто ссылкой является какой-либо логотип.

    Код:
    [+phx:if=`[*id*]`:is=`1`:then=`<img src="imgurl" alt="" />`:else=`<a title="" href="[(site_url)]><img src="imgurl" alt="" /></a>`+]
    Итак, всё довольно просто, мы запускаем наш сниппет phx c параметрами: если текущий идентификатор страницы равен одному, то вывести картинку, в противном случае вывести ссылку со вложенной картинкой на корень сайта. Вот и всё, вставляем сниппет на нужное место и радуемся.

    Способ второй (с блекджеком и шлюхами):

    В <head> часть шаблона нужно добавить meta-тег:
    Код HTML:
    <meta name="internal" content="glavnaya.html" />
    Для того, чтобы узнать имя текущей страницы просто поставим в content [~[*id*]~]

    Далее подключим библиотеку JQuery и запишем такой скрипт:

    код

    Код HTML:
    <script type="text/javascript">
    	$(document).ready(function(){
    		var zeus = $('meta[name=internal]').attr('content');
    		$("a[href*='"+zeus+"']").removeAttr('href').addClass('currlink');
    	});
    </script>
    [свернуть]


    Что он делает: скрипт записывает в переменную содержимое атрибута content, затем ищет все ссылки с ним, удаляет параметр href и добавляет ссылку. Тем самым мы убрали все ссылки страницы на саму себя. Вместо удаления href можно сделать и вовсе замену <a> на <span>, возможно это будет даже эффективнее. На ваше усмотрение.

    Часть III. Обнажёнка.

    Перелинковка

    Итак, как сделать перелинковку используя фильтры сниппета Ditto, иными словами выводим похожие новости.

    Первым делом пройдёмте в меню «Элементы» - «Управление элементами» вкладка «Параметры(TV)» и нажмём «Новым параметр». Обзовите его как-нибудь. В моём случае он зовётся tilde. Впишите заголовок и описание, это всё мишура, неважное. А важное это «тип ввода», вы должны выбрать «DropDown list menu». Теперь займёмся заполнением значений категорий. Категории и будут содержать в себе похожие записи.

    Шаблон таков: Имя==номер||Имя2==номер2

    Пример: Животные==1||Ангелы==2||Имена== 3||Прочие куклы==4||Игрушки==5

    Затем отмечаете доступ шаблонов, где отображать этот TV-параметр и всё, больше здесь ничего не нужно, сохраняемся.

    Алгоритм такой: вы создаёте документ (страницу), отмечаете в списке категорию, затем сниппет сам выводит записи по фильтру из этой категории.

    Итак, приветствуем сниппет:
    Код:
     [[Ditto? &startID=`[*parent*]` &tpl=`last_item` &summarize=`3` &filter=`tilda,[*tilda*],1|id,[*id*],4`|id,[*id*],2`]]
    Объясняю. Выводим новости сниппетом Дитто с параметрами.
    &startID – откуда начинать вывод. В нашемслучае это [*parent*] – родительская папка.
    &tpl – html шаблон вывода
    &summarize – количество выводимых записей
    А вот самое вкусное: &filter
    Tilde, [*tilda*], 1 – он выводит все новости имеющие ТВ-параметр tilda
    Id,[*id*],4` - выводит все предыдущие(меньшие по id) записи от текущей
    Id,[*id*],2` - запрещает вывод текущей новости
    Ну а | символ, означающий «И».

    А теперь как вывести последние записи, тут всё еще проще:
    Код:
    [[Ditto? &startID=`2` &depth=`2` &summarize=`6` &paginate=`0` &tpl=`last_item` &sortBy=`createdon` ]]
    Это лишь пример с моего сайта, начальная страница, глубина может быть иная, а количество какое вы хотите. Важным тут является параметр &sortBy=`createdon`. Он-то и выводит самые последние записи.

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

    Панацея есть. Оказывается, можно задать дату в формате Unix.

    Для начала напишем сниппет convertDate:

    код

    Код:
    <?php
    	$monthes = array('','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
    	$day = date("j",$MyDate);
    	$month = $monthes[date("n",$MyDate)];
    	$year = date("Y",$MyDate);
    	echo $day.' '.$month.' '.$year.' года';
    ?>
    [свернуть]


    Создаёт TV-параметр с датой. Всё почти также, как и выше, только в название впишем date, а тип ввода будет date, и визуальный компонент unixdate. Затем просто выводим сниппет:
    Код:
    [[convertDate? MyDate=`параметр`]]
    Вместо параметр поставит [*tvdate*] для чанков или [+tvdate+] для шаблонов.
    После него выводим сниппет Дитто с сортировкой уже не createdon, а date. Так же хочется упомянуть, что для сортировки используется параметр &sortDir, который принимает два значения: ASC и DESC, сортировка по убыванию или возрастанию.

    На посошок:

    Важным является и использование тегов на страницах сайта. Для этого можно поэкпериментировать со сниппетами TVTagCloud или TagCloud. Найти их можно на официальном сайте.
    • 10

    Спасибо сказали:

    0pium(25.11.2011), Alik(14.05.2012), assai(14.12.2011), eyrad4(22.11.2011), Mikrob(27.02.2012), naotlichno(28.02.2012), oleg_ug(18.11.2011), patrician(09.03.2012), vovasit91(23.11.2011), VtopSearch(02.10.2014),
  2. Дипломник
    • Регистрация: 28.03.2011
    • Сообщений: 135
    • Репутация: 53
    [+phx:if=`[*id*]`:is=`1`:then=`<img src="imgurl" alt="" />`:else=`<a title="" href="[(site_url)]><img src="imgurl" alt="" /></a>`+]
    sinneren, Это не очень существенно, но ведь проще обращаться напрямую к tv вот так:
    [*id:is=`1`:then=`<img src="imgurl" alt="" />`:else=`<a title="" href="[(site_url)]><img src="imgurl" alt="" /></a>`*]

    Перелинковка хорошая, но что то меня в ней смущает, сам бьюсь над этой проблемой достаточно долго. Пока делаю все в ручном режиме используя снипет Tvfile:)

    При такой перелинковке страдает только первый ресурс раздела, так как снизу нет документов
    Последний раз редактировалось eyrad4; 25.11.2011 в 04:10.
    • 0
  3. {YaGoo} Аватар для sinneren
    • Регистрация: 10.11.2011
    • Сообщений: 285
    • Репутация: 63
    eyrad4, да, возможно я несколько усложнил с phx)
    первый ресурс может и страдает в общем смысле, но если самый ключевой продукт именно на него поставить, то он только в выйгрыше, ведь на него будут ссылаться от 1 до N, а он ни на кого. Тоже один из способов линка же.
    • 1

    Спасибо сказали:

    eyrad4(25.11.2011),
  4. Новичок
    • Регистрация: 26.05.2011
    • Сообщений: 3
    • Репутация: 10
    Про перелинковку - кот наплакал.
    Как сделать перелинковку на MOD-x автоматически, например, как в джумловском плагине SeoLinks?
    Хотелось бы иметь что-то типа списка запросов и ссылок в отдельной странице, и чтобы автоматом ссылки расставлялись в тексте (принцип Википедии).
    • 0
  5. {YaGoo} Аватар для sinneren
    • Регистрация: 10.11.2011
    • Сообщений: 285
    • Репутация: 63
    hottabov, для контекстных ссылок это уже целый сниппет писать нннада. а тут приведено лишь средствами уже существующих.
    А по поводу "как в джумле" не знаю. Я в ней не работал и не буду.
    • 0
  6. Дипломник Аватар для patrician
    • Регистрация: 22.01.2011
    • Сообщений: 245
    • Репутация: 59
    Перелинковку предпочитаю делать руками, благо проекты не громадные.
    Кстати а проблему с дублями урлов решили уже? Я с ней когда-то намучился.
    site.ру/1 хоть и чпу есть и все такое, редиректы и 404 не отдавал.
    Поэтому я отключил транс алиас и урлы тоже руками генерирую)))
    и естественно никаких суффиксов на конце.
    Там дублей немерено генерится, хоть и двиг на первый взгляд идеальный. Допиливать надо сборки стандартные.
    А вообще я тоже люблю эво, потому что она привычнее)) Жду пока рево станет такой же стабильной, тогда и на нее пересяду.
    • 1

    Спасибо сказали:

    sinneren(27.02.2012),
  7. {YaGoo} Аватар для sinneren
    • Регистрация: 10.11.2011
    • Сообщений: 285
    • Репутация: 63
    patrician, у рево с чпу беда.. многое не работает или не хочет.
    С дублями решения не видел, но не сильно напрягает: в индексе их нет, только в сапе ссылки падают
    • 0
  8. Новичок
    • Регистрация: 23.03.2012
    • Сообщений: 2
    • Репутация: 0
    Здравствуйте, а как убрать ссылку в меню на текущую страницу. С главной понятно, через id . а как быть множеством страниц?
    • 0
  9. Новичок
    • Регистрация: 23.03.2012
    • Сообщений: 2
    • Репутация: 0
    уже разобрался)
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Помогите с ModX
Web программирование 8 10.11.2011 19:51
Вопрос к знатокам Modx
Web программирование 4 04.08.2011 14:13

Интересные темы

сео форум

Какие возможности для новичка предостовляет сео форум, как правильно использовать для раскрутки своих проектов.

как вставить ссылку в слово в контакте

Если у вас нет ответа на вопрос о том, как вставить ссылку в слово в контакте.

как убрать человека с первого места в контакте

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

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры