视图从输出中剥离标记

Mar*_*que 7 tags drupal drupal-views content-management-system

我有一个Drupal视图,应该使用flash输出视频播放器.我正在尝试输出一个可以调用flash影片的脚本.问题是Views应用了某种过滤器来剥离我的<script>标签,即开始和结束标签.我正在寻找一个解决方案(视图中的一些设置将禁用该过滤器),但似乎无法找到答案.其他HTML标签可以工作,但似乎脚本标签被剥离,可能出于某些安全原因.

我选择了重写字段输出的选项,我正确使用了标签

视图还从我的标签中剥离样式属性.例如:

<h3 style="border-bottom: solid 1px #ffcc99;">Some text here</h3>
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

<h3>Some text here</h3>
Run Code Online (Sandbox Code Playgroud)

这有解决方案吗?谢谢.


开始编辑


我粘贴在我正在使用的代码下面.

<div class="bloco-filme">
  [title]
  <div class="field-imagem">
    [field_imagem_fid]

    <script type='text/javascript' src='sites/default/files/js/swfobject.js'></script>

    <div id='mediaspace[nid]'>Se você estiver visualizando esta mensagem, significa o Flash Player não está instalado em sua máquina. Para assistir ao vídeo é preciso instalar o Flash player</div>

    <script type='text/javascript'>
      var so = new SWFObject('sites/default/files/plugins/jqplayer/player.swf','mpl','205','undefined','9');
      so.addParam('allowfullscreen','true');
      so.addParam('allowscriptaccess','always');
      so.addParam('wmode','transparent');
      so.addVariable('file','[field_video_fid]');
      so.addVariable('quality','false');
      so.write('mediaspace[nid]');
    </script>
    [field_video_fid]
  </div>
  <div class="field-resumo">
    <p>[body]</p>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

再次编辑


上面的代码已经发布在我的视图中.我创建了一个视图来处理这个问题.这是我观点的FIELDS区域:

字段节点:Nid节点:Título(标题,它在pt-br中)节点:链接"editar"(编辑)节点:链接"apagar"(删除)Conteúdo:Imagem缩略图图像Conteúdo:视频URL do arquivo(视频文件URL )节点:Corpo(Body)

我已禁用上面所有字段的显示,并已将所有代码打包在Body字段中.在那里,我选择了我想要重写字段输出的选项.

小智 5

kiamlaluno确定了基本问题,但要解决它,你将不得不使用一个字段模板,这将避免使用视图使用的过滤系统.第42组有一个很好的指南,可以引导您完成视图主题的基础知识,因此我将简单介绍这些细节并讨论您的具体案例.

首先,您需要确定要重写的字段:我相信您使用字段配置执行此操作,但不清楚您要重写哪个字段.我将假设它是身体领域.浏览Group 42的指南,为主题中的body字段创建一个新的模板文件.

在新模板文件中,使用以下代码:

<div class="bloco-filme">
  <?php print $view->field['title']->render($row) ?>
  <div class="field-imagem">
    <?php print $view->field['field_imagem_fid']->render($row) ?>

    <script type='text/javascript' src='sites/default/files/js/swfobject.js'></script>

    <div id="mediaspace<?php print $view->field['nid']->render($row) ?>">Se você estiver visualizando esta mensagem, significa o Flash Player não está instalado em sua máquina. Para assistir ao vídeo é preciso instalar o Flash player</div>

    <script type='text/javascript'>
      var so = new SWFObject('sites/default/files/plugins/jqplayer/player.swf','mpl','205','undefined','9');
      so.addParam('allowfullscreen','true');
      so.addParam('allowscriptaccess','always');
      so.addParam('wmode','transparent');
      so.addVariable('file','<?php print $view->field["field_video_fid"]->render($row) ?>');
      so.addVariable('quality','false');
      so.write('mediaspace<?php print $view->field["nid"]->render($row) ?>');
    </script>
    <?php print $view->field['field_video_fid']->render($row) ?>
  </div>
  <div class="field-resumo">
    <p><?php print $output ?></p>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

保存新的模板文件,现在正文字段将替换为正确的输出.在编辑视图时,只需确保模板中引用的所有字段都位于" 字段"列表中的正文字段之前.

你可以看到这主要是带有几个PHP位的HTML.像这样的代码:

<?php print $view->field['title']->render($row) ?> 
Run Code Online (Sandbox Code Playgroud)

输出除当前字段之外的字段的内容(即,当您要引用除Body之外的字段时,使用此代码).它引用同一行并查找字段的值.

像这样的代码:

<?php print $output ?> 
Run Code Online (Sandbox Code Playgroud)

输出当前字段的值,在本例中为Body.