Штатными средствами являются:
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 и отключить его, не влезая в код, вроде бы нельзя. Оставим всё как есть, большого вреда не будет.
Написать комментарий