Показывать только открытый фильтр, когда доступны данные поля - PullRequest
0 голосов
/ 30 марта 2011

Предположим, мой сайт продает автомобили и другие виды транспорта.У меня есть тип контента под названием Product, и он классифицирован по таксономии, например.Автомобили, велосипеды, лодки, вертолеты.

Тип контента Product имеет несколько полей CCK для описания основных функций продукта, таких как horsepower, number_of_wheels и top_speed. * 1007.*

Я использую представления, чтобы переопределить страницу термина таксономии, и показываю некоторые открытые фильтры, чтобы пользователь мог сузить свой выбор.

Моя проблема в том, что некоторые из моих открытых фильтров не применимы при просмотреопределенные условия.Например, если я просматриваю термин «Велосипеды», я не хочу иметь возможность фильтровать по horsepower!Или, если я просматриваю Лодки, я не хочу иметь возможность фильтровать по number_of_wheels (потому что ни у одной из моих лодок нет колес).

Так есть ли способ скрыть открытый фильтр для поля?если никакие строки в представлении не содержат данных в этом поле?

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Если вы не можете разветвлять типы контента, как предлагает Гэри Грин, создавая отдельные представления (с более детальным управлением фильтрами представлений), возможно, вы могли бы использовать hook_form_alter для проверки значения по умолчанию поля таксономии, соответствующего тип вашего продукта (велосипеды, лодки и т. д.), а затем удалите поля, задав для параметра #access для этих полей значение FALSE.

Если вам неудобно использовать hook_form_alter, вы также можете настроить отображение на них: ни один с jQuery (не удаляйте их, иначе формы не пройдут тест безопасности / целостности после отправки). К сожалению, вы не можете сделать это с помощью простого CSS, потому что, по крайней мере, в D6, входные элементы фильтра CCK не имеют достаточно определенных идентификаторов или классов, чтобы можно было легко манипулировать CSS.

Это предполагает, что у вас есть отдельные страницы представлений для каждого из типов продуктов, определенных таксономией; ваше описание звучит как этот тип установки.

0 голосов
/ 30 марта 2011

Наличие только одного типа контента «Продукты», хотя и простое, в конечном итоге приведет к избыточности и проблемам, таким как то, что вы испытываете сейчас. Гораздо лучше добавлять отдельные типы контента; автомобили, велосипеды, лодки и множество уникальных полей для них. Таким образом, вы можете легко создавать фильтры в представлениях по типу контента.

Если бы вы создавали таблицу в MySQL, у вас была бы только одна таблица Products? Надеюсь нет. ; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...