Я сделал это в проекте, добавив текстовое поле CCK к типу контента под названием «Дополнительные ресурсы», который принимает несколько значений. Затем в этом узле я добавил несколько значений в это поле - пути к файлам CSS и JS, которые я хотел загрузить на этот узел. Затем в своей теме я добавил свою собственную функцию под названием themename_node_process_fields
в template.php
. Эта функция была первой, что была выполнена в node-content_type_name.tpl.php
. Помимо всего прочего, он сделал это:
// Loop through the additional resources and add them to the <head>.
if (isset($node->field_additional_resources) && count($node->field_additional_resources) > 0) {
foreach ($node->field_additional_resources as $resource) {
if (strpos($resource['safe'], '.css') !== FALSE)
drupal_add_css($resource['safe'], 'theme', 'all', FALSE);
else if (strpos($resource['safe'], '.js') !== FALSE)
drupal_add_js($resource['safe'], 'theme', 'header', FALSE, TRUE, FALSE);
}
}
Обратите внимание, что я не продумал, есть ли для этого какие-либо соображения безопасности. Я единственный, у кого есть доступ к этому полю, но если злоумышленник смог ввести произвольный текст, я не уверен, что можно сделать.