Вы правы, hook_form_alter () - хорошее начало. Если вы хотите изменить форму типа контента, я использовал один метод - создать очень маленький и простой пользовательский модуль, реализующий hook_form_alter () . Подробности / инструкции по созданию этого модуля можно найти ниже.
В качестве примера, я называю этот модуль 'custom_countries'. Если вы хотите изменить имя, вы всегда можете переименовать файлы и выполнить поиск и замену в них позже.
Сначала вам нужно создать новую папку в папке ваших модулей (sites/all/modules
и т. Д.). (Все файлы, созданные с этого момента, должны быть помещены в эту папку). Затем создайте новый файл с именем custom_countries.info
, поместите в него следующее и сохраните:
name = "Custom Countries"
description = "Changes the list of countries available from Location module for certain content types"
core = 6.x
Затем создайте другой файл с именем custom_countries.module
, поместите в него следующий код и сохраните файл:
<?php
/**
* @file custom_countries.module
* Module to change the countries options of location module
* for certain content type(s)
*/
/**
* Implementation of hook_form_alter()
*/
function custom_countries_form_alter(&$form, $form_state, $form_id) {
// Replace "YOUR_CONTENT_TYPE with the name of the content type desired
if ($form_id == 'YOUR_CONTENT_TYPE_node_form') {
$form['#after_build'][] = 'custom_countries_after_build';
}
}
/**
* Make changes to countries field after all fields are rendered
*/
function custom_countries_after_build($form_element, &$form_state) {
// Replace FIELD_NAME with the machine name of the location field for your content type
$form_element[FIELD_NAME][0]['country']['#options'] = array(
'ca' => 'Canada',
'us' => 'United States',
);
return $form_element;
}
Важное замечание: обязательно прочитайте комментарии и замените «YOUR_CONTENT_TYPE» на имя машины того типа контента, в котором находится ваше местоположение (возможно, просто «профиль», если используются настройки по умолчанию content_profile). Также замените «FIELD_NAME» на имя машины в поле местоположения.
Наконец, включите модуль на admin/build/modules
.
Теперь, когда вы создаете / редактируете указанный вами тип контента, вы увидите только 2 варианта в списке стран. Используя этот метод, вы теперь можете легко вносить изменения и в другие формы.
Идея для этого пришла от Сделать поля формы Location доступными для hook_form_alter () . Если в будущем вы решите добавить другие страны, полный список пар ключ / значение можно найти по адресу http://api.lullabot.com/location_get_iso3166_list/5