Как встроить HTML-код карты изображений в TYPO3 с помощью функций typolink / realURL?

Контекст:

Мне нужно вставить карту изображений на страницу в TYPO3 6.1.

Поскольку EXT: imagemap_wizard в настоящее время не работает в версии 6.1, я могу создать карту изображений в автономном режиме, а затем вставить ее через тип содержимого HTML.

Вопрос:

Было бы неплохо иметь возможность просто писать внутренние URL-адреса в HTML, но выводить реальные URL-адреса. Можно ли передать поле типа «HTML» через синтаксический анализатор, отображающий URL-адреса?

Так что

<area shape="rect" href="index.php?id=55" coords="6,153,189,231" alt="">

будет отображаться как

<area shape="rect" href="/my/realurl/" coords="6,153,189,231" alt="">

Или есть другой способ? Может быть, поместить HTML-код в гибкий шаблон и указать ему отображать любой URL-адрес, который он найдет в шаблоне?


person Urs    schedule 17.01.2014    source источник
comment
Вопрос скорее академический, чем насущный, но было бы интересно узнать, возможно ли это.   -  person Urs    schedule 17.01.2014


Ответы (2)


Простой подход с parseFunc_RTE не работает, потому что нам нужно воздействовать на атрибут. Итак, этот код протестирован с css_styled_content TYPO3 6.1. Итак, просто используйте функцию тегов:

# we parse the HTML, but we only focus on tag *area*
# i created an COA, because IMHO it is easier to maintain.
# i guess, it would be possible in a few lines only, but i did not tested that
tt_content.html.parseFunc.tags.area = COA
tt_content.html.parseFunc.tags.area {
 wrap = <area |/>
 20 = TEXT
 # all attributs are loaded into parameters array
 20.data = parameters:shape
 20.noTrimWrap = | shape="|" |
 30 = TEXT
 30.typolink.parameter.data = parameters:href
 # we only need the URL, not the full link
 30.typolink.returnLast = url
 30.noTrimWrap = | href="|" |
 40 = TEXT
 40.data = parameters:coords
 40.noTrimWrap = | coords="|" |
 50 = TEXT
 50.data = parameters:alt
 50.noTrimWrap = | alt="|" |
}

# for testcase, create TS-Template with css_styled_content included
# and create html-record on that page in column 0
page = PAGE
page.10 < styles.content.get
person maholtz    schedule 11.03.2014
comment
Фантастика! Большое спасибо. Я успешно его реализовал. Думаю, я открою новый вопрос. Как вставить карту изображений в TYPO3, чтобы ее было легче найти - вы тоже хотите опубликовать свое решение (чтобы я мог его принять)? - person Urs; 12.03.2014
comment
Ваш настоящий заголовок намного лучше - он о типовых ссылках в HTML-полях. ИМХО не стоит открывать новый вопрос. А нельзя просто изменить название, если считаете, что это нужно? - person maholtz; 12.03.2014
comment
Хм, как ты говоришь, ты спас мне день! :-) Мне нравится, когда вы находите учебник по stackoverflow. Я поменяю название. В любом случае, я добавил ваше решение в forge.typo3.org/issues/53263, который довольно googlable - person Urs; 12.03.2014

Если вы анализируете объект HTML-Content через lib.parseFunc, вы можете использовать -Tag, который будет создавать ссылки типа. Установив realurl, вы получите нужные адреса :)

Объект HTML-содержимого будет отображаться (с помощью css_styled_content) через tt_content.html.

Так что добавь

  tt_content.html.parseFunc < lib.parseFunc_RTE

К вашему объекту HTML и вставьте в свой контент тег LINK:

  <area shape="rect" href="<link>55</link>" coords="6,153,189,231" alt="">

IMHO не академический вопрос, вы всегда должны использовать типовые ссылки :)

person maholtz    schedule 17.01.2014
comment
Звучит здорово! Но объект lib.parsefunc кодирует теги ‹map› и ‹area› (хотя и не ‹img›). Я пробовал установить tt_content.html.parseFunc.allowTags = area,map,img или tt_content.html.parseFunc.allowTags:=addToList(area,map,img), но пока не повезло - person Urs; 18.01.2014
comment
нет, не меняйте сам parseFunc, просто используйте его. Он проанализирует ваш HTML-объект и создаст ссылку на страницу 55, если у вас есть ‹link› 55 ‹/link›. Если realurl активирован, вы получите его через / path / to / site / - person maholtz; 20.01.2014
comment
Проблема в том, что он выводит следующее: &lt;map name=&quot;image_map&quot;&gt; &lt;area shape=&quot;rect&quot; href=&quot;&lt;link&gt;55</link>&quot; coords=&quot;6,153,189,231&quot; alt=&quot;&quot; /&gt; &lt;/map&gt; <img src="images/css_imagemap.png" alt="" usemap="#image_map" width="1043" height="871"> - person Urs; 20.01.2014
comment
Таким образом, parseFunc (без настроек allowTags, упомянутых выше) выполняет некоторые htmlescape или аналогичные преобразования в тегах карты и области, которых он не должен делать. И он даже не разбирает типичную ссылку, я только что заметил - что это может быть? Какие-то предыдущие настройки все испортили? - person Urs; 20.01.2014
comment
о, извините, lib.parseFunc_RTE должен быть правильным выбором ... вы можете попробовать? - person maholtz; 20.01.2014
comment
Без установки allowTags parseFunc_RTE просто экранирует весь код. Если я установил tt_content.html.parseFunc.allowTags:=addToList(area,map,img)-, тогда он принимает теги map и img (прогресс!) - но все равно избегает тега области, не анализируя typolink. Если бы я вместо этого использовал гибкий шаблон для того же кода, была бы возможность применить другой синтаксический анализатор, который, возможно, был бы менее строгим? - person Urs; 21.01.2014