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

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

the exposed filters

и

dropdown box

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

UPDATE

ВАЖНО: при дальнейшем тестировании я обнаружил, что если вы решите отобразить "-Any-" из "admin/build/views/tools", тогда THAT ISA можно переводить.

Ответы

Ответ 1

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

  • Вы можете изменить его с помощью локализации, если у вас есть это уже включенное. Представление локализации только для этой строки слишком много накладных расходов.
  • Вы можете изменить его с помощью form_alter, если вы все равно измените форму. Внедрение модуля с переменным hook_form для одной строки - это слишком много (служебная и служебная) накладные расходы.
  • Вы можете изменить его с помощью простого строкового переопределения в ваших settings.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 default English language interface strings.
 *
 * Remove the leading hash signs to enable.
 */
$conf['locale_custom_strings_en'][''] = array(
   '<Any>'      => 'Whatever!',
);

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

Ответ 2

Для тех, кто хочет просто изменить значение "- 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_здесь должно быть имя вашего представления (заменить тире с помощью подчеркивания - например, "свойство-поиск-бар" станет "property_search_bar" )

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

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

Ответ 3

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

Ответ 4

Или вы можете просто использовать строку кода jQuery следующим образом:

$(document).ready(function(){

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

});

Ответ 6

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