Наши заметки о MODx
В этом разделе мы будем собирать небольшую копилку секретов по работе с системой управления контентом сайта (CMS) MODx. Эти заметки ни в коем случае не претендуют на лавры документации. На нашем сайте тема MODx вообще занимает небольшой уголок, и эти материалы мы размещаем только потому, что по роду основной работы нам приходится оказывать техническую поддержку нескольким десяткам организаций, использующих наши прототипы сайтов. В то же время кое-что может пригодиться и другим людям.
Мы не претендуем на изложение "истины в последней инстанции". Наверняка в этих заметках гуру MODx найдут неточности и ошибки. Мы будем очень благодарны, если на это нам укажут в комментариях.
В заметках мы стараемся не просто сразу приводить готовое правильное решение, но и показываем, как мы набивали шишки в процессе поиска.

О создании мета-тегов и ключевых слов


Для улучшения работы поисковых машин и других благородных целей страницы хорошего сайта должны содержать теги meta в заголовке страниц (head). Набор meta может быть более двух десятков.

В MODx предусмотрены средства для работы с meta, но не очень удобные. Как устранить недостатки?

Штатными средствами являются:

1. Управление МЕТА-тегами к ключевыми словами для сайта в целом.

Создание мета-тегов

Создание мета-тегов

На этом этапе создаются ключевые слова и мета-теги, которые можно потом применять на всех страницах сайта.

2. Подключение МЕТА-тегов и ключевых слов для конкретной страницы.

 Для страницы, во время редактирования, можно отметить ключевые слова и МЕТА-теги из общего списка, заготовленного на первом этапе.

Отметка ключевых слов для страницы

Эту операцию надо делать обязательно, так как автоматически общий набор метатегов не создается на конкретной странице.

Однако дело это достаточно нудное, легко забывается. Да и ключевые слова вполне можно сделать одинаковыми и, в случае необходимости, подключать к конкретной странице только дополнительные ключевые слова.

Совершенствуем работу с мета-тегами.

Разумеется, такое решение не могло не быть реализовано. Воспользуемся сниппетом MetaTagsExtra.

Это сниппет автоматически создает мета-теги keywords, charset, Content-Type, version, description, author, copyright, last-modified и другие.  Для использования сниппета нужно вставить его вызов в head. Так как у нас имеется единственный чанк, формирующий head для всех страниц, туда мы его и вставим.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
  <title> [ *pagetitle* ] | [ (site_name) ]</title>
   [ [ MetaTags ] ]
  <base href="[ (site_url) ]"></base>
  <link href="assets/templates/yaml/site.css" rel="stylesheet" type="text/css"/>
     <!--[if lte IE 6]>
    <link rel="stylesheet" type="text/css" href="assets/templates/yaml/ie6_or_less.css" />
    <![endif]-->

Заметим, что ранее на этом месте было:

<meta http-equiv="Content-Type" content="text/html; charset=[ (modx_charset) ]" /> 

 

  Этот метатег мы удалили - в таком виде он более не нужен.

Особенности сниппета MetaTags

 Сниппет нуждается в небольшой доработке.

Во-первых, ему надо задать список постоянных ключевых слов для всех страниц. Это можно сделать или в виде ссылки на чанк:

 $all_page_keywords="САПР на базе AutoCAD,Зуев Сергей Александрович,ShaggyDoc,ruCAD,lisp,cad,AutoCAD,MODx ";

или записать прямо в сниппете в виде:

$all_page_keywords="keywords1, keywors2,...";

Мы предпочли сделать в виде чанка. Чанк состоит из простой строки, без кавычек. Ключевые слова разделены запятыми:

  САПР на базе AutoCAD,Зуев Сергей Александрович,ShaggyDoc,ruCAD,lisp,cad,AutoCAD,MODx

Теперь постоянные ключевые слова можно и удалить из Управление МЕТА-тегами и ключевыми словами - пусть там будут только дополнительные ключевые слова.. 

Во-вторых, можно кое-что добавить или убавить в коде сниппета - он не охватывает все возможные meta. Мы этого делать не стали.

В-третьих, надо проверить, как будут добавляться сниппетом ключевые слова. Мы имеем два источника ключевых слов - общие для всех страниц и специфичные для страницы, отмеченные в списке:

Ключевые слова и мета страницы

 По идее эти два списка должны корректно сливаться в один единый. А вот тут не всё хорошо:

<meta name="keywords" content="настройка MODx, MODx, CMS" />
<meta content="ShaggyDoc" name="author" />
<meta content="САПР на базе AutoCAD,Зуев Сергей Александрович,ShaggyDoc,ruCAD,lisp,cad,AutoCAD,MODx, " name="keywords" />
<meta content="ShaggyDoc" name="author" />

  Мы видим дублирование author и keywords, причем keywords записаны при втором вызове с запятой в конце. Первый вызов содержит ключевые слова страницы, а второй - общие ключевые слова. Author явно записан один раз из общих МЕТА, а второй раз - сгенерирован сниппетом. Придется поковыряться в сниппете.

Сначала разберемся с автором. Первый вызов берется из настроек общих мета, а второй - из свойств страницы, здесь автором является тот из редакторов, кто создал именно эту страницу. Этот вариант, пожалуй, более справедлив и нам стоит удалить мета-тег site_autor из общего списка.

C ключевыми словами  хуже. В сниппете предусмотрено

$comma=(isset($all_page_keywords))?', ':'';
$MetaKeywords= " <meta name=\"keywords\" content=\"{$all_page_keywords}{$comma}\" />\n";

 То есть, по идее, сначала записываются постоянные ключевые слова, если он есть - добавляется запятая и дописываются ключевые слова страницы. Но такого не происходит - [ *keywords* ] не возвращает ничего. Придется написать более длинный, но работающий код:

$keywords = $modx->getKeywords();
if(count($keywords)>0) {
$MetaKeywords = "<meta content="\"";" name="\"keywords\"" />
foreach ($keywords as $key){$MetaKeywords  .= $key. ",";}
$MetaKeywords .= " {$all_page_keywords}\" />\n";

} else {
$MetaKeywords= "<meta content="\"{$all_page_keywords}\"" name="\"keywords\"" /> \n";
}

  Теперь у нас , если найдены ключевые слова страницы, то сначала записываются они, а потом добавляются  постоянные ключевые слова. Если ключевые слова страницы не заданы, записываются только постоянные ключевые слова.

А как же первый вывод keywords, до "нашего"?  Этот список выводит ядро MODx и отключить его, не влезая в код, вроде бы нельзя. Оставим всё как есть, большого вреда не будет.

 

17-02-2009 11:26:53



    Содержание раздела «Мета-теги»:
Комментарии любых посетителей

Написать комментарий