пятница, 21 мая 2010 г.

Как я настраивал indexed_search на TYPO3 (под Suse Linux)

Как обычно, для решения любой задачи, TYPO3 использует комплексный и глобальный подход... Поэтому настройка indexed_search на сайте у меня заняла целый рабочий день. Но из-за этого я не перестаю любить эту систему и желать крепкого здоровья парням пишущим горы запутанной документации. А всё на самом деле оказывается очень просто.

Для настройки индексированного поиска по сайту нужны следующие вещи:

1. Само-собой - indexed_search, который нужно просто активировать в менеджере расширений. Это движок и мозги системы поиска, которые занимаются индексацией контента и внешних файлов (pdf, doc, xls, rtf ...). Нужно знать, что для индексации внешних файлов, indexed_search использует дополнительные внешние утилиты - pdftotext и pdfinfo, catdoc и др., которые отдельно устанавливаются на операционную систему. В настройках плагина нужно обязательно указать пути к этим программам:



2. Для того, чтобы "натравливать" indexed_search на тот контент, который требует индексации, нужен спецальный сканер. Этим сканером является ext - Site Crawler (ключ, для поиска в репозитории расширений - crawler). Настраивается crawler как с помощью TypoScript (что я и сделал), так и с помощью визуальной формы. Вот настройки сканера для одного из моих сайтов:

tx_crawler.crawlerCfg.paramSets.test = &L=[0-3]&contentId=[_TABLE:tt_content]
tx_crawler.crawlerCfg.paramSets.test {
procInstrFilter = tx_indexedsearch_reindex
baseUrl = http://www.DOMAIN.com.ua/
# настройка индексации списка новостей
# _PID:4 указывает на системную папку где хранятся все Новости сайта
tt_news = &tx_ttnews[tt_news]=[_TABLE:tt_news; _PID:4]
tt_news.procInstrFilter = tx_indexedsearch_reindex
tt_news.cHash = 1
# страница единичного просмотра Новости
tt_news.pidsOnly = 37

}

Данные настройки помещаются в свойства корневой страницы сайта:



Нужно также не забыть, что Crawler настраивается и в менеджере расширений. Важным параметром здесь является - PHP Path [phpPath], который указывает сканеру где находится PHP.

3. Так как контент сайта постоянно меняется, то сайт требует периодической переиндексации. Как это сделать? Просто нужно запускать сканер по расписанию! Здесь на помощь приходит утилита crontab. Чтобы отредактировать настройки crontab, нужно запустить его с параметром "-e": crontab -e. Почитать о настройках крона можно, например, здесь.

У меня же настройки такие:




4. Для того, чтобы плагину indexed_search разрешить индексацию страниц, в TS-шаблоне необходимо установить параметр index_enable:

page.config.index_enable = 1
# разрешить индексирование внешних файлов
# page.config.index_externals = 1
# индексируются только закешированные страницы
# page.no_cache = 0

Indexed_search будет индексировать всё, что находится между специальными комментариями и .
Вот пример HTML-шаблона:

<div id="header">
###searchbox###
<div id="logo"><img src="img/logo.png" /></div>
</div>
<div id="content1">
<div id="cornercontent1"></div>
<div id="tabcontent1"></div>
<div class="sitetext">
<!--TYPO3SEARCH_begin-->
<!-- ###CONTENT### -->
<!-- ###CONTENT### -->
<!--TYPO3SEARCH_end-->
<!-- ###SITENEWS### -->
<!-- ###SITENEWS### -->
</div>


Как видно из примера, область со списком новостей сайта (SITENEWS) индексироваться не будет. Согласно нашим настройкам, Новости будут индексироваться другим способом (см. выше).

5. Чтобы отображать результаты поиска создайте отдельную страницу и вставьте в нее плагин - Indexed Search.



Запишите или запомните id этой страницы.


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

Если для строки поиска в HTML-шаблоне отвести специальное место и "пометить" его маркером - ###searchbox### (см.выше.), то оживить его можно с помощью следующего TS-скрипта:

# Прикручиваем плагин macinasearchbox
marks.searchbox >
marks.searchbox < plugin.tx_macinasearchbox_pi1
# pidSearchpage = 47 - указывает на страницу отвечающую за показ результатов поиска
marks.searchbox.pidSearchpage = 47
# указываем путь к HTML-шаблону строки поиска
marks.searchbox.templateFile = fileadmin/templates/searchbox_template.html

# Это дополнительные настройки для indexed search (скрываем ссылку advancedSearch)
plugin.tx_indexedsearch.show.advancedSearchLink = 0
plugin.tx_indexedsearch.show.rules = 0



Как всё это работает на практике можно посмотреть на сайте http://www.arcasalus.com.ua/


P.S. Забыл предупредить! Для сайтов с большой загрузкой indexed_search вреден, т.к. нагружает систему и работает не быстро.

четверг, 13 мая 2010 г.

Настройка стилей встроенного RTE редактора TYPO3

Если Вам захочется добавить свои (пользовательские) стили для дальнейшей работы с ними в RTE-редакторе, то сделать это довольно просто, т.к. TYPO3 замечательная и очень гибкая CMS-система.

Что это даёт? Это позволит нам форматировать целые блоки или фрагменты текста прямо в редакторе, а также задавать им специфические CSS-стили.

Без дополнительных настроек списки предустановленных стилей очень скудны:



Займемся расширением списков стилей.

1. Создадим CSS файл, который содержит наши дополнительные стили. Причем каждый стиль должен занимать только одну строку. Например:

/* Стили блоков */
.float_left { float: left; display:block; margin: 0; padding: 0;}
.float_right { float: right; display:block; margin: 0; padding: 0;}
.center { text-align:center; }
/* Стили текста */
.red_txt { color: red; font-size: 12px;}
.blue_bold_txt { color: blue; font-weight: bold;}


Назовем наш файл стилей - rte.css и скопируем его в директорию fileadmin/rtecss.

2. Теперь нужно как-то сказать TYPO3 где лежат пользовательские стили и указать какие стили можно применять к блокам, а какие к тексту.
Для этого переходим в свойства страницы (например, корневой)



и помещаем в блок Page TSConfig следующий скрипт:

RTE {
default {
showTagFreeClasses = 1
# указываем где находится файл стилей
contentCSS = fileadmin/rtecss/rte.css

# очищаем старые стили
classesAnchor >
classesLinks =
# устанавливаем классы для
# текста
classesCharacter := addToList(coding, note, important, warning, red_txt, blue_bold_txt)
# блоков
classesParagraph := addToList(coding, note, important, warning, float_left, center, float_right)
# ячеек таблиц
classesTD := addToList(sub)
# таблиц
classesTable := addToList(full, fixed)
# список всех доступных классов
proc.allowedClasses := addToList(coding, note, important, warning, float_left, center, float_right)
}
}

Это все. Теперь в редакторе текстов можно увидеть и проделать нечто подобное:

О себе

Моя фотография
Вадим Гиркало
Фрилансер, веб-разработчик сайтов на базе бесплатной, мощнейшей и очень гибкой CMS системы - TYPO3.
Просмотреть профиль

Позвонить мне в Skype

TOP - 3