Вывод динамического меню с опечаткой 3 на стороннем сайте

Я хочу иметь возможность отображать меню с опечаткой 3 на стороннем сайте, поскольку часть сайта размещена в другой системе. Я бы предположил, что лучший способ сделать это - использовать json или xml-канал, но я не вижу, как выводить json через typoscript или любой другой метод динамически в typo3?


person ak85    schedule 06.02.2012    source источник
comment
Я бы выбрал решение StephenKing, включенное на страницу в iframe (простой) или загруженное с помощью JavaScript и вставленное в заданное место на странице. Конечно, вы можете загрузить содержимое меню как json (потребуется плагин или, по крайней мере, собственный метод PHP для вывода его в TYPO3) или XML (можно сделать только с TypoScript), проанализировать его и вывести на страницу, но это просто дополнительная работа без видимой выгоды (если сторонний сайт не должен контролировать вывод меню).   -  person tmt    schedule 06.02.2012


Ответы (2)


Возможно, вы сможете получить HTML-код через http-запрос, проанализировать HTML-документ и вставить меню в нужное место.

 $homepage = file_get_contents('http://www.example.com/page/with/menu/');
 ... crop 

Таким образом, на вашей веб-странице TYPO3 вам нужно только создать страницу с меню, которое вам нужно на другом сервере. Анализируйте содержимое и используйте только меню. F.e. вы можете добавить маркер к своему меню.

 lib.menu = HMENU
 lib.menu {
   ... your config ...
   stdWrap {
     prepend = TEXT
     prepend.value = ####SomeMarkerBegin###
     append = TEXT
     append.value = ###SomeMarkerEnd###
   }
 }
person maholtz    schedule 09.02.2012
comment
Спасибо, я кое-что дополнил с помощью file_get_contents - person ak85; 17.04.2012

Вы даже можете добавить собственный объект PAGE (через TypoScript) с другим typeNum. Добавьте к этому объекту PAGE только меню, но не его содержимое (например, css_styled_content). Вы также можете отключить весь код заголовка. В результате получается просто HTML-код меню, который можно вывести прямо на другой сайт.

person StephenKing    schedule 06.02.2012
comment
Ага. Этот HTML-код меню можно отправить либо напрямую с помощью ajax, либо через iframe, либо через запрос php, который можно кэшировать на стороне сервера. - person Fedir RYKHTIK; 06.02.2012
comment
Использовать ajax.php не так-то просто, поскольку вам нужно создать экземпляр отрисовки TSFE самостоятельно. Использование другого объекта PAGE упрощает ИМХО. И, конечно же, меню нужно кешировать в другом приложении;) - person StephenKing; 06.02.2012
comment
Спасибо @StephenKing. Я действительно пробовал это, так как это другой домен, я не верю, что могу использовать загрузку ajax? Я попробовал Iframing, и он хорошо работает в IE, но во всех других браузерах вы не можете щелкнуть какой-либо другой контент, который находится под событием iframe as, хотя фрейм прозрачен, он по-прежнему накладывается поверх контента, что предотвращает щелчок. Есть ли другой способ обойти это? - person ak85; 07.02.2012