#html #typo3 #typo3-9.x
#HTML #typo3 #typo3-9.x
Вопрос:
У меня есть сборка страницы с TyYPO3 V9. Я должен разделить страницу где-то на 2 части. В первой части я называю это разделом заголовка. В разделе заголовка есть изображение, кнопки и проигрыватель. После раздела заголовка находится меню, за которым следует часть страницы, которая изменилась в зависимости от пункта меню.
У меня проблема в том, что при нажатии на пункт меню обновляется вся страница, даже проигрыватель. В результате проигрыватель останавливается и всегда запускается снова.
Есть ли вероятность, что TYPO3 обновит только меню и часть под меню?
Комментарии:
1. Обычно при написании вопросов добавляется вся возможная информация. Не зная кода, как кого-либо можно попросить решить ситуацию, подобную вашей? Ваш ли код? Содержит ли он Javascript? Без дополнительной информации это не гарантирует сохранения вашего вопроса активным.
Ответ №1:
То, что вы запрашиваете, — это AJAX. Для этого
в TYPO3 нет встроенного механизма. Тем более, что вы хотите изменить меню и некоторое содержимое.
Но вы можете создать его самостоятельно:
добавьте немного javascript для изменения элементов меню и запустите процедуру javascript, которая вызывает всю страницу и извлекает соответствующие части для замены на текущей странице.
Или укажите дополнительный тип страницы, который предоставляет только необходимые вам данные (меню и основное содержимое), например, в виде JSON.
Редактировать:
Поскольку у меня нет готового примера, я не могу скопировать его здесь.
Что касается AJAX, вы должны найти много примеров и библиотек. В зависимости от вашего предпочтительного фреймворка javascript (я буду использовать jquery) должны быть некоторые приятные процедуры.
сначала вам нужна функция javascript, которая заменяет основное содержимое другим фрагментом html.
function replaceContent(replpaceHTML) {
$('#content').html(replaceHTML);
}
Тогда вам нужен поставщик для этого HTML.
поскольку вы используете TYPO3, вы можете определить другой тип страницы со специальным отображением, поэтому возвращается только основное содержимое без HTML-заголовка и без верхнего и нижнего колонтитулов страницы.
AJAX = page
AJAX {
typeNum = 12345
config {
disableAllHeaderCode = 1
disablePrefixComment = true
metaCharset = UTF-8
}
10 < styles.content.get
}
теперь вы можете получить основное содержимое каждой страницы https://domain.tld/index.php?id=123amp;type=12345
.
Поскольку ваше меню содержит обычные ссылки, вам необходимо изменить поведение вашего меню: добавьте обработчик событий к каждой ссылке, который вызывает процедуру javascript вместо перехода по ссылке.
$('.menuitem').onClick(function (event) {
var url = $this.attr('href');
$.ajax({
async: false,
url: url '?type=12345', // assuming complete URLs without parameters
complete: function(data){
var newContent = $(data.responseText);
replaceContent(newContent);
}
});
event.stopPropagation();
});
это будет содержать обычные недостатки AJAX: содержимое и URL-адрес больше не совпадают, поэтому добавление закладок к текущему содержимому (/ page) невозможно. также нет истории.
Но есть решения с дальнейшим использованием javascript.
Комментарии:
1. Бернд, возможно, я недостаточно четко указал на это. Я не хочу менять меню, но меню меняется, когда я нажимаю элемент. Если я использую JSON для чего я использую Typo3? Единственные изменения, которые мне нужны, — это позаботиться о том, чтобы часть, которую я назвал заголовком, не была изменена или защищена для обновлений Typo3.
2. в зависимости от вида и стиля меню вам может потребоваться изменить меню (ACT и CUR могут измениться). в любом случае: вам нужна процедура AJAX на вашей странице, которая вызывает (основное) содержимое из TYPO3 для страницы, выбранной в меню. это можно сделать с помощью дополнительного pagetype . предоставляете ли вы заглушки JSON или HTML, зависит от вас. AJAX является гибким, как и рендеринг в TYPO3.
3. Извините, но я не понимаю, что мне делать? Я помещаю часть заголовка в iframe, но также этот iframe обновляется с помощью Typo3. Что мне действительно нужно, так это какой-то механизм, который позволяет избежать обновления части заголовка или того, что Typo3 — это только часть, в которой содержимое должно быть разделено, а не на всю страницу. Я уже использую загрузку jquery для автоматического обновления части экрана. Но я все еще хочу использовать typo3, когда кто-то щелкает по пункту меню. Поэтому, пожалуйста, объясните, как я могу использовать вызов AJAX, чтобы избежать этого.
4. Я набросал использование ajax в своем ответе.