문제

Drupal Aggregator 핵심 모듈은 유용하지만 많은 문제를 안고 있습니다.Drupal 7에서 이를 개선하는 것에 대해 많은 이야기가 있습니다.

지금은 Drupal 6과 함께 제공되는 Aggregator 모듈을 사용하고 있습니다.집계 사이트를 구축 중인데 큰 문제가 하나 있습니다.때로는 피드에 HTML 태그 속성(예:style, dir, title). 그러나 Aggregator의 입력 형식 필터는 일부 속성(예:스타일 및 dir) 및 기타 항목(class 및 href)을 허용합니다.일부 속성이 없으면 피드가 매우 지저분해 보입니다.Aggregator에는 자체 입력 형식이 포함되어 있으며 다른 입력 형식을 사용하지 않습니다(이로 인해 문제가 더 어려워집니다!).

문제는 일부 HTML 태그의 속성이 피드에 표시되도록 허용하는 방법입니다.

추신마지막으로 해야 할 일은 Aggregator의 핵심 파일을 수정하는 것입니다.

도움이 되었습니까?

해결책

FeedAPI를 기반으로 구축된 최신 솔루션 중 하나로 이동하는 것을 고려할 수 있습니다.

http://drupal.org/node/326601

여기서부터 볼 수 있듯이 집계 방식으로 작업이 수행되는 곳은 바로 여기입니다.

다른 팁

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

도움이 되었기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top