Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   SEO-ориентированные заголовки в контенте, как? (http://forum.typo3.ru/showthread.php?t=9835)

dmartynenko 08.12.2011 12:53

SEO-ориентированные заголовки в контенте, как?
 
Со стороны 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/docu...ru/4.5.2/view/

Еще по теме:
http://buzz.typo3.org/people/ron-hal...tent-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, как выводить заголовки:
PHP код:

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

Цитата:

Сообщение от Андрей Аксенов (Сообщение 32613)
Я бы сделал просто H1 - заголовок страницы, а все остальное - h2.

...при этом H1 выводить автоматически пред контентом, а "type 1" убрать из выбора типов заголовков через TSConfig. Я так обычно и делаю...

dmartynenko 12.12.2011 17:44

Цитата:

Сообщение от Dmitry Dulepov (Сообщение 32624)
...при этом 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">&nbsp;</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 добавляет следующую настройку (которую можно и отдельно использовать):

PHP код:

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
        
COA
        1 
{
            
wrap = <title> | </title>

            
TEXT
            1.data 
TSFE:page|title
            1.htmlSpecialChars 
1

            
# Don't repeat the same title twice.
            
TEXT
            2.noTrimWrap 
= | | {$siteTitle} |
            
2.if {
                
value.data TSFE:page|title
                equals 
= {$siteTitle}
                
negate 1
            
}
        }

        
=< additionalDocHeadCode

    
}
...


Ну а ребята из WEC уже позаботились о такой настройке в константах TS шаблона:
PHP код:

...
# Если заголовки определены "Обычные", то используется тег H2
content.defaultHeaderType 2
... 

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

dmartynenko 13.12.2011 13:12

Цитата:

Сообщение от Андрей Аксенов (Сообщение 32634)
А что касается категорий новостей, то я их не использую... то есть использую, но в путь категорию не добавляю, ну и в заголовок страницы тоже...
Тег 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 параметры) отдельные страницы, то все то же самое без проблем встроенными средствами.


Часовой пояс GMT +4, время: 16:38.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot