Формат ввода Drupal Aggregator - PullRequest
1 голос
/ 22 декабря 2008

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

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

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

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

Ответы [ 4 ]

1 голос
/ 02 августа 2009

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

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

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

1 голос
/ 22 декабря 2008

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

http://drupal.org/node/326601

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

0 голосов
/ 06 сентября 2010

Коротко и просто. Посмотрите на функцию 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 с именем aggregator_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;
}

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

0 голосов
/ 24 декабря 2008

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

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

...