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 }}, которое вы упоминаете
Я не проверял выше, но что-то вроде этого должно работать нормально.