كيف تتخلص من أوراق أنماط Drupal CSS؟
-
22-09-2019 - |
سؤال
أحاول إنجاز ما يلي. أحتاج إلى استخدام 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 الخاص بك باستخدام أسماء الملفات التي تتطابق مع الملفات الأساسية ، فأنت تجاوزها ، وإذا لم تكن موجودة ، فلن يتم تضمينها.
أنا لا يعمل هذا ولكن أعتقد فقط إزالة السطر التالي في صفحة السمة الخاصة بك. tpl.php
<?php echo $styles ?>
وبعد ذلك لن يكون دروبال أيًا من أنماطه الخاصة ..
قد يكون هذا يعمل من أجلك.
نيتز