[support] Trying to not hack core.

Pat Newberry drupal at gypsyfarm.com
Wed Oct 10 16:02:00 UTC 2012


On 10/8/2012 5:21 PM, Earnie Boyd wrote:
> On Mon, Oct 8, 2012 at 3:45 PM, Pat Newberry wrote:
>> After some Google searching I found I could add to a function Hook to an
>> existing custom module that deals with forms (written by 3rd party) with a
>> hook for countries alter.
>>
>> function myCustomMod_countries_alter(&$countries) {
>>
>> $countries['IE'] = 'Republic of Ireland-xx';
>> $countries['GB'] = 'Great Britain';
>> $countries['RU'] = 'Russian Federation';
>> $countries['CI'] = 'Cote d\' lvoire';
>> $countries['BA'] = 'Bosnia Herzegovina';
>> $countries['NN'] = 'Northern Ireland';
>>
>> }
>>
>> Now when I go to the view, this has no effect on the list of countries, but
>> when I go to the search page that uses this view with exposed criteria and
>> form, I can see that the countries that exist in the iso file (e.g. Republic
>> of Ireland with an -xx) are modified with my changes from the
>> countries_alter hook, but the countries that do not exist in the iso file
>> are not added (e.g. Northern Ireland). I am guessing at the time the exposed
>> search drop down list is built, it has my changes in it (altered and added)
>> but that it checks against the values that are checked in the view and if
>> it's not check in the view, it won't get added to the list.
> Have you cleared the caches?  admin/config/development/performance
>
>> So looking for advice as to what direction I should head.
>>
>> 1.) Hack the ISO.inc file.
>> 2.) learn how to attach another .inc file to the field_address:country
>> 3.) another hook or code in the hook alter that will work when the form is
>> rendered.
> Perhaps another hook.  Have you looked at drupal.org/project/location?
>   Do you know about api.drupal.org?
>

Using the information in this link 
(http://drupal.stackexchange.com/questions/4559/how-to-alter-country-dropdown-in-location-module) 
I was able to accomplish what I needed done.
I had an existing custom module in which I added this code:

  /**
  * Implements hook_form_alter().
  */
function MyModule_form_alter(&$form, &$form_state, $form_id) {
   if ($form['#id'] == 'views-exposed-form-listing-search-page') {
     $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) {
   $form_element['country']['#options']['NN'] = 'Northern Ireland';
   $form_element['country']['#options']['IE'] = 'Republic of Ireland';
   $form_element['country']['#options']['GB'] = 'Great Britain';
   $form_element['country']['#options']['RU'] = 'Russian Federation';
   $form_element['country']['#options']['CI'] = 'Cote d\' lvoire';
   $form_element['country']['#options']['BA'] = 'Bosnia Herzegovina';
   $form_element['country']['#options']['CD'] = 'Democratic Republic of 
Congo';

   asort($form_element['country']['#options']);

   return $form_element;
}


More information about the support mailing list