Question

module de base Drupal est un Aggregator utile, mais souffre de nombreux problèmes. Il y a beaucoup parlent de l'améliorer dans Drupal 7.

En ce moment je suis en utilisant le module Aggregator qui vient avec Drupal 6. Je construis un site d'agrégation, et il y a un gros problème. se nourrit parfois contenir des attributs des balises HTML (par exemple le style, dir, titre), mais le filtre de format d'entrée de Aggregator ne tient pas compte des attributs (par exemple le style et dir) et permet aux autres (classe et href). Sans certains attributs flux look très missy. Agrégateur contient son propre format d'entrée, il n'utilise pas d'autres formats entrées (ce qui rend le problème plus difficile!).

La question est de savoir comment puis-je autoriser certaines balises HTML attributs à apparaître dans les aliments.

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

Était-ce utile?

La solution

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 de là, c'est là où l'action est, l'agrégation sage.

Autres conseils

Déplacer vers FeedAPI. Le seul inconvénient à cela est de ne pas avoir des blocs immédiats pour différents aliments. Cependant, il est possible de les configurer à l'aide nodeblock et l'intégration d'une vue dans le noeud d'alimentation des éléments d'alimentation, ce qui vous permet également d'utiliser des vues et feedapi mappeur pour déterminer les informations affichées dans chaque flux.

Aggregator est juste un mauvais module pour soulever des objets lourds avec des aliments. Il offre aucune flexibilité, et ne joue pas bien avec vue. Si vous êtes sérieux au sujet de la construction d'un site entier pour l'agrégation, passez à feedapi, et ensuite utiliser des vues pour contrôler l'affichage des noeuds qui peuvent être créés à partir des flux.

Il faudra un certain travail à l'avant, mais à long terme, vous vous épargnerez le mal de tête d'essayer de trouver la solution d'alimentation mystique aggrégateur qui n'existe probablement pas.

Je depuis longtemps abandonné Aggregator, mais je vous encourage à creuser dans la source pour voir ce que le problème est. Le code de la plupart des modules de base sont assez bien documenté et il est la meilleure façon de voir comment le module fonctionne réellement.

Je suppose qu'il est soit en utilisant une chaîne hardcoded de balises pour permettre, ou est sur le format ferroutage entrée Filtered HTML.

Court et simple. Jetez un oeil à la fonction aggregator_filter_xss () http://api.drupal.org/api/ fonction / 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 drupal aggregator_allowed_html_tags .

Il vous suffit de le rendre modifiable sur un formulaire de paramétrage d'un de vos modules. Depuis que je n'ai pas trouvé quelle page d'administration permet de modifier drupal cette variable, et je dirais qu'il n'y 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top