[Решено] Темизация views_exposed_form (массив $vars приложен)

Главные вкладки

Аватар пользователя Айрат Айрат 17 декабря 2014 в 9:35

Всем привет. Пытаюсь темизировать форму интервала дат новостей. Сейчас выводится в таком виде. Дата начала и Дата окончания. Пытаюсь эти слова поменять на слова С и По. Делаю следующим образом:

<?php
//print_r($vars);

      

$vars['form']['date_filter']['min']['#title'] = t('С'); // заменяем текст
unset($vars['form']['date_filter']['min']['#printed']);
      
$vars['widgets']['filter-date_filter']->widget=drupal_render($vars['form']['date_filter']['min']);

      

$vars['form']['date_filter']['max']['#title'] = t('По'); // заменяем текст
unset($vars['form']['date_filter']['max']['#printed']);
      
$vars['widgets']['filter-date_filter']->widget=drupal_render($vars['form']['date_filter']['max']);
?>

И ничего не выходит. Что делаю не так? В сети только простые варианты есть. Заранее благодарен

Вся функия

<?php

function airat_preprocess_views_exposed_form(&$vars
{

      

$vars['form']['date_filter']['min']['#title'] = 'С'// заменяем текст
unset($vars['form']['date_filter']['min']['#printed']);
      
$vars['widgets']['filter-date_filter']->widget=drupal_render($vars['form']['date_filter']['min']);

      

$vars['form']['date_filter']['max']['#title'] = 'По'// заменяем текст
unset($vars['form']['date_filter']['max']['#printed']);
      
$vars['widgets']['filter-date_filter']->widget=drupal_render($vars['form']['date_filter']['max']); 
 
}

?>
ВложениеРазмер
Иконка простого текстового файла vars.txt29.8 КБ

Комментарии

Аватар пользователя Inj Inj 17 декабря 2014 в 12:24

пробейте в через поиск "Дата начала" в Вашем файле. Второе значение, то что в

 $vars['form']['date_filter']['min']['date']['#children']

пробовали менять? К примеру можно заменить через str_replace()

Аватар пользователя Айрат Айрат 17 декабря 2014 в 12:26

Inj wrote:
пробейте в через поиск "Дата начала" в Вашем файле. Второе значение, то что в

 $vars['form']['date_filter']['min']['date']['#children']

пробовали менять? К примеру можно заменить через str_replace()

не понял, если не сложно можно полностью ваш вариант?

Аватар пользователя Inj Inj 17 декабря 2014 в 13:18
<?php
str_replace
('Дата начала''С'$vars['form']['date_filter']['min']['#children']);
?>

аналогично с окончанием

П.С пардон, очепятался)

Аватар пользователя Inj Inj 17 декабря 2014 в 13:18

куды ж дальше)
замени

$vars['form']['date_filter']['min']['#title'] = t('С'); // заменяем текст

на

str_replace('Дата начала', 'С', $vars['form']['date_filter']['min']['#children']);
Аватар пользователя Айрат Айрат 17 декабря 2014 в 13:38

Inj как именно? вот так?

<?php

function airat_preprocess_views_exposed_form(&$vars
{

      

str_replace('Дата начала''С'$vars['form']['date_filter']['min']['#children']); // заменяем текст
unset($vars['form']['date_filter']['min']['#printed']);
      
$vars['widgets']['filter-date_filter']->widget=drupal_render($vars['form']['date_filter']['min']);

}

?>
Аватар пользователя Inj Inj 17 декабря 2014 в 13:47

ну я бы ещё добавил

if ($vars['form']['#id'] == 'views-exposed-form-news-page-1') {
}

что бы формой не промахнуться, в остальном так

Аватар пользователя Айрат Айрат 17 декабря 2014 в 14:03

Нет, второе поле вообще исчезло. Посмотрите пожалуйста еще раз прикрепленный файл с массивом переменной vars

Аватар пользователя Inj Inj 17 декабря 2014 в 14:16

а так?

function airat_preprocess_views_exposed_form(&$vars)
{
        if ($vars['form']['#id'] == 'views-exposed-form-news-page-1') {
                str_replace('Дата начала', 'С', $vars['form']['date_filter']['min']['#children']); // заменяем текст
                str_replace('Дата окончания', 'По', $vars['form']['date_filter']['max']['#children']); // заменяем текст
                unset($vars['form']['date_filter']['#printed']);
                $vars['widgets']['filter-date_filter']->widget=drupal_render($vars['form']['date_filter']);
    }
}
Аватар пользователя Айрат Айрат 17 декабря 2014 в 14:53

Inj wrote:
а так?

function airat_preprocess_views_exposed_form(&$vars)
{
        if ($vars['form']['#id'] == 'views-exposed-form-news-page-1') {
                str_replace('Дата начала', 'С', $vars['form']['date_filter']['min']['#children']); // заменяем текст
                str_replace('Дата окончания', 'По', $vars['form']['date_filter']['max']['#children']); // заменяем текст
                unset($vars['form']['date_filter']['#printed']);
                $vars['widgets']['filter-date_filter']->widget=drupal_render($vars['form']['date_filter']);
    }
}


А так вообще 0 эффекта никаких изменений нет. Сама функция function airat_preprocess_views_exposed_form работает. так как для других моментов (переписать кнопку отправки) работает

Аватар пользователя Inj Inj 17 декабря 2014 в 14:54
function airat_preprocess_views_exposed_form(&$vars)
{
        if ($vars['form']['#id'] == 'views-exposed-form-news-page-1') {
                str_replace('Дата начала', 'С', $vars['form']['date_filter']['min']['#children']); // заменяем текст
                str_replace('Дата окончания', 'По', $vars['form']['date_filter']['max']['#children']); // заменяем текст
                unset($vars['form']['date_filter']['min']['#printed']);
                unset($vars['form']['date_filter']['max']['#printed']);
                $vars['widgets']['filter-date_filter']['min']->widget=drupal_render($vars['form']['date_filter']['min']);
                $vars['widgets']['filter-date_filter']['max']->widget=drupal_render($vars['form']['date_filter']['max']);
    }
}

ещё так попробуй

Аватар пользователя Айрат Айрат 17 декабря 2014 в 15:06

а где ты это нашел?
<?php$vars['widgets']['filter-date_filter']['min']->widget?>

В массиве же нет ее. И поэтому вообще ошибка пхп вылезла что нет такого

Аватар пользователя Inj Inj 17 декабря 2014 в 15:40
function airat_preprocess_views_exposed_form(&$vars)
{
        if ($vars['form']['#id'] == 'views-exposed-form-news-page-1') {
                str_replace('Дата начала', 'С', $vars['form']['date_filter']['min']['#children']); // заменяем текст
                str_replace('Дата окончания', 'По', $vars['form']['date_filter']['max']['#children']); // заменяем текст
                unset($vars['form']['date_filter']['#printed']);
                unset($vars['form']['date_filter']['max']['#printed']);
                unset($vars['form']['date_filter']['min']['#printed']);
                $vars['widgets']['filter-date_filter']->widget=drupal_render($vars['form']['date_filter']);
    }
}

а так?)

Аватар пользователя Inj Inj 17 декабря 2014 в 16:15

попробуй дописать ещё смену тайтлов, которые делал в самом начале к моему последнему варианту функции и попробуй вывести &$vars ещё раз, в самом конце, после исправлений. Посмотри, будет ли вообще присутствовать "Дата окончания" и если да, то в какой переменной

Аватар пользователя Inj Inj 17 декабря 2014 в 16:32

тьфу, блин, что-то торможу сегодня конкретно. Ведь нужно же присвоить замену

$vars['form']['date_filter']['min']['#children'] = str_replace('Дата начала', 'С', $vars['form']['date_filter']['min']['#children']); // заменяем текст
$vars['form']['date_filter']['max']['#children'] = str_replace('Дата окончания', 'По', $vars['form']['date_filter']['max']['#children']); // заменяем текст

а проще, наверн, вместо всего этого написать

function airat_preprocess_views_exposed_form(&$vars)
{
        if ($vars['form']['#id'] == 'views-exposed-form-news-page-1') {
               
                $vars['widgets']['filter-date_filter']->widget = str_replace(array('Дата начала', 'Дата окончания'), array('С', 'По'), $vars['widgets']['filter-date_filter']->widget);
    }
}

...явно не мой день)

Аватар пользователя Айрат Айрат 17 декабря 2014 в 16:39

Да!!!!! Ты молодец! Заработало так как я хотел)))) Респект тебе большой

<?phpfunction airat_preprocess_views_exposed_form(&$vars) 
{
    if ($vars['form']['#id'] == 'views-exposed-form-news-page-1') {
 
        $vars['widgets']['filter-date_filter']->widget = str_replace(array('Дата начала', 'Дата окончания'), array('С', 'По'), $vars['widgets']['filter-date_filter']->widget);
    }
}?>