Drupal Theme Sanitized Path

У меня есть собственный стартовый набор Drupal Theme. В нем есть JS-файл, в котором мне нужно получить путь к текущей теме. Пример:

imagesPath: '/sites/default/themes/{{ THEME SANITIZED }}/js/ckeditor_templates/',

Так как возможно, что кто-то положил бы стартовый комплект в

/sites/all/themes/

вместо

/sites/default/themes/

Мне нужен Starterkit, чтобы учесть это. Есть ли {{ }}, чтобы получить путь к каталогу, в котором создается Starterkit?

2 ответа

Решение

Я могу подтвердить, что Drupal не предоставляет что-то вроде {{ THEME SANITIZED }} для пути. Но вы можете получить путь к файлу ckeditor.config.js из конфигурации CKEditor через переменную config.customConfig. Поэтому у нас достаточно информации, чтобы создать путь к теме. Я просто удалил имя файла и использовал его в качестве пути.

ekeditor.config.js

CKEDITOR.editorConfig = function(config) {
  pathToTheme = config.customConfig.substring(0, config.customConfig.lastIndexOf("/"));
  config.templates_files = [ pathToTheme + '/js/ckeditor_templates/ckeditor_templates.js' ];
  yada yada yada,
}

ckeditor_templates.js

 CKEDITOR.addTemplates('default', {
   imagesPath: pathToTheme + '/js/ckeditor_templates/',
   templates: [yada yada yada],
 }
});

Вы можете сделать путь пользовательской настройкой, используя drupal_add_js и drupal_get_path, например, в файле theme-settings.php или template.php:

$theme_path = drupal_get_path('theme', 'my-theme');
drupal_add_js(array('myCustomSetting' => array('path' => $theme_path)), 'setting');

Затем в вашем файле javascript вы можете ссылаться на настройку, например:

Drupal.settings.myCustomSetting + '/js/ckeditor_templates/'

Я бы предложил позволить Друпалу построить для вас путь, а не пытаться его испечь.

Относительно того, какие переменные доступны при динамическом построении подтемы, я действительно не знаю. Все, что я когда-либо использовал в своих интересах, это значение {{ THEEME SANITIZED }}, которое вы упоминаете

Я не проверял выше, но что-то вроде этого должно работать нормально.

Другие вопросы по тегам