yurysh07 VIP
Total posts: 83
08 Окт 2015 09:46

Добрый день,

Я вывожу поле "дата" в формате "возраст". При этом не могу настроить фильтр, чтобы с его помощью можно было бы выводить записи с такого-то по такой-то возраст. Если указываю возраст в ручную, в формате "digital " , то с такой фильтр прекрасно работает. 1. можно ли настроить фильтр так, как описано выше для поля дата, выводимого в формате возраст 2. 2 Если нет, то как можно эту проблему решить, может быть обходным путем?

С уважением, Юрий

Последние изменения: 22 Нояб 2015


Sergey
Total posts: 13,748
11 Окт 2015 12:13

Сделайте скриншот не совсем понимаю о чем вы говорите. Там столько настроек и вариаций, трудно сказть что у вас там реально.


Skyer
Total posts: 57
02 Нояб 2015 12:19

Добрый день!

Необходимо исключить из отображения в публикации поле типа "image" Ознакомился с этим описанием. Все достаточно подробно описанно, но у меня не получается, возможно я не праильно что-то указал.

Добавляю параметр "field_image", я так понимаю image это поле и имя этого параметра должно начинаться с field_

<fields name="tmpl_params">
        <fieldset name="positions" label="Exclude" description="Fields to be excluded of fields that are allowed to be shown in the list">
            <field name="field_id_exclude" client="list" type="meresourcesfields" size="15" key="id" multiple="true" default="" label="Fields to exclude" description="" />
            <field name="field_image" type="meresourcesfields" filters="'text'" label="Where is the price?" />
        </fieldset>
    </fields>

следовательно у меня теперь есть параметр [$params->get('tmpl_params.field_image')] который необходимо вставить в шаблон. В моем шаблоне за отображение полей отвечает следующий фрагмент кода:

<dl class="dl-horizontal text-overflow">
                <?php foreach ($item->fields_by_id AS $field):?>
                    <?php if(in_array($field->key, $exclude)) continue; ?>
                    <?php if($field->params->get('core.show_lable') > 1):?>
                        <dt id="<?php echo $field->id;?>-lbl" for="field_<?php echo $field->id;?>" class="<?php echo $field->class;?>" >
                            <?php echo $field->label; ?>
                            <?php if($field->params->get('core.icon')):?>
                                <?php echo HTMLFormatHelper::icon($field->params->get('core.icon'));  ?>
                            <?php endif;?>
                        </dt>
                    <?php endif;?>
                    <dd class="input-field<?php echo ($field->params->get('core.label_break') > 1 ? '-full' : NULL)?> <?php echo $field->fieldclass;?>">
                        <?php echo $field->result; ?>
                    </dd>
                <?php endforeach;?>
            </dl>


Подскажите в какую часть кода необходимо вставить этот параметр?


Sergey
Total posts: 13,748
03 Нояб 2015 10:14

Skyer Добавляю параметр "field_image", я так понимаю image это поле и имя этого параметра должно начинаться с field_

Нет. Начинаться должно с field_id_ а потом просто имя уникально параметра. Например field_id_exclude_image. А вот что бы оно показало только картика то нужно поменять вот этот filters="'text'" вот на это filters="'image'". Так же нужно добавить key="id" что бы объявить что вы работаете с ID а не с ключем.

Я одного не пойму там же уже есть параметер исключения полей? ПОчему это поле не выбрать там? И потом если оно не нужно, почему его просто в настроках полей не отключить что бы показывать в полном виде?

Ну а вообще все что нужно вставить это

<?php if($field->id == $params->get('tmpl_params.field_id_exclude_image')) continue; ?>

сразу после

<?php if(in_array($field->key, $exclude)) continue; ?>

Skyer
Total posts: 57
03 Нояб 2015 11:27

Спасибо огромное за разъяснения, теперь мне понятно. Буду пробовать. Просто дело в том, что мне нужно в шаблоне списка материалов выводить их в виде - картинка выводится отдельно в левой части, а остальные поля справа от неё. Реальзовать я решил следующим образом - исключить изображение из общего списка и вывести его отдельно. Возможно есть более простой способ? Вид материала в списке


Skyer
Total posts: 57
03 Нояб 2015 21:01

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


Sergey
Total posts: 13,748
04 Нояб 2015 08:36

Да должно работать. Наверно что то не досмотрели. Почему не использовать встроенный параметер для исключения поля? прикрепите шаблон суюда вместе с файлом xml я посмотрю.


Skyer
Total posts: 57
04 Нояб 2015 08:44

шаблон

Я извиняюсь, возможно я что-то упустил, как использовать встроеный параметр исключения поля?


Sergey
Total posts: 13,748
04 Нояб 2015 08:54

В настройках шаблона есть список полей для исключения.

2015-11-04_14-51-45

Выберите это поле там, и оно будет исключено из списка основного.

А в коде у вас до сих пор

<field name="field_id_exclude_image" type="meresourcesfields" key="id" size="15" multiple="true" default="" client="list" filters="'text'" label="1234566" description="" />

Где filters="'text'". Это значит что в настройках шаблона, это поле не покажет в списке полей картинок вообще. Как же вы его исключите? Нужно поменять фильтр на те типы полей которые хотите что бы там были filters="'image'" или если несколько то filters="'text','textarea','html'".


Skyer
Total posts: 57
04 Нояб 2015 09:15
  1. Я пробовал указывать и 'image' и 'text', в любом из случаев выводятся все поля и те и другие. Просто хочется понять как этот механизм работает. В коде я ничего не напутал, правильно все указал?

  2. На счет второго варианта, если я в настройках шаблона исключу поле 'image' из списка полей, оно соответственно не выведется, а в том месте где оно мне нужно я его смогу вывести уже вручную, я правильно Вас понял?


Sergey
Total posts: 13,748
04 Нояб 2015 09:54

Skyer На счет второго варианта, если я в настройках шаблона исключу поле 'image' из списка полей, оно соответственно не выведется, а в том месте где оно мне нужно я его смогу вывести уже вручную, я правильно Вас понял?

Да. Правильно. Если вы хотите что бы его вообще не было в объекте $item->field_by_id то тогда в настроках поля отключаем его от паказа в списке. Но так как оно стоит показывать, то исключение просто говорит что не отображить но в объекте оно будет доступну. В реале эта строка и пропускает эти поля.

<?php if(in_array($field->key, $exclude)) continue; ?>

Skyer Я пробовал указывать и 'image' и 'text', в любом из случаев выводятся все поля и те и другие. Просто хочется понять как этот механизм работает. В коде я ничего не напутал, правильно все указал?

Нужно не только указать но потом выбрать само поле в настроках после этого. То что вы указваете в атрибует фильтра это просто какие типы полей показать в списке селект в настроках. А вы уже в настройках выбираете кикие еменно поля вам нужно выбрать.


Skyer
Total posts: 57
04 Нояб 2015 10:33

Капеееееец....=))))))) Во блин... Я Вам очень благодарен что растолковали что к чему...! Но блин хрен поймешь что этот параметр filters="'text','textarea','html'" отключает поля, которые затем нужно выбрать для отображения в настройках... В описании этого не указанно, я даже подумать не мог что нужно дополнительные манипуляции выполнить. Теперь буду знать.

P.s. было бы неплохо в мануальчик эту пометку внести, мало ли, может кто-то ещё голову ломает.)))))

Ещё раз спасибо!


Skyer
Total posts: 57
04 Нояб 2015 14:28

Это снова я, извиняюсь что уже надоел с подобными вопросами. Вобщем выбирая ненужные поля, они выключаются из побликации, все работает супер! Но когда я дабавил новый параметр, он появился в окне Exclude, согласно тех настроек которые я указат в *.xml файле:

<field name="field_id_exclude_image" client="list"  type="meresourcesfields"  size="15" key="id" multiple="true" default="" filters="'text','textarea','html'" label="field id exclude image" description="Дополнительный параметр" />

С этим также вопросов никаких нет, все правильно. Но теперь появляется вопрос, как правильно включить эти параметры?

Сделал как Вы сказали, добавил:

<?php if($field->id == $params->get('tmpl_params.field_id_exclude_image')) continue; ?>

сразу после

<?php if(in_array($field->key, $exclude)) continue; ?>

но они все равно не работают...( файлы шаблона


Sergey
Total posts: 13,748
04 Нояб 2015 16:42

В данном примере

<field name="field_id_exclude_image" client="list"  type="meresourcesfields"  size="15" key="id" multiple="true" default="" filters="'text','textarea','html'" label="field id exclude image" description="Дополнительный параметр" />

Обратите внимание на multiple="true". Это значит что можно выбрать несколько полей. А это значит что значение $params->get('tmpl_params.field_id_exclude_image') будет массив. Уберите size="15", multiple="true" и пересохраните настройки что бы заработало.

<?php if($field->id == $params->get('tmpl_params.field_id_exclude_image')) continue; ?>

или поменяйте это условие на проверку массива а не одного значения.

<?php if(in_array($field->id, $params->get('tmpl_params.field_id_exclude_image', array()))) continue; ?>

Skyer
Total posts: 57
04 Нояб 2015 20:29

Все супер! Работает отлично. Спасибо огромное за помощь. =)


Skyer
Total posts: 57
15 Нояб 2015 23:07

Доброго времени суток! В стандартном шаблоне "полный вид статьи" не предусмотрено исключать поля, вот пытаюсь добавить это собственноручно. В файл .xml данные внес, соответствующая опция появилсь. А вот в файл .php затрудняюсь правильно добавить операцию которая будет фильтровать поля....

По аналогии пытаюсь добавить эту строку:

<?php if(in_array($field->key, $this->exclude)) continue; ?>

после:

    <?php if(isset($this->item->fields_by_groups[null])):?>
    <?php foreach ($this->item->fields_by_groups[null] as $field_id => $field):?>

но получаю ошибку... "Warning: in_array() expects parameter 2 to be array, null given in "

Подскажите, что я делаю не так...?


Sergey
Total posts: 13,748
16 Нояб 2015 13:43
<?php if(in_array($field->key, $params->get('tmpl_params.field_id_exclude'))) continue; ?>

Skyer
Total posts: 57
16 Нояб 2015 15:41

Ошибка больше не появляется, но выбранные поля не пропадают из публикации... что-то не так...( Шаблон


Skyer
Total posts: 57
17 Нояб 2015 15:50

Может я не в то место ставлю этот код...? Просто шаблон "полный вид статьи" имеет немного другой вид, может там одной строки не достаточно? Помогите пожалуйста, вчера весь вечер продолбался с ним... и так и сяк пробовал, не получилось...(


Skyer
Total posts: 57
17 Нояб 2015 20:35

Все, разобрался....=) оказывается правильная строка должна быть немного другого вида:

<?php if(in_array($field->id, $params->get('tmpl_params.field_id_exclude', array()))) continue; ?>

теперь и в шаблоне "полный вид материала" так же можно отключать поля, для отображения. Ура!


Sergey
Total posts: 13,748
19 Нояб 2015 14:10

Поздравляю!

Работает на Cobalt