将HTML添加到Drupal模块中的节点标题,而不是主题层中

将HTML添加到Drupal模块中的节点标题,而不是主题层中,drupal,drupal-6,drupal-modules,Drupal,Drupal 6,Drupal Modules,我想在Drupal6模块中添加一些功能:我想在某些节点标题旁边插入一个图像(它包括一个span和一个img标记)。我想我可以通过实现mymodule_preprocess_node()并修改标题来实现这一点。然而,Drupal去掉了所有标签以避免XSS攻击 我见过许多涉及主题层的解决方案(大多数情况下),但我想在我的模块中,而不是在主题中实现这一点。我不想修改任何.tpl.php文件或template.php。有人能告诉我怎么做吗?所说的“特定节点标题”——你是指来自特定节点类型的所有节点标题吗

我想在Drupal6模块中添加一些功能:我想在某些节点标题旁边插入一个图像(它包括一个span和一个img标记)。我想我可以通过实现mymodule_preprocess_node()并修改标题来实现这一点。然而,Drupal去掉了所有标签以避免XSS攻击


我见过许多涉及主题层的解决方案(大多数情况下),但我想在我的模块中,而不是在主题中实现这一点。我不想修改任何.tpl.php文件或template.php。有人能告诉我怎么做吗?

所说的“特定节点标题”——你是指来自特定节点类型的所有节点标题吗

如果是这样的话,您可以仅使用CSS设置节点样式。默认情况下,所有节点都将具有与节点类型对应的类。使用CSS背景图像,可以将图像添加到节点标题


您的模块可以调用任何需要的CSS并将其添加到页面中。这样,它是独立于主题的。

您提到您已经尝试了preprocess_node(),并且正确地说,如果您将img标记存储为节点标题的一部分,Drupal确实会删除它,因为它通过check_plain in运行$node->title


我的建议是将实际图像存储为图像字段(使用模块和大小的某种组合),将该字段的显示设置为在给定内容类型的CCK显示选项卡上隐藏,然后将图像附加为模块预处理函数中$title变量的一部分。此解决方案还允许您在需要创建的任何视图中在标题旁边显示该图像。

我认为更简单的方法是使用javascript/Jquery。 创建一个Jquery脚本,该脚本仅在某些类型的节点中调用,并将视图的数量从drupal传递给jscript

您可以在module_preprocess_节点内调用drupal_add_js(),并将包含视图数或图像链接的变量传递给脚本。大概是这样的:

<?php
drupal_add_js("var mymodule_imagelink = " . drupal_to_js($imagelink) . ";", 'inline');
drupal_add_js("my_js_file.js");
?>

然后在my_js_file.js中更改文本。有几种方法可以实现这一点。例如,您可以在文档中进行搜索并将标题更改为其他内容,或者您可以使用确定的ID,等等


不幸的是,图像会发生变化-显示的图像取决于与其他节点相比,此节点加载的频率。因此,我不能只在节点中存储静态图像-我需要在每次加载页面时查找要添加的图像。如果我只需要添加图像,这将起作用,但不仅仅是这样。然而,如果我找不到一种方法来获取我确实需要的HTML标记,我可能会使用这种方法——让图像显示出来总比什么都没有好。正如我前面提到的,图像会根据情况而变化,因此看起来我必须为每个图像创建不同的样式表,并选择在加载时添加哪个样式表-这听起来正确吗?