views, условия на тип материала

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

Аватар пользователя erches erches 27 февраля 2012 в 15:04

Всем привет.

Если я передаю через аргументы ид ноды(node/%), и вывожу для определенного материала определенные поля. Можно ли выводить также через аргументы, но для другого типа материала ему соответствующие поля? Не будет некой накладки?
Почему фильтры в этом не помогают, если поставить отображение конкретного материала...

Комментарии

Аватар пользователя sg85 sg85 27 февраля 2012 в 17:17

на сколько помню, если во вьюхе попытаться вывести поля, не относящиеся к данному типу материала, то он их просто не покажет, в итоге, если отправить на вывод поля из нескольких типов материала, то при выводе представления отображаться будут только нужные, это если я правильно понял. А если поставить фильтр по типам материала, скажем "статья", то попав на тип "новость" получим пустую страницу.

З.Ы. при числе НОД переваливающих за 100к, лучше так не делать Smile

Аватар пользователя erches erches 27 февраля 2012 в 17:17

sg85 wrote:
на сколько помню, если во вьюхе попытаться вывести поля, не относящиеся к данному типу материала, то он их просто не покажет, в итоге, если отправить на вывод поля из нескольких типов материала, то при выводе представления отображаться будут только нужные, это если я правильно понял.

З.Ы. при числе НОД переваливающих за 100к, лучше так не делать =)

Проблема в том что число нод будет переваливать 100к=), не знаю что делать

Аватар пользователя sg85 sg85 27 февраля 2012 в 17:23

При огромном числе нод и разных типах материала лучше даже не пытаться создать представление по адресу node/%, а править node.tpl.php, в противном случае можно ожидать время загрузки ноды по 10 секунд.

Аватар пользователя erches erches 27 февраля 2012 в 17:26

"sg85" wrote:
При огромном числе нод и разных типах материала лучше даже не пытаться создать представление по адресу node/%, а править node.tpl.php, в противном случае можно ожидать время загрузки ноды по 10 секунд.

Вот блин, так и думал что без этого не обойтись.

А можно как-нибудь системно переопределить путь к определенным материалам? Вместо node например, page сделать? Это был бы выход из положения.

Аватар пользователя sg85 sg85 27 февраля 2012 в 17:38

если у представления путь node/% taxonomy/term/% и т.д., то представление перекроет собой вывод стандартного шаблона, даже по алиасу, и проблема тут не в перекрытии а во времени обработки вьювса, т.е. делать так можно убедившись в нормальном функционировании представления, например - вьюс выводящий поля самой ноды, отсортированный по ним же будет работать шустро при любом числе нод, однако, стоит сделать сортировку, скажем, по числу просмотров, то при 1 млн нод можно словить таймаут.

А чем не устраивает модуль pathauto?

Аватар пользователя erches erches 27 февраля 2012 в 17:49

"sg85" wrote:
А чем не устраивает модуль pathauto?

А pathauto разве перекроет node/%?

Тут разве не таже проблема? (

"sg85" wrote:
представление перекроет собой вывод стандартного шаблона, даже по алиасу

)

Аватар пользователя sg85 sg85 27 февраля 2012 в 18:11

нет, pathauto автоматически создает пути для модуля path по заданному шаблону, который в свою очередь, подменяет адреса с, скажем www.example.com/node/1 на www.example.com/about(при этом node/1 остается доступным), если они не заданы явно. Это я к

"erches" wrote:
А можно как-нибудь системно переопределить путь к определенным материалам? Вместо node например, page сделать? Это был бы выход из положения.

А вообще я уже запутался, в чем суть проблемы?

И еще, если я правильно понял сабж, кучу аргументов в /node/%/%/% задать можно, представление работать будет, правда возможно, что оно перекроет собой шаблон вывода ноды, но не уверен(таким образом извращаться пока не приходилось=)).

Аватар пользователя erches erches 27 февраля 2012 в 18:19

"sg85" wrote:
А вообще я уже запутался, в чем суть проблемы?

=)))
вообщем, в views я переопределил node/%(делал я это для типа_материала_1). Далее хочу создать новое представление для типа_материала_2, но как это сделать, если первый views все перекрывает. Что если переопределить node/% на какой-нибудь page/%(для типа_материала_2). Это будут разные вьюхи?
Я надеюсь правильно изложил вопрос=)

Аватар пользователя sg85 sg85 27 февраля 2012 в 18:47

Проблема в том, что у каждого дисплея представления типа "страница" должен быть свой путь, т.е. сделать 2 разных представления для одного и того же пути не получится(вернее получится, но работать будет только одно), если сделать одно представление page/%, а другое node/%, то возникнут трудности с автоматическим созданием ссылок на ноду, к примеру если в каком-либо представлении поставить галочку "ссылка на материал", то ссылаться оно будет всегда на node/%(через алиас, если он есть) независимо от типа материала, конкретно эта проблема решается заменой адреса в настройках поля, и выставлением всех адресов вручную, но в совокупности это будет тот еще геморой, так что по мне, проще 1 раз просто подправить node.tpl.php и не мучиться, так же можно использовать модуль Contemlate, правда беспонятия работает ли он на 7рке.

З.Ы. Модуль path перекрывает собой пути вьюс.

А для чего подменять ноду вьювсом, если не секрет? Вьюс изначально предназначен в первую очередь для построения списков/блоков.

Аватар пользователя erches erches 27 февраля 2012 в 18:55

Щас пытался с помощью pathauto переопределять для каждых типов материала свое имя(тип_материала_1, меняю на тип_материала_1/[node:nid], для тип_материала_2: тип_материала_2/[node:nid]) создаю вьюху с путем тип_материала_1/%, чет нихрена она не работает. Создаю материал, у него путь тип_материала_1/9, но вьюха не видит((

"sg85" wrote:
А для чего подменять ноду вьювсом, если не секрет? Вьюс изначально предназначен в первую очередь для построения списков/блоков.

Вывод полей в том порядке, который мне нужен(заказчику нужен).

Не хочу париться с хардкодингом, при кодинге будут проблемы со стилями, которые придется прописывать кодом...

Аватар пользователя erches erches 27 февраля 2012 в 18:58

В догонку: использую views php, который помогает мне выводить поля в зависимости от выбора пользователя. Поэтому никак нельзя уходить от views

Аватар пользователя sg85 sg85 27 февраля 2012 в 19:08

"erches" wrote:
Щас пытался с помощью pathauto переопределять для каждых типов материала свое имя(тип_материала_1 , меняю на тип_материала_1/[node:nid], для тип_материала_2 : тип_материала_2/[node:nid]) создаю вьюху с путем тип_материала_1/%, чет нихрена он не работает. Создаю материал, у него путь тип_материала_1/9, но вьюха не видит((

Так и не будет работать, ибо модуль path перекрыл представление по этому адресу.
"erches" wrote:
Вывод полей в том порядке, который мне нужен(заказчику нужен).

Порядок полей меняется в самом типе материала.
"erches" wrote:
Не хочу париться с хардкодингом, при кодинге будут проблемы со стилями, которые придется прописывать кодом...

Правка node.tpl.php не является хардкодингом)
"erches" wrote:

В догонку: использую views php, который помогает мне выводить поля в зависимости от выбора пользователя. Поэтому никак нельзя уходить от views

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

Аватар пользователя erches erches 28 февраля 2012 в 17:38

"sg85" wrote:
спасибо за помощь, думаю уже я достал тебя с вполне очевидными вопросами. С друпалом работаю неделю, изучать документацию не интересно=), поэтому упускаю мелочи.

Я всегда задумывался, как переопределить файлы node-тип_материала.tpl.php без полного переписания кода, devel выдает кучу переменных, как их заставить выводиться точно также, только вставить парочку проверок, парочку выводов(своих)?

С уважением, Алексей.