2008-12-22 6 views
1

Le module de base de Drupal Aggregator est utile, mais il souffre de nombreux problèmes. Actuellement, j'utilise le module Aggregator fourni avec Drupal 6. Je construis un site d'agrégation, et il y a un gros problème. Parfois, les flux contiennent des attributs de balises HTML (par exemple style, dir, titre), mais le filtre de format d'entrée d'Aggregator ignore certains attributs (par exemple style et dir) et autorise d'autres (classe et href). Sans certains attributs, les flux semblent très malins. Aggregator contient son propre format d'entrée, il n'utilise pas d'autres formats d'entrée (et cela rend le problème plus difficile!).Le format de base Drupal Aggregator

La question est de savoir comment autoriser l'affichage de certains attributs de balises HTML dans les flux.

P.S. dernière chose à faire est en train de modifier les fichiers de base de Aggregator

Répondre

1

Vous voudrez peut-être envisager de passer à l'une des solutions plus récentes construites sur FeedAPI

http://drupal.org/node/326601

Comme vous pouvez le voir à partir, c'est là où l'action est, en termes d'agrégation.

+0

C'est ce que je veux faire s'il n'y a pas de solution pour ma question –

0

J'ai depuis longtemps abandonné Aggregator, mais je vous encourage à creuser dans la source pour voir quel est le problème. Le code de la plupart des modules de base est assez bien documenté et c'est le moyen le plus simple de voir comment le module fonctionne réellement. Je suppose que c'est soit en utilisant une chaîne de balises codées en dur pour permettre, soit en utilisant le format d'entrée HTML Filtered.

1

Déplacer vers FeedAPI. Le seul désavantage à cela n'est pas d'avoir des blocs immédiats pour différents flux. Toutefois, il est possible de les configurer à l'aide de nodeblock et d'intégrer une vue dans le nœud de flux des éléments de fil, ce qui vous permet également d'utiliser Views et feedapi mapper pour déterminer les informations affichées dans chaque fil.

L'agrégateur est juste un mauvais module pour tout levage de charges lourdes. Il n'offre aucune flexibilité et ne joue pas bien avec les vues. Si vous envisagez sérieusement de créer un site entier pour l'agrégation, passez à feedapi, puis utilisez des vues pour contrôler l'affichage des noeuds pouvant être créés à partir des flux.

Il faudra du travail à l'avance, mais à long terme, vous vous éviterez le mal de tête d'essayer de trouver la solution mystique d'agrégateur de flux qui n'existe probablement pas.

0

Court et simple. Jetez un oeil à la fonction aggregator_filter_xss() au 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)); 
} 
?> 

Comme vous pouvez le voir, il y a une variable appelée aggregator_allowed_html_tags drupal.

Vous avez seulement besoin de le rendre modifiable sur un formulaire de paramètres depuis l'un de vos modules. Comme je n'ai pas trouvé quelle page d'administration drupal permet d'éditer cette variable, et je dirais qu'il n'y en a pas.

Voici le code que vous aurez besoin pour votre module personnalisé:

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; 
} 

J'espère qu'il est utile.

+0

mais pensez-vous que passer le html sans filtrage du tout est un risque de sécurité? –

+0

Il est définitivement. Mais vous pouvez choisir les tags à autoriser. –

Questions connexes