LinkExchange и TurboGears 1.0
Для использования LinkExchange c TurboGears 1.0 необходимо сделать следующее:
- Установить LinkExchange и LinkExchange.TurboGears.
- Добавить шаблонные переменные из функции linkexchange.turbogears.support.add_stdvars.
- Создать файл конфигурации linkexchange.cfg и дать ссылку на него в параметре linkexchange.config в файле app.cfg.
- В шаблонах использовать переменную tg.linkexchange_blocks, которая содержит список блоков ссылок для размещения на странице.
Изменено в LinkExchange версии 0.4: Начиная с версии LinkExchange 0.4 поддержка TurboGears вынесена в отдельный проект LinkExchange.TurboGears.
Примеры файлов
Фрагмент файла инициализации (каталог_проекта/имя_проекта/__init__.py):
import turbogears from linkexchange.turbogears import support as lx_support turbogears.view.variable_providers.append(lx_support.add_stdvars)
Файл конфигурации LinkExchange (каталог_проекта/linkexchange.cfg):
[options] as_kid_xml = true [client-1] ; биржа ссылок Sape.ru type = sape ; хеш-код пользователя на Sape.ru user = user12345 db_driver.type = shelve db_driver.filename = %(basedir)s/sape-XXX.db [client-2] ; биржа ссылок LinkFeed.ru type = linkfeed ; хеш-код пользователя на LinkFeed.ru user = user12345 db_driver.type = shelve db_driver.filename = %(basedir)s/linkfeed-XXX.db [formatter-1] type = list count = 2 class_ = linx prefix = "- " suffix = ". " [formatter-2] type = inline count = 2 class_ = linx delimiter = " | " prolog = "| " epilog = " |" [formatter-3] type = list count = none class_ = linx prefix = "+ " suffix = ". "
Фрагмент файла конфигурации приложения (каталог_проекта/имя_проекта/config/app.cfg):
[global] linkexchange.config = "%(top_level_dir)s/../linkexchange.cfg"
Фрагмент файла базового шаблона (каталог_проекта/имя_проекта/templates/master.kid):
<div id="main_content">
<div id="status_block" class="flash"
py:if="value_of('tg_flash', None)" py:content="tg_flash"></div>
<div py:replace="[item.text]+item[:]">page content</div>
<div py:if="hasattr(tg, 'linkexchange_blocks')"
py:replace="tg.linkexchange_blocks[0]"/>
</div>
Контекстные ссылки
Для использование контекстных ссылок нужно сделать следующее:
- Установить LinkExchange и LinkExchange.TurboGears.
- Добавить шаблонные переменные из функции linkexchange.turbogears.support.add_stdvars.
- Создать файл конфигурации linkexchange.cfg и дать ссылку на него в параметре linkexchange.config в файле app.cfg.
- В шаблонах для фильрации контента использовать функцию tg.linkexchange_filter(), которая в единственном аргументе принимет unicode-строку, содержащую HTML-код или объект kid.ElementStream.
Фрагмент файла базового шаблона (каталог_проекта/имя_проекта/templates/master.kid) для примера:
<div id="main_content">
<div id="status_block" class="flash"
py:if="value_of('tg_flash', None)" py:content="tg_flash"></div>
<div py:if="hasattr(tg, 'linkexchange_filter')"
py:replace="tg.linkexchange_filter([item.text]+item[:])"/>
<div py:if="not hasattr(tg, 'linkexchange_filter')"
py:replace="[item.text]+item[:]"/>
</div>
Размещение статей
Для автоматического размещения статей и их анонсов нужно проделать следующую процедуру:
- Установить LinkExchange и LinkExchange.TurboGears.
- Добавить шаблонные переменные из функции linkexchange.turbogears.support.add_stdvars.
- Создать файл конфигурации linkexchange.cfg и дать ссылку на него в параметре linkexchange.config в файле app.cfg.
- В шаблонах использовать переменную tg.linkexchange_blocks, которая содержит список блоков ссылок (анонсов статей) для размещения на странице.
- Подключить контроллер linkexchange.turbogears.controllers.LinkExchangeHandler.
Опции конфигурационного файла
- as_kid_xml
- Если true, то строки в списках linkexchange_blocks и linkexchange_links преобразуются в объекты представления XML, используя функцию kid.XML().
- use_raw_links
- Значение true устанавливает переменную шаблона linkexchange_links со списком необработанных ссылок для текущей страницы. По умолчанию false.
