كيف يمكنني الحصول على مسار موضوع دروبال الحالي؟

StackOverflow https://stackoverflow.com/questions/303761

  •  08-07-2019
  •  | 
  •  

سؤال

واجهة برمجة تطبيقات Drupal لديها drupal_get_path($type, $name) والتي سوف تعطي مسار أي موضوع أو وحدة معينة.ماذا لو كنت أريد مسار الموضوع الحالي؟

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

المحلول

واستخدم path_to_theme وظيفة.

نصائح أخرى

وهذا يجب أن تعمل ( ثيقة ):

global $theme;
$path = drupal_get_path('theme', $theme);

// there's also a $theme_path global

global $theme_path;

في D6 path_to_theme () قد لا يحسنون التصرف في بالطريقة التي تتوقعها اعتمادا على كيفية استخدامه. إذا كنت تستخدم خارج أية وظائف موضوع المعالجة المسبقة، فإنه من المحتمل أن تعطيك ما تريد، ولكن إذا كان يتم استدعاؤه في سياق وظيفة ربط سمات / المعالجة المسبقة وحدة نمطية ... سيكون لافتا إلى مسار الوحدة النمطية التي أعلن هذا الموضوع.

والسابقين. إذا كان لدي موضوع "my_theme" وبلدي وحدة "my_module" الذي تجاوز مواضيع المنتدى باستخدام خطاطيف المعالجة المسبقة، داعيا path_to_theme () داخل وحدة بلدي: على سبيل المثال my_module_preprocess_forums () ... سيعود "المنتديات"، وليس "my_theme" كما قد يتوقع المرء.

والفواكه جدا إذا سألتني.

في دروبال 7، للحصول على مسار موضوع الحالي، يمكننا استخدام: path_to_theme () وظيفة.

في دروبال 8

global $base_url;
$theme = \Drupal::theme()->getActiveTheme();
$image_url = $base_url.'/'. $theme->getPath() .'/images/image.jpg';

في Drupal 5، يمكنك ببساطة استخدام:path_to_theme()

سيعطيك هذا مسارًا كاملاً من جذر Drupal إلى دليل السمات المحدد.انتبه، فهو لا يتضمن شرطة مائلة زائدة.

في Drupal 6، يتصرف هذا بشكل مختلف قليلاً.إذا قمت باستدعائه من داخل صفحاتك، فسوف يستدعي كل ما يقوم حاليًا بتنفيذ السمات...سواء كان هذا هو الموضوع الخاص بك أو الوحدة النمطية وما إلى ذلك.إليك الاقتباس الرئيسي من مستندات API:

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

مصدر: http://api.drupal.org/api/function/path_to_theme

لD8، المجلد الموضوع متاح في وظائف المعالجة المسبقة:

function hook_preprocess_page(&$variables) {
  $variables['some_logo_file'] = "/{$variables['theme']['path']}/images/logo.png";
}

وpage.html.twig:

<img src="{{ logo_src }}">
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top