Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
03.03.2011, 15:27 | #1 |
Новенький
Регистрация: 19.10.2007
Сообщений: 3
|
Использование typoLink в собственном скрипте
Здравствуйте.
Имеется один сайт на typo3. В нем используется флешевая галерея для которой пришлось писать админку на php. Админка - набор отдельных php файлов, в которых производится чтение дерева тайпо и последующая геннерация xml для флеш. Возникла надобность во флеш вставлять real_url используемых страниц и тут появилась сама проблема. Долго блуждал по просторам google но так и не смог найти как получить доступ к чему-то типа typoLink вне движка тайпо. Может кто подсказать какие файлы тайпо нужно заинкладить в кастомный пхп чтобы заставить работать эту функциональность? Зарание спасибо за ответы. |
03.03.2011, 19:35 | #2 |
Senior Member
|
|
03.03.2011, 20:17 | #3 |
Новенький
Регистрация: 19.10.2007
Сообщений: 3
|
Ссылка конечно интерестная, но не к месту.
Мне не нужно собирать xml в TS. Задача - кастомная админка для управления гелереей. Сама задача в целом решена. Вопрос только в том, как имея uid страницы в моем кое получить ссылку на эту страницу в правильном виде, а не index.php?id=1 и т.д. Замечу, что сама галререя не имеет отношения прямого к дереву страниц. Это набор изображений загруженых пользователем. Просто на изображениях расставляются хотспоты, в которые и нужно вставлять ссылки. |
04.03.2011, 01:27 | #4 |
Senior Member
|
Если используемая галерея встраивается в typo3 сайт, почему нельзя использовать возможности классов typo3?
|
04.03.2011, 10:31 | #5 |
Новенький
Регистрация: 16.12.2010
Сообщений: 14
|
-=UncleByte=-, он и спрашивает какой стандартный класс использовать для реализации TypoLink
turim, вот это инклудьте typo3/sysext/cms/tslib/class.tslib_content.php |
04.03.2011, 11:58 | #6 |
Senior Member
|
Если ваш PHP код по отношению к TYPO3 совсем уж "внешний" - то есть использовать TYPO3-классы не получается, то поставьте экстеншн pagepath (http://typo3.org/extensions/reposito...epath/current/).
В документации пример использования, который тоже требует включения классов внутри окружения TYPO3. PHP код:
Конечно генерить URL таким способом медленнее, чем через прямое обращение к функциям класса tslib_content, но иногда другого выхода нет - например в BackEnd-е. |
04.03.2011, 12:18 | #7 |
Senior Member
|
Если ли бы вы делали ваш код, как типичный плагин наследуемый от класса tslib_pibase, то в нем есть ряд функций для генерации ссылок:
PHP код:
PHP код:
PHP код:
|
05.03.2011, 15:16 | #8 | |
Senior Member
Регистрация: 24.06.2006
Сообщений: 143
|
Цитата:
поэтому самый быстрый способ получить ссылку: PHP код:
|
|
06.03.2011, 18:25 | #9 |
Senior Member
|
Ну если вы хотите так углубиться, то typolink() является "оберткой" для $GLOBALS['TSFE']->tmpl->linkData()
"Быстрый" в вашем примере понятие весьма условное. Так как скорость генерации ссылки будет одинакова - накладные расходы на обертки во много-много раз меньше, чем время генерации ссылки через linkData(). А вот удобство и читаемость кода ухудшаються. И банально можно опечататься в названии передаваемых переменных и потом долго искать причину, почему же нет ссылки. |
08.03.2011, 04:38 | #10 | |
Senior Member
Регистрация: 24.06.2006
Сообщений: 143
|
Цитата:
Эти функции находятся на разных слоях API. Каспер разрабатывал TYPO3 как фреймворк, а не как обычную CMS. И linkData() находится в t3lib директории, то есть это часть фреймворка. А typolink() в директории tslib, то есть это часть экстеншена СMS. Все ссылки, которые генерятся через шаблоны, идут только через typolink(), и какое-либо расширение может через хуки в typolink() изменять вид ссылок. Поэтому, когда мы вызываем typolink() мы всегда знаем, что получаем самую "правильную" ссылку. Ну и наконец вызывать linkData() просто неудобно - например нужно передавать не id страницы, а ее запись, то есть нужно будет самому делать запрос к БД, но это пол беды – нужно самому проверять, что у юзера есть доступ к этой странице, нужно проверить, что эта страница не shortcut, проверить, что там нет mount point и т.д. и т.п. То есть придется самому написать половину из тех 500 строк в typolink() PS Еще заметил, что у вас вызов неправильно написан: PHP код:
Последний раз редактировалось jettero; 08.03.2011 в 04:54 |
|