TYPO3如何使用TypoScript包装iframe(RTE)?

时间:2016-10-17 15:00:13

标签: iframe typo3 typoscript rte

我正在使用带有fluid styled content的TYPO3 7.6,并且我允许我的编辑器将iframe插入到富文本编辑器(RTE或htmlarea)中。由于Snippet,显示了iframe。没关系。

现在我想用iframe包裹这个typoscript,因为iframe必须是响应式的,所以我需要......像那样,作为一个包装:

<div class="embed-container">
    <iframe width="560" height="315" src="https://www.youtube.com/embed/7DRU" frameborder="0" allowfullscreen></iframe>
</div>

CSS

.embed-container {
  position: relative; 
  padding-bottom: 56.25%; /* ratio 16x9 */
  height: 0; 
  overflow: hidden; 
  width: 100%;
  height: auto;
}
.embed-container iframe {

  position: absolute; 
  top: 0; 
  left: 0; 
  width: 100%; 
  height: 100%; 
}

如何使用某些HTML代码封装TYPO3-RTE中的iframe

我试过了......像这样...但它不起作用。

### wrap iframe at RTE
lib.parseFunc_RTE {
    externalBlocks := addToList(iframe)
    externalBlocks {
        iframe.stripNL = 1
        iframe.callRecursive = 1
        iframe.callRecursive.tagStdWrap.HTMLparser = 1
        iframe.callRecursive.tagStdWrap.HTMLparser.tags.iframe {
            fixAttrib.class.default = classOfiframe
            wrap = <div>|</div>
        }
    }
}

lib.parseFunc_RTE.tags.iframe = TEXT
lib.parseFunc_RTE.tags.iframe {
    wrap = <div class="test">|</div>
}

1 个答案:

答案 0 :(得分:2)

安全侧注

允许您的编辑手工制作HTML会增加您的网站被XSS(跨站点脚本)攻陷的可能性。不建议允许直接输入HTML,特别是如果您不能完全信任您的编辑。

TypoScript调整

你是TypoScript几乎没问题,只有你应用属性的级别是错误的。

以下示例将问题全面展开。开头的部分基本上是通过获取内容元素来解决的 - 在这方面,它初始化要解析的状态。您的方案中只需要进行 int tabToReload=2; var tabstrip = $("#tabstrip").data("kendoTabStrip"); loadTabStripTab($(tabstrip.contentElement(tabToReload)),'@Url.Action("SomeAction","SomeController")', someID); function loadTabStripTab(tab,actionUrl,someID) { $.ajax({ type: "GET", url: actionUrl, datatype: "json", traditional: true, data: { SomeID : someID }, success: function (data, status, xhr) { tab.html( data); }, error: function (xhr, status, error) { tab.html( data); } }); } 调整。

lib.parseFunce_RTE

生成输出

这会产生以下输出 - 期望# Simulating some content page = PAGE page.10 = TEXT page.10.value ( <p>Before</p> <iframe width="560" height="315" src="https://www.youtube.com/embed/7DRU" frameborder="0" allowfullscreen></iframe> <p>After</p> <main>Not parsed...</main> ) page.10.parseFunc =< lib.parseFunc_RTE # Adjusting parsing instructions for IFRAMES lib.parseFunc_RTE { allowedTags := addToList(iframe) externalBlocks := addToList(iframe) externalBlocks { iframe.stripNL = 1 iframe.stdWrap.wrap = <div class="frame-wrapper">|</div> } } 标记被编码,因为它未定义为处理。 <main>语句负责此非匹配标记的编码。

nonTypoTagStdWrap.HTMLparser

parseFuncTypoScript reference

中查找更多详情