سؤال

وحدة Drupal Aggregator الأساسية هي واحدة مفيدة ولكن تعاني العديد من المشاكل. هناك الكثير من الحديث عن تحسينه في دروبال 7.

الآن أنا أستخدم وحدة المجمع التي تأتي مع Drupal 6. أنا أقوم ببناء موقع تجميع، وهناك مشكلة واحدة كبيرة. في بعض الأحيان تحتوي الخلاصات على سمات علامات HTML (على سبيل المثال النمط، DIR، العنوان)، ولكن مرشح تنسيق إدخال المجمع يتجاهل بعض السمات (مثل الأناقة والكيرية) ويسمح للآخرين (فئة وحرير). دون بعض السمات تغذي تبدو ميسي جدا. يحتوي المجمع على تنسيق الإدخال الخاص به، لا يستخدم تنسيقات المدخلات الأخرى (وهذا يجعل المشكلة أكثر صعوبة!).

السؤال هو كيف يمكنني السماح بسمات بعض علامات HTML لتظهر في الخلاصات.

ملاحظة آخر شيء يجب القيام به هو تعديل الملفات الأساسية للمجمع

هل كانت مفيدة؟

المحلول

قد ترغب في التفكير في الانتقال إلى أحد الحلول الأحدث المبنية على رأس Feedapi

http://drupal.org/node/326601.

كما ترون بدءا من هناك، هذا هو المكان الذي يكون فيه الإجراء هو التجمع الحكيم.

نصائح أخرى

الانتقال إلى feedapi. العيوب الوحيدة لهذا غير موجودة كتل فورية للأغذية المختلفة. ومع ذلك، من الممكن تعيين هذه باستخدام Nodeblock وتضمين طريقة عرض في عقدة تغذية عناصر الأعلاف، والتي تسمح لك أيضا باستخدام المشاهدات و FedApi Mapper لتحديد المعلومات التي يتم عرضها في كل تغذية.

المجمع هو مجرد وحدة سيئة لأي رفع ثقيل مع الخلاصات. لا يوفر مرونة، ولا يلعب بشكل جيد مع وجهات النظر. إذا كنت جادا في بناء موقع بأكمله للتجميع، فقم بالتبديل إلى Feedapi، ثم استخدم طرق العرض للتحكم في عرض العقد التي يمكن إنشاؤها من الخلاصات.

سوف يستغرق الأمر بعض العمل مقدما، ولكن على المدى الطويل، سوف تنقذ نفسك صداع محاولة محاولة العثور على حل مجمع التغذية باطني غير موجود.

أنا منذ فترة طويلة من مجمع الخلل، لكنني أشجعك على الحفر في المصدر لمعرفة المشكلة. يتم توثيق رمز معظم الوحدات النواة بشكل جيد، وهي أسهل طريقة لمعرفة كيفية عمل الوحدة النمطية بالفعل.

تخميني هو أنه يستخدم سلسلة من العلامات المتصلة بالسماح، أو أنها خنزيرة بتنسيق إدخال HTML المصفاة.

قصيرة وبسيطة. إلقاء نظرة على وظيفة Aggregator_filter_xss () في http://api.drupal.org/api/function/agregator_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 تحرير هذا المتغير، وأود أن أقول أنه لا يوجد كذلك.

إليك الرمز الذي ستحتاج إليه لنمطك المخصص:

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