2008-12-22 40 views
1

Drupal Aggregator核心模塊是一個很有用的模塊,但會遇到很多問題。有很多關於在Drupal 7中改進它的說法。Drupal Aggregator輸入格式

現在我正在使用Drupal 6附帶的Aggregator模塊。我正在構建一個聚合站點,並且存在一個BIG問題。有時Feed包含HTML標籤屬性(例如style,dir,title),但是Aggregator的輸入格式過濾器會忽略某些屬性(例如style和dir)並允許其他屬性(class和href)。沒有一些屬性,Feed看起來非常小心。聚合器包含它自己的輸入格式,它不使用其他輸入格式(這使得問題更難!)。

問題是如何讓一些HTML標記的屬性出現在提要中。

P.S.做的最後一件事就是修改聚集的核心文件

回答

1

你可能要考慮移動到在上面建FeedAPI

http://drupal.org/node/326601

的新的解決方案之一,因爲你可以看到從那裏開始,這是哪裏該行動是聚合明智的。

+0

這就是我想要做的,如果我的問題沒有解決方案 – 2008-12-22 17:53:55

0

我很久以來就開始關注Aggregator,但我會鼓勵你深入研究源代碼,看看問題出在哪裏。大多數核心模塊的代碼都有很好的文檔記錄,並且它是查看模塊實際工作方式的最簡單方法。

我的猜測是,它要麼使用硬編碼的標籤字符串來允許,要麼是在過濾的HTML輸入格式上捎帶。

1

轉到FeedAPI。唯一的缺點是不能立即阻止不同的Feed。但是,可以使用節點塊設置這些參數,並在Feed項目的Feed節點中嵌入視圖,這也允許您使用Views和feedapi映射器來確定在每個Feed中顯示哪些信息。

聚合器對於任何繁重的飼料來說只是一個壞模塊。它不提供靈活性,並且不能很好地與Views一起播放。如果您認真構建整個站點以進行聚合,請切換到feedapi,然後使用視圖來控制可從Feed中創建的節點的顯示。

預先需要一些工作,但從長遠來看,您可以節省自己試圖找到可能不存在的神祕飼料聚合解決方案的麻煩。

0

簡單而簡單。 看看函數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)); 
} 
?> 

正如你可以看到有一個名爲aggregator_allowed_html_tags Drupal的變量。

您只需要在某個模塊的設置窗體上對其進行編輯即可。因爲我沒有找到哪個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

,但你認爲通過html而沒有過濾是一種安全風險? – 2010-09-09 21:34:06