Мне нужно прикрепить поле к некоторым связкам. Фрагмент PHP сделает всю работу за меня, поэтому мне не нужен модуль. Ниже приведен фрагмент кода:
$field_name = 'field_custom_image';
// Create the field.
$field = array(
'field_name' => $field_name,
'type' => 'image',
);
field_create_field($field);
а затем фрагмент, чтобы добавить это поле в комплект:
// Create the instance.
$instance = array(
'field_name' => $field_name,
'entity_type' => 'node',
'bundle' => 'article',
'label' => 'Image',
'description' => 'An image for the article.',
'required' => TRUE,
);
field_create_instance($instance);
Есть ли способ запустить PHP-код непосредственно в Drupal, без необходимости писать модуль, устанавливать его, запускать и удалять его?
Ответы:
Если вы говорите «мне нужно запустить PHP» и «мне не нужен модуль» в одной и той же мысли, я бы посоветовал вам пойти по неверному пути, либо в подходе к этой конкретной проблеме Или подход к созданию сайта в целом.
drush scr
поможет вам, если вы действительно хотите идти в этом направлении, или вы можете написать автономный скрипт PHP (в основном просто скопировать / вставить все черезdrupal_bootstrap()
вызов из index.php и добавить свой собственный код после), но есть пара других вещи, на которые вы могли бы смотреть:Многие сайты, над которыми я работал, имели комбинацию обоих этих решений. Config должен в основном идти в экспортированные модули Feature, и все, что не может (вы действительно уверены, что не можете?), Может попасть в ловушку обновления.
источник
Да, есть, но, учитывая ваше описание, мне интересно, поможет ли оно вам:
источник
Если вам нужно запустить код только один раз, вы можете сделать это без установки какого-либо модуля, включая модуль Devel.
Напишите файл PHP (например, tasks.php ), поместите его туда, где находится файл cron.php, поставляемый с Drupal, и добавьте следующий код.
Если вы уже используете Drush для поддержки / развертывания своего сайта, то вы можете создать сценарий Drush . Таким образом, он может быть выполнен CLI и может принимать любые аргументы, что делает его многократно используемым во многих случаях.
Вы также можете выполнить скрипт PHP с
drush php-eval
(или простоdrush ev
), например:Я хотел бы создать сценарий Drush, но если вы не можете установить Drush или вам нужно выполнить код PHP из браузера, первый метод работает нормально.
источник
Добавьте фрагмент кода в файл и сохраните файл как
file_name.php
в корневой папке вашего сайта Drupal. Затем выполните следующую команду в терминале из корневой папки сайта Drupal в качестве рабочего каталога:drush scr file_name.php
Эта команда выполнит ваш файл PHP. (Чтобы получить представление о выполнении, вы можете включить в свой файл некоторые операторы печати, которые будут выводить текст, значения переменных и т. Д. В терминал, где вы выполняете команду drush.)
Примечание. В качестве предварительного условия необходимо
drush
установить его в своей системе.источник
Вы можете использовать
Php
встроенный модуль Devel, но в Drupal вы можете использовать один из моих трюков для запуска моего пользовательского кода без какого-либо модуля.сначала создать
menu item
вhook_menu
затем очистите кеш (потому что пункты меню кэшируются в drupal), и поместите все, что вы хотите,
my_function
и просто введитеyoursite.com/ytest
Надеюсь, это поможет вам в проектах "дада";)
источник
Цель модулей Drupal - предоставить отдельную логику для определенных компонентов, чтобы их можно было отключить, если что-то пойдет не так.
hook_install
/hook_update
В вашем случае , который создает новое поле на разовой основе, идеальный сценарий для использования либо
hook_install
илиhook_update
.Если у вас нет пользовательского модуля (кстати, вы также можете использовать для этого экспортированный функциональный модуль), создайте новый только для обновлений (например
site_updates
). В Drupal 7, все , что вам нужно , чтобы создать папку с 3 -х файлов:.info
,.module
а.install
и определить установки или обновления крюк в вашем.install
. Использование ловушки установки / обновления удобно для обеспечения согласованной среды, особенно когда у вас несколько серверов Drupal (таких как dev, test и prod), поэтому изменение может быть вызвано во время следующего развертывания.Если вы все еще не хотите создавать модуль, вот другие методы.
Разовое исполнение
Если вам нужно выполнить определенный код PHP только один раз, вы можете:
/devel/php
,Используйте CLI (и его / команду) для выполнения кода PHP, например
drush
eval
ev
Используйте
drush scr
для выполнения скрипта PHP:где
my_file.php
ваш простой PHP-скрипт с вашим кодом для выполнения.Конкретное исполнение страницы
Чтобы выполнить пользовательский код на определенных страницах или компонентах:
template.php
файл в вашей пользовательской темы (напримерtemplate_preprocess_node
,template_preprocess_block
,template_preprocess_page
).Все страницы исполнения
Чтобы добавить и запустить код PHP на каждой странице без написания модуля, вы можете:
settings.php
файл для этого. Рекомендуется только для простого кода, такого как переопределение конфигурации. В противном случае вы должны использоватьhook_init
это как часть вашего пользовательского модуля.источник