Просмотр полной версии : SEO-ориентированные заголовки в контенте, как?
dmartynenko
08.12.2011, 12:53
Со стороны SEO-шников поставлена такая задача. На странице должен быть только один заголовок H1, остальные должны быть только H2, H3 и т.д.
Конечно в BE для каждого CE можно выбрать вид заголовка, но по умолчанию все заголовки H1. И при этом каждому редактору надо объяснять что нужно менять заголовок, кто-то забудет и т.п, не удобно вобщем.
Задумал я допились css_styled_content что бы второй и последующие заголовки на странице были H2, если указан "тип 1". Но сразу потерялся в коде:
# Content header:
lib.stdheader = COA
lib.stdheader {
...
10.1 = TEXT
10.1.current = 1
10.1.insertData = 1
10.1.fontTag = <h1{register:headerStyle}{register:headerClass}>|</h1>
10.2 < .10.1
10.2.fontTag = <h2{register:headerStyle}{register:headerClass}>|</h2>
Тут fontTag по TSRef указан как обычный wrap, и по коду class.tslib_content.php так и есть, и нигде fontTag. не используется что бы к нему применить stdWrap. Но как тогда заменяются {register:headerStyle}{register:headerClass} ? И ведь работает!
Версия TYPO3 4.5.x
Андрей Аксенов
09.12.2011, 12:15
Скорее всего это касается настроек TS для пользователей или страниц. То есть для определенного пользователя нужно исключить использование заголовка первого уровня из списка, либо установить там значение по умолчанию на заголовок второго уровня... Глянь документацию здесь:
https://typo3.org/documentation/document-library/core-documentation/doc_core_tsconfig_ru/4.5.2/view/
Еще по теме:
http://buzz.typo3.org/people/ron-hall/article/changing-the-default-header-for-content-elements/
Вкратце:
In the constants field (not setup) of your typoscript template add:
content.defaultHeaderType = 3
From that point in the page tree each header assigned a layout of "default" will be an H3. Change the "3" to another number and you will have the corresponding header level (i.e. change it to a "2" and you will have a default of H2).
Ну и это работает для инструктирования TYPO3, как выводить заголовки:
tt_content.header.20.dataWrap >
tt_content.header.20.prefixComment >
lib.stdheader.stdWrap.dataWrap >
lib.stdheader.stdWrap.prefixComment >
lib.stdheader {
10.1.fontTag = <h1>|</h1>
10.2.fontTag = <h2>|</h2>
10.3.fontTag = <h3>|</h3>
10.4.fontTag = <h4>|</h4>
10.5.fontTag = <h5>|</h5>
10.6.fontTag = <h6>|</h6>
}
dmartynenko
09.12.2011, 14:11
Спасибо!
Добавление в TS константы content.defaultHeaderType = 2 - это то что нужно! Так все заголовки, где явно не указан тип, становятся H2.
Получается очень удобно - один заголовок явно указываем H1, остальные становятся H2 (в том числе в правых-левых колонках). В итоге время затраченное на приведение заголовков к правильной SEO семантике минимально.
Андрей Аксенов
09.12.2011, 23:39
Я бы сделал просто H1 - заголовок страницы, а все остальное - h2.
Dmitry Dulepov
12.12.2011, 17:25
Я бы сделал просто H1 - заголовок страницы, а все остальное - h2.
...при этом H1 выводить автоматически пред контентом, а "type 1" убрать из выбора типов заголовков через TSConfig. Я так обычно и делаю...
dmartynenko
12.12.2011, 17:44
...при этом H1 выводить автоматически пред контентом, а "type 1" убрать из выбора типов заголовков через TSConfig. Я так обычно и делаю...
Простое и логичное решение. Но оно было не очевидное даже для меня, что уж говорить о новичках. Нужно написать "TYPO3 SEO Cookbook" :)
Кстати, а как вы Дмитрий и Андрей, решаете другие SEO-задачи? Например, есть tt_news и новости разбитые по категориям. На одной странице выводим /news/cat1/..., /news/cat2/... и т.д. Причем для каждой категории нужно прописать свои <title> (его же в H1), другие мета тэги и еще какой нибудь уникальный текст на 1-3 предложения. То же самое бывает нужно и для некоторых (или всех) Single страничек.
По крайней мере у меня для информационных разделов по типу новостей (но на своих экстах) такие задачи встают постоянно. Конечно можно добавить такие поля в каждую таблицу. Но получается лишний код в каждый экст, а если экт не свой - то нужно создавать новый экст для расширения сторонней таблицы. Плюс управление seo-информацией размазано по всей базе, нет какой-то централизованности.
Dmitry Dulepov
13.12.2011, 12:26
За последнее время мне категории не приходилось использовать. Самый простой вариант – использовать TS conditions, но это чревато ухудшением производительности.
Не знаю, есть расширение, на написать такое, чтобы для категории можно было бы задавать заголовок страницы и прочие поля – не сложно. Надо просто анализировать параметры из t3lib_div::_GP(), загружать соответствующую категорию и подменять заголовок в $GLOBALS['TSFE']->altPageTitle.
Логично для категории задавать сеошные свойства в свойствах категории.
Андрей Аксенов
13.12.2011, 12:51
Ну я пользуюсь пакетом от WEC и templavoila_framework, в принципе основы TS там прописаны уже... Ну а остальное - вставить в нужные места значения из таблиц, если нужно...
Либо пользуясь настройками из этих пакетов делать настройки для сайта с нуля - тоже не сложно. Обычно структуры данных для темплавуаля я держу в файлах, также поступаю с TS и для страниц, и для расширений (вместо статических шаблонов из расширений копирую файлы в поддиректорию fileadmin, где их и правлю - лично мне так проще).
Реализовано все через TS в структуре данных шаблона темплавуаля:
<field_content_block_1 type="array">
<tx_templavoila type="array">
<title>Main Content (Content Block 1)</title>
<description>Outer to #contentBlock-1</description>
<sample_data type="array">
<numIndex index="0"></numIndex>
</sample_data>
<eType>ce</eType>
<tags>div:outer</tags>
<TypoScript_constants type="array">
<containerWidth>{$containerWidth.f1f.contentBlock-1}</containerWidth>
</TypoScript_constants>
<TypoScript><![CDATA[
...
10 = COA
10 {
wrap = <div id="contentBlock-1"><!--TYPO3SEARCH_begin-->|<!--TYPO3SEARCH_end--><div class="clearOnly"> </div></div>
10 = TEXT
10 {
data = page:title
htmlSpecialChars = 1
wrap = <h1>|</h1>
}
}
20.20 = RECORDS
20.20 {
source.current = 1
tables = tt_content
}
]]></TypoScript>
<oldStyleColumnNumber type="integer">0</oldStyleColumnNumber>
<proc type="array">
<HSC type="integer">0</HSC>
</proc>
</tx_templavoila>
<TCEforms type="array">
<config type="array">
<type>group</type>
<internal_type>db</internal_type>
<allowed>tt_content</allowed>
<size>5</size>
<maxitems>200</maxitems>
<minitems>0</minitems>
<multiple>1</multiple>
<show_thumbs>1</show_thumbs>
</config>
<label></label>
</TCEforms>
</field_content_block_1>
Ну а для tt_news туда можно засунуть другой столбец из таблицы.
Расширение templavoila_framework добавляет следующую настройку (которую можно и отдельно использовать):
page = PAGE
page {
typeNum = 0
config {
# Set up XHTML Transitional output
xmlprologue = none
doctype = xhtml_trans
# Get rid of extra comments in the XHTML output.
disablePrefixComment = 1
# Turn off the page title since we'll manually add it later.
noPageTitle = 2
...
}
headerData {
# Set the new page title
1 = COA
1 {
wrap = <title> | </title>
1 = TEXT
1.data = TSFE:page|title
1.htmlSpecialChars = 1
# Don't repeat the same title twice.
2 = TEXT
2.noTrimWrap = | | {$siteTitle} |
2.if {
value.data = TSFE:page|title
equals = {$siteTitle}
negate = 1
}
}
2 =< additionalDocHeadCode
}
...
}
Ну а ребята из WEC уже позаботились о такой настройке в константах TS шаблона:
...
# Если заголовки определены "Обычные", то используется тег H2
content.defaultHeaderType = 2
...
А что касается категорий новостей, то я их не использую... то есть использую, но в путь категорию не добавляю, ну и в заголовок страницы тоже...
Тег meta также можно прописать из анонса новости, или перекопировать настройки из режима список новостей.
dmartynenko
13.12.2011, 13:12
А что касается категорий новостей, то я их не использую... то есть использую, но в путь категорию не добавляю, ну и в заголовок страницы тоже...
Тег meta также можно прописать из анонса новости, или перекопировать настройки из режима список новостей.
Я забыл написать, что к этому еще может добавится "региональность", пример реализации которой описан тут:
http://forum.typo3.biz/showthread.php?t=9114
Категории из новостей я только для примера привел (tt_news все знают). Но если есть новостной сайт (не важно на tt_news или другом аналоге), то там есть много категорий и часто региональность.
Другой похожий пример - каталог компаний. Тоже много категорий и региональность.
Получается, что для таких страниц, все title, meta и т.п. будут одинаковы - так как физически это одна и таже страница и одна и та же запись категории:
example.com/catalog/
example.com/catalog/category/xxx/
example.com/region2/catalog/
example.com/region2/catalog/category/xxx/
example.com/region3/catalog/
example.com/region3/catalog/category/xxx/
... и т.д.
Если вместо регионов использовать языковую версию (через L), а вместо категорий (как фильтров через GET параметры) отдельные страницы, то все то же самое без проблем встроенными средствами.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot