Замена редиректов для HMENU на прямые ссылки
Typo3 при генерации меню (HMENU) использует редиректы для страниц типа “External URL”. В общем случае этот механизм не вызывает нареканий, но иногда требуется, чтобы меню содержало прямую ссылку на ресурс или файл. Например, при использовании Secure Downloads (naw_securedl) возникает проблема с тем, что ссылка не указывает фактически на требуемый файл.
Для того, чтобы заставить меню генерировать прямы ссылки, можно воспользоваться следующим кодом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | NO.allStdWrap.override { if.value.field = doktype if.equals = 3 field = title typolink { target = _blank extTarget = _blank ATagParams = class="noicon" parameter.field = url parameter.split { token = / cObjNum = 1 1.current = 1 1.rawUrlEncode = 1 1.wrap = /| } } } |
Использование split связано с тем, что в некоторых ссылках присутствовали пробелы и пришлось кодировать URL (при этом не трогая обратный слэш “/”)
Кстати, использование split в меню несколько проблематично. Дело в том, что все optionSplit обрабатываются генератором меню и следоватоельно split с более чем одним вариантом объекта обрабатываешьего split будет работать некорректно.
4 Responses to “Замена редиректов для HMENU на прямые ссылки”
Leave a Reply










void on December 28th, 2006
Кстати говоря, этот метод можно применять еще в одном случае – для замены в HMENU ярлыков на реальные id. В этом случае не будет двух страниц с разным id, но с одинаковым содержимым, что хорошо для гугла.
lib.menu2.1 = TMENU
lib.menu2.1 {
noBlur = 1
expAll = 1
wrap = |
NO.allStdWrap.wrap = |
NO.allStdWrap.override {
if.value.field = doktype
if.equals = 4
field = title
typolink {
parameter.field = shortcut
}
}
ACT = 1
ACT.allWrap = |
#ACT
Павел Антонов on January 2nd, 2007
Да, согласен. Иногда тоже избавлялся от такой особенности Shortcut-страниц.
Артем Матевосян on May 21st, 2008
RealURL с этой задачей правда самостоятельно справляется.
Брун on September 3rd, 2008
Опять-таки побочная проблемка. Вряд ли она кому-то мешает, мне например как то все равно :)