Как изменить метку значения по умолчанию (- Any -) открытого фильтра в представлениях Drupal?

Я создал представление с тремя открытыми фильтрами. Все работает нормально, за исключением того, что я не могу ни перевести или изменить строку по умолчанию (любой) для выпадающих меню. Есть ли способ изменить эту строку на что-то более значимое, например "Пожалуйста, выберите" и сделать ее переводимой, чтобы немецкая версия отображала "Bitte wählen"? У меня есть два снимка экрана, которые могут быть полезны:

the exposed filters

и

dropdown box

еще улучшением будет возможность изменить текст " любой "на что-то вроде" Пожалуйста, выберите (имя поля здесь)", но я теряю надежду на это =)

обновление

важно: при дальнейшем тестировании я обнаружил, что если вы решите отобразить "-Any-" из "admin/build/views/tools", то это переводимо.

7 ответов


три варианта:

  • вы можете изменить его с локализацией, если у вас это уже включено. Введение локализации только для этой строки слишком накладно.
  • вы можете изменить его с помощью form_alter, если вы уже изменили форму в любом случае. Введение модуля с hook_form alter только для одной строки-это слишком много (обслуживание и производительность) накладных расходов.
  • вы можете изменить его с помощью простого переопределения строки в вашем настройки.в PHP

в Drupal 7 (Drupal6 отличается только деталями)

/**
 * String overrides:
 *
 * To override specific strings on your site with or without enabling locale
 * module, add an entry to this list. This functionality allows you to change
 * a small number of your site's default English language interface strings.
 *
 * Remove the leading hash signs to enable.
 */
$conf['locale_custom_strings_en'][''] = array(
   '<Any>'      => 'Whatever!',
);

обратите внимание, что это изменится каждый возникновение полной строки <Any> (С учетом регистра) к Whatever, а не только те, что в единой форме.


для тех, кто хочет просто изменить значение "- Any -" на что-то конкретное, затем используйте пользовательский модуль для переопределения, который выглядит так:

function yourmodulename_form_alter(&$form, $form_state, $form_id) {

  if($form_state['view']->name == 'your_view_name_here') {

    $form['your_dropdown_name']['#options']['All'] = t('- Type -'); // overrides <All> on the dropdown

  }
}

причина, по которой вы можете это сделать, заключается в том, что у вас есть 3 (например) выпадающих списка для 3 отдельных полей. Затем на них не будет очень полезно для пользователя (особенно если вы не используете этикетки).

в коде выше просто не забудьте изменить "yourmodulename" на имя вашего модуль.

your_view_name_here должно быть имя вашего представления (замените тире подчеркиванием - например, "property-search-bar" станет "property_search_bar")

и измените "your_dropdown_name" на имя поля - я нашел это, используя dsm($form) С в Devel модуль установлен и включен. Обычно это имя поля вашего выпадающего списка, поэтому оно может быть чем-то вроде "field_my_custom_value".

надеюсь, это поможет всем, кто нуждается это!


просмотр метки фильтра не переводится в D6. Перейдите в Администрирование > создание сайта > представления и выберите вкладку Инструменты. Замените "метку для" любого "значения на дополнительных фильтрах с одним выбором: "переводимым" - Any -". Важно: посетите представления с открытыми фильтрами хотя бы на одном языке, который не является языком по умолчанию. Затем вы можете перевести "- Any - " через Aminister > site building > Translate interface (с учетом регистра).


или вы можете просто использовать строку кода jQuery, как это:

$(document).ready(function(){

$("#views-exposed-form-url-name-display-name #edit-tid-all a").text("All");

});

на лучше подвергается модуль фильтра позволяет изменить метку " - any -"в фильтре представлений.


Я бы предпочел пойти с простым решением:Строка Переопределяет. При этом вы просто добавляете строку, которую хотите изменить на своем сайте, и заменяете ее на все, что хотите (строки, конечно).


может быть модуль https://www.drupal.org/project/views_advanced_labels помогает? Я нашел его, но еще не пробовала.