1

Drupal Aggregator 核心模块是一个有用的模块,但存在许多问题。在 Drupal 7 中有很多人谈论改进它。

现在我正在使用 Drupal 6 附带的 Aggregator 模块。我正在构建一个聚合站点,但存在一个大问题。有时提要包含 HTML 标记属性(例如样式、目录、标题),但聚合器的输入格式过滤器会忽略某些属性(例如样式和目录)并允许其他属性(类和 href)。没有一些属性的提要看起来很娘娘腔。聚合器包含它自己的输入格式,它不使用其他输入格式(这使问题变得更加困难!)。

问题是如何允许某些 HTML 标签的属性出现在提要中。

PS最后要做的就是修改Aggregator的核心文件

4

4 回答 4

1

您可能需要考虑迁移到基于 FeedAPI 构建的较新解决方案之一

http://drupal.org/node/326601

正如您从那里开始看到的那样,这就是聚合方式的操作所在。

于 2008-12-22T17:25:24.517 回答
1

移至 FeedAPI。唯一的缺点是没有针对不同提要的即时块。但是,可以使用 nodeblock 进行设置,并在提要项的提要节点中嵌入视图,这也允许您使用视图和 feedapi 映射器来确定在每个提要中显示哪些信息。

对于任何繁重的提要,聚合器只是一个糟糕的模块。它没有提供灵活性,并且不能很好地与 Views 配合使用。如果您认真地构建一个用于聚合的整个站点,请切换到 feedapi,然后使用视图来控制可以从提要创建的节点的显示。

这将需要一些工作,但从长远来看,您将省去试图找到可能不存在的神秘提要聚合器解决方案的麻烦。

于 2009-08-02T10:46:41.630 回答
0

我早就放弃了 Aggregator,但我鼓励您深入研究源代码以查看问题所在。大多数核心模块的代码都有很好的文档记录,这是查看模块实际工作方式的最简单方法。

我的猜测是,它要么使用硬编码的标签字符串来允许,要么搭载过滤后的 HTML 输入格式。

于 2008-12-23T21:43:54.353 回答
0

简短而简单。在http://api.drupal.org/api/function/aggregator_filter_xss查看函数 aggregator_filter_xss() 。

<?php
function aggregator_filter_xss($value) {
  return filter_xss($value, preg_split('/\s+|<|>/', variable_get('aggregator_allowed_html_tags', '<a> <b> <br> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>'), -1, PREG_SPLIT_NO_EMPTY));
}
?>

如您所见,有一个名为aggregator_allowed_html_tags的 drupal 变量。

您只需要在您的一个模块的设置表单上使其可编辑。因为我没有找到允许编辑这个变量的drupal管理页面,所以我会说没有。

这是您的自定义模块所需的代码:

function your_module_settings()
{
    $form = array();

    // Params para aggregator
    $form['aggregator_allowed_html_tags'] = array(
        '#type'          => 'textarea',
        '#title'         => t('Core Module Aggregator allowed tags'),
        '#default_value' => variable_get('aggregator_allowed_html_tags', '<a> <b> <br> <dd> <dl> <dt> <em> <i> <li> <ol> <p> <strong> <u> <ul>'),
        '#required'      => TRUE,
        '#description'   => t('Core Module Aggregator allowed tags'),
    );

    return system_settings_form($form);
}

function your_module_menu()
{
    $items = array();

    $items['admin/content/your-module'] = array(
        'title'            => 'My module settings',
        'description'      => 'desc',
        'page callback'    => 'drupal_get_form',
        'page arguments'   => array('your_module_ pasos'),
        'type'             => MENU_NORMAL_ITEM,
    );

    return $items;
}

我希望它会有所帮助。

于 2010-09-06T18:16:52.113 回答