Цитата:
Сообщение от dmartynenko
Ну если вы хотите так углубиться, то typolink() является "оберткой" для $GLOBALS['TSFE']->tmpl->linkData()
|
typolink() нельзя назвать оберткой. Обертка это когда всю работу выполняет другая функция, которую мы вызываем с нужными параметрами. А если сравнить объем кода: linkData() - 85 строк, typolink() - 527 строк.
Эти функции находятся на разных слоях API. Каспер разрабатывал TYPO3 как фреймворк, а не как обычную CMS. И linkData() находится в t3lib директории, то есть это часть фреймворка. А typolink() в директории tslib, то есть это часть экстеншена СMS.
Все ссылки, которые генерятся через шаблоны, идут только через typolink(), и какое-либо расширение может через хуки в typolink() изменять вид ссылок. Поэтому, когда мы вызываем typolink() мы всегда знаем, что получаем самую "правильную" ссылку.
Ну и наконец вызывать linkData() просто неудобно - например нужно передавать не id страницы, а ее запись, то есть нужно будет самому делать запрос к БД, но это пол беды – нужно самому проверять, что у юзера есть доступ к этой странице, нужно проверить, что эта страница не shortcut, проверить, что там нет mount point и т.д. и т.п.
То есть придется самому написать половину из тех 500 строк в typolink()
PS Еще заметил, что у вас вызов неправильно написан:
PHP код:
$link = $GLOBALS['TSFE']->tmpl->linkData($page_id, '', $GLOBALS['TSFE']->no_cache, '', '', $params, $type);
там не $page_id, а массив $page.