Вопрос

Основной модуль Drupal Aggregator полезен, но имеет много проблем.Есть много разговоров об улучшении этого в Drupal 7.

Прямо сейчас я использую модуль Aggregator, который поставляется с Drupal 6.Я создаю сайт агрегации, и есть одна БОЛЬШАЯ проблема.Иногда каналы содержат атрибуты HTML-тегов (напримерstyle, dir, title), но фильтр формата ввода агрегатора игнорирует НЕКОТОРЫЕ атрибуты (напримерstyle и dir) и допускает другие (class и href).Без некоторых атрибутов ленты выглядят очень скучно.Агрегатор содержит свой собственный формат ввода, он не использует другие форматы ввода (и это усложняет проблему!).

Вопрос в том, как я могу разрешить отображение атрибутов некоторых HTML-тегов в лентах.

P.S.последнее, что нужно сделать, это изменить основные файлы Агрегатора

Это было полезно?

Решение

Возможно, вы захотите рассмотреть возможность перехода на одно из более новых решений, построенных поверх FeedAPI

http://drupal.org/node/326601

Как вы можете видеть, начиная с этого момента, именно здесь происходит действие с точки зрения агрегации.

Другие советы

Перейдите в FeedAPI.Единственным недостатком этого является отсутствие немедленных блоков для разных каналов.Однако их можно настроить с помощью nodeblock и встраивания представления в узел ленты элементов ленты, что также позволяет использовать Views и feedapi mapper для определения, какая информация отображается в каждой ленте.

Агрегатор - это просто плохой модуль для любой тяжелой работы с фидами.Он не обеспечивает никакой гибкости и плохо сочетается с представлениями.Если вы серьезно относитесь к созданию всего сайта для агрегирования, переключитесь на feedapi, а затем используйте views для управления отображением узлов, которые могут быть созданы на основе каналов.

Это потребует некоторой предварительной работы, но в долгосрочной перспективе вы избавите себя от головной боли, связанной с попытками найти мистическое решение для агрегатора каналов, которого, скорее всего, не существует.

Я давно отказался от Агрегатора, но я бы посоветовал вам покопаться в источнике, чтобы понять, в чем проблема.Код большинства основных модулей довольно хорошо документирован, и это самый простой способ увидеть, как на самом деле работает модуль.

Я предполагаю, что он либо использует жестко закодированную строку тегов для разрешения, либо использует отфильтрованный формат ввода HTML.

Коротко и просто.Взгляните на функцию aggregator_filter_xss() по адресу http://api.drupal.org/api/function/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));
}
?>

Как вы можете видеть, есть переменная drupal, которая называется агрегатор_allowed_html_tags.

Вам нужно только сделать его доступным для редактирования в форме настроек одного из ваших модулей.Поскольку я не нашел, какая страница администрирования 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;
}

Я надеюсь, что это полезно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top