TYPO3 передает значение переменной Fluid в Javascript
В жидком шаблоне у меня есть переменная, значение которой я хотел бы использовать в своем коде JavaScript.
Я использую JavaScript внутри жидкого шаблона.
Мой код:
<!-- value I would use further in my javascript -->
<h1 id="product-model">{product.model}</h1>
<!-- Javascript code (in the same file) -->
<script>
<![CDATA[
function printProductWindow() {
document.title = document.getElementById("product");
window.print();
}
]]>
</script>
Заранее спасибо! Денис
5 ответов
Ваш идентификатор элемента неверен:
document.title = document.getElementById("product-model");
потому что вы определили это как id="product-model"
,
В качестве альтернативы, если ваш JavaScript находится в FluidTemplate, вы также можете установить значение там:
<script>
<![CDATA[
function printProductWindow() {
document.title = "]]>{product.model}<![CDATA[";
window.print();
}
]]>
</script>
Но позвольте мне предупредить вас: изменение названия с помощью JavaScript не является хорошей практикой.
Взгляните на TitleTagViewHelper из расширения новостей здесь, чтобы увидеть одно решение, как это можно решить.
<script>
function printProductWindow() {
document.title = <f:format.raw>{product.model}<f:format.raw>;
window.print();
}
</script>
Для TYPO3 8.7.
Вы также можете использовать переменные жидкости в js, но в большинстве случаев вам нужно использовать формат viewhelper, например <f:format.htmlspecialchars>
,
<script>
<![CDATA[
function printProductWindow() {
document.title = '<f:format.htmlspecialchars>{product.model}<f:format.htmlspecialchars>';
window.print();
}
]]>
</script>
https://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ThingsToKnow/JsAndInline.html
<f:format.cdata>
<script type="text/javascript">
var myLayout;
$(document).ready(function() {
myLayout = $('body').layout({
north__size: 27,
north__initClosed: false,
north__initHidden: false,
center__maskContents: true // IMPORTANT - enable iframe masking
});
});
</script>
</f:format.cdata>
Другой способ:
<!-- value I would use further in my javascript -->
<h1>{product.model}</h1>
<!-- Javascript code (in the same file) -->
<script>
function printProductWindow() {
<f:format.raw>
document.title = {product.model};
window.print();
</f:format.raw>
}
</script>
Поместите Viewhelper <f:format.raw> в ближайшие фигурные скобки, которые должны выводить переменную для правильного обнаружения жидкости.