سؤال

أحاول إنجاز ما يلي. أحتاج إلى استخدام Drupal 6 كمتطلبات للمشروع ، لكنني أريد استخدامه مع أوراق أنماط HTML و CSS الخاصة بي لكل عقدة/عرض/لوحة إلخ.

المشكلة هي ، مهما كان الموضوع ، وجدت دائمًا أن Drupal ينطبق على محتوى HTML الخاص بي على حد سواء أوراق الأنماط CSS و CSS المتعلقة بالموضوع المختار. لقد حاولت أيضًا ، دون نجاح ، استخدام وحدة Stylestripper (مثبتة في المواقع/جميع/الوحدات). بغض النظر عن ما أقوم به ، يتم تطبيق أوراق أنماط CSS الإضافية على صفحاتي ، مما يدمر تمامًا تخطيطي.

ما هي الطريقة الصحيحة لتحقيق ذلك؟ لماذا لا يعمل Stylestripper على الإطلاق؟ هل هناك موضوع فارغ تمامًا متاح؟ لقد جربت أساسية ، الأم ، Zen وما إلى ذلك ، لكنني دائمًا ما أرى أوراق أنماط CSS إضافية مطبقة على صفحاتي.

هذا يدفعني إلى الجنون ، تم اختيار دروبال من قبل شخص آخر لمرونته. شكرا لكم مقدما.

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

المحلول

<?php
/**
 * Helper function to allow easy CSS excludes + includes
 */
function _phptemplate_get_css($exclude = array(), $include = array()){
$css = drupal_add_css();
foreach ($css['all']['module'] as $k => $path) {
   $file = substr($k, strrpos($k, '/') + 1);
   if (in_array($file, $exclude)){
     unset($css['all']['module'][$k]);
   }
}
foreach ($include as $file){
   $css['all']['theme'][path_to_theme() .'/'. $file] = true;
}
return drupal_get_css($css);
?>

اقراء المزيد على drupal.org.

تحديث:
المكان المناسب لوضع هذه الوظيفة ، هو في template.php ملف موضوعك. في الواقع في حالتك ، تحتاج إلى تمرير مجموعة من أسماء ملفات CSS التي تريد استبعادها.
الدعوة إلى drupal_add_css() مع عدم وجود حجج ، سوف توفر $css مع مجموعة من ملفات CSS التي سيتم إرفاقها بموضوعك. لذلك هذا هو الوقت المناسب للدخول!

كما ترى ، في الأول foreach حلقة نسعى ببساطة $css صفيف لأسماء الملفات الموجودة في الممر $exclude صفيف ، لحذف النمط. ونحن نفعل نفس الوظيفة في الحلقة الثانية لإدخال الأسلوب. وفي نهاية هذا ، نعيد تمثيلًا تحت عنوان لجميع الأساليب التي يجب إرفاقها بالموضوع الذي يستخدم drupal_get_css() وظيفة. (ربما لا شيء في قضيتك)

حسنًا ، أين تسمي هذه الوظيفة؟ يمكنك استدعاء وظيفة المساعد هذه في _phptemplate_variables() ل D5 أو YOUR_THEME_preprocess() ل D6. كما نرى هذا في العمل لـ D6 (لم يخبر):

function YOUR_THEME_preprocess(&$vars, $hook){
    // Stylesheet filenames to be excluded.
    $css_exclude_list = array(
        'lightbox.css',
        'lightbox_lite.css',
    );

    // Making use of previously defined helper function.
    $vars['styles'] = _phptemplate_get_css($css_exclude_list);
}

أنا متأكد من أنك تعرف كيفية استبعاد كل شيء ؛)

نصائح أخرى

إذا قمت بتحديد ملفات CSS و/أو JavaScript في ملف .info الخاص بك باستخدام أسماء الملفات التي تتطابق مع الملفات الأساسية ، فأنت تجاوزها ، وإذا لم تكن موجودة ، فلن يتم تضمينها.

انظر ملف .info لموضوع TAO للحصول على مثال

أنا لا يعمل هذا ولكن أعتقد فقط إزالة السطر التالي في صفحة السمة الخاصة بك. tpl.php

 <?php echo $styles ?>

وبعد ذلك لن يكون دروبال أيًا من أنماطه الخاصة ..
قد يكون هذا يعمل من أجلك.


نيتز

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top