2011-12-07 67 views
2

视图中的字段标签假定为纯文本输入,并且它们可能使用check_plain()来编码特殊字符(实际上没有查看视图后端)。Drupal 7视图 - 如何在字段标签内使用HTML代码?

HTML代码如何在标签内使用?

编辑:我以为我的问题很清楚。我不想重写字段,我想在标签内使用HTML代码,就这些。

+0

我不知道如果我理解问题的权利。视图有选项“剥离HTML标记如果选中,所有HTML标记都将被剥离。”所以默认情况下,html应该被允许在字段中,这也应该对标签也是如此。如果你可以把一些更多的信息,它会很好 –

回答

4

我想通了。虽然您无法在视图用户界面的标签内使用HTML输入,但您可以在样式输出模板中自定义标签。

例如对于使用表格样式输出“实例”视图您可以自定义views-view-table--example.tpl.php和使用这样的代码:

//custom label for title field 
$header['title'] = '<strong>Foo</strong> bar'; 
+0

如果您只需围绕HTML标签打包文本,则可以通过'Style settings'部分中的'Customize label HTML'复选框来控制字段config中的标题HTML。虽然这些选项非常有限。 – cambraca

-1

您可以使用该字段的Rewrite output选项。

+1

不,我不能使用它。这只会重写字段的内容,但我需要的是在标签内部添加HTML代码。您的解决方案可以被认为是解决方法,但在表格样式视图的情况下不起作用。抱歉。 – ovi

-2

这和'strip html'没有任何关系,忽略了。

正是因为这个原因,视图字段中有'重写'函数。以便重写html输出,然后使用令牌重新插入动态元素。

因此改写领域,H1标签,你可能会做这样的事它包裹...

编辑你的领域。在D7 Views 3中,您会看到'重写结果'下的切换部分。打开它并勾选'重写此字段的输出'。

在其下型的大盒子:

<h1>[title]</h1> 

就是这样。简单。当视图被重新整理时,标题文本将被包裹在h1标签中。

您可以在重写规则中使用的标记在名为“替换模式”的切换中列出,位置稍低一点 - 它们根据字段的类型而变化。

+1

我不是初学者,我知道如何重写字段。问题是我不知道如何“重写”标签。就像我对@Marius Ilie回答的那样,这只是一种解决方法,在表格式视图的情况下这不起作用。 – ovi

-4

查看7.x版,3.3

views/theme/theme.inc:269:  $object->label = check_plain($view->field[$id]->label()); 

views/theme/theme.inc:498:  $label = check_plain(!empty($fields[$field]) ? $fields[$field]->label() : ''); 

我编辑模块主题/主题。 inc文件:删除check_plain

+11

你应该[永远不要核心](http://drupal.org/best-practices/do-not-hack-core)或贡献模块来实现你的目标。 – ovi

1

另一种解决方案是为特定的视图格式添加新的处理函数,并对该预处理函数进行更改。

例子:

/** 
* Implements hook_theme_registry_alter(). 
*/ 
function example_theme_registry_alter (&$theme_registery) { 
    $theme_registery['views_view_table']['preprocess functions'][] = 'example_alter_table_header'; 
} 

function example_alter_table_header(&$vars) { 
    $view = $vars['view']; 
    if ($view->name == 'my_view') { 
    $vars['header']['field_some_title'] = 'HELLO<br/>WORLD'; 
    } 

} 
+0

这比我的初始解决方案稍微复杂一点,但是当需要在多个视图和一些类似的场景中覆盖相同的标签时,这种方法将证明它本身非常有用。谢谢! – ovi

相关问题