Drupal Aggregator の入力形式
-
23-08-2019 - |
質問
Drupal Aggregator コア モジュールは便利ですが、多くの問題があります。Drupal 7 での改善については多くの議論が行われています。
現在、Drupal 6 に付属の Aggregator モジュールを使用しています。私はアグリゲーション サイトを構築しているのですが、大きな問題が 1 つあります。フィードには HTML タグ属性が含まれる場合があります (例:style、dir、title) ですが、アグリゲーターの入力形式フィルターは一部の属性を無視します (例:style と dir) を使用し、その他 (class と href) を許可します。いくつかの属性がないと、フィードは非常に見苦しく見えます。Aggregator には独自の入力形式が含まれており、他の入力形式は使用しません (これが問題をさらに難しくしています!)。
問題は、一部の HTML タグの属性をフィードに表示できるようにするにはどうすればよいかということです。
追伸最後に行うことは、Aggregator のコア ファイルを変更することです
解決
FeedAPI 上に構築された新しいソリューションの 1 つに移行することを検討してください。
そこから始まることがわかるように、ここが集計の観点からのアクションの場所です。
他のヒント
FeedAPI に移動します。この唯一の欠点は、さまざまなフィードに対して即時ブロックがないことです。ただし、ノードブロックを使用してこれらを設定し、フィード項目のフィード ノードにビューを埋め込むことは可能です。これにより、ビューと feedapi マッパーを使用して、各フィードに表示される情報を決定することもできます。
Aggregator は、フィードに関する重労働にはまったく適さないモジュールです。柔軟性がなく、ビューとうまく連携できません。集約用にサイト全体を構築することに真剣に取り組んでいる場合は、feedapi に切り替えて、ビューを使用してフィードから作成できるノードの表示を制御します。
事前にある程度の作業は必要ですが、長期的には、存在しない可能性が高い神秘的なフィード アグリゲーター ソリューションを見つけようとする頭痛の種を避けることができます。
私はずっと前に Aggregator を捨ててしまいましたが、ソースを調べて何が問題なのかを確認することをお勧めします。ほとんどのコア モジュールのコードは十分に文書化されており、モジュールが実際にどのように動作するかを確認する最も簡単な方法です。
私の推測では、許可するためにハードコーディングされたタグ文字列を使用しているか、フィルターされた 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 変数があります。 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;
}
お役に立てば幸いです。