Создаем XML дерева страниц TYPO3 для Flash меню

English version / Английская версия статьи

Возможности TYPO3 совсем не ограничены одними только HTML страницами. Для того что бы сформировать XML файл по контенту в TYPO3 совершенно не нужны какие-либо расширения, коих, к моему удивление, такое большое количество в репозитории.
Поскольку я не приветствую использование расширений без особой причины, приведу пример формирования XML выгрузки страниц из TYPO3 для Flash меню. Стоит отметить, что тем же способом можно выдавать абсолютно любого вида и направленности данные, как например, Google Sitemaps или WML и т.д.

XML для Flash menu имеет следующий вид:

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<menu>
  <item url="index.php?id=1" title="Page 1" />
  <item url="index.php?id=2" title="Page 2" />
  <item url="index.php?id=3" title="Page 3">
    <item url="index.php?id=4" title="Page 3-1" />
    <item url="index.php?id=5" title="Page 3-2" />
    <item url="index.php?id=6" title="Page 3-3">
  </item>
  <item url="index.php?id=7" title="Page 4"/>
</menu>

Typoscipt генерации такого XML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
########################################
# PAGETREE TO XML
########################################
xmlmenu = PAGE
xmlmenu.typeNum = 111
# отключаем генерацию стандартных заголовка страницы TYPO3
xmlmenu.config.disableAllHeaderCode = 1
# устанавливаем корректный тип контента
xmlmenu.config.additionalHeaders = Content-Type: application/xml
 
# Выдаем заголовок XML
xmlmenu.10 = TEXT
xmlmenu.10.value = <?xml version="1.0" encoding="UTF-8"?>
xmlmenu.10.postCObject = TEXT
xmlmenu.10.postCObject.char = 10
 
# Сами данные дерева страниц
xmlmenu.20 = HMENU
xmlmenu.20 {
 wrap = <menu>|</menu>
 entryLevel = 0
 1 = TMENU
 1 {
  expAll = 1
  NO {
   doNoShowLink = 1
   allStdWrap.cObject = COA
   allStdWrap.cObject.10 = TEXT
   allStdWrap.cObject.10.typolink.parameter.field = uid
   allStdWrap.cObject.10.typolink.returnLast = url
   allStdWrap.cObject.10.noTrimWrap = |<item url="|" |
   allStdWrap.cObject.20 = TEXT 
   allStdWrap.cObject.20.field = nav_title // title
   allStdWrap.cObject.20.wrap = title="|"/>
  }
 
# отличается от NO тем, что нам надо обернуть под элементы в <item></item>
  IFSUB < .NO
  IFSUB = 1
  IFSUB {
# Добавляем завершающий </item>
   wrapItemAndSub = |</item>
# Заменяем <item ... /> на <item ...>
   allStdWrap.cObject.20.wrap = title="|">
  }
 }
 
 2 < .1
 3 < .1
 4 < .1
 5 < .1
}

Flash приложение теперь может получать данные для меню по адресу “index.php?type=111″

При желании можно добавить и выгрузку контента из TYPO3, что может быть актуально для сайтов созданных полностью на Flash, но использующих TYPO3 в качестве системы управления. И без всяких расширений…

Share and Enjoy:
  • Print this article!
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • StumbleUpon
  • TwitThis

2 Responses to “Создаем XML дерева страниц TYPO3 для Flash меню”

  1. How-to create dynamic XML for Flash menu based on TYPO3 pagetree at Codeline  on May 22nd, 2008

    [...] Русская версия статьи / Russian version [...]

  2. Дмитрий Сподарец » Blog Archive » Создаем XML дерева страниц TYPO3 для Flash меню  on June 1st, 2008

    [...] http://codeline.richmd.ru/?p=23 Послать ссылку на этот обзор другу по ICQ или [...]


Leave a Reply