Создание представления для узла - PullRequest
0 голосов
/ 28 июля 2010

У меня возникли проблемы с созданием представления для узла на моем веб-сайте.

Контент имеет путь 'content /%', где% - это заголовок узла.Я пытался создать представление страницы в модуле Views2, но безрезультатно.Когда я пытаюсь выполнить предварительный просмотр с именем одного из моих узлов, ничего не появляется, и когда я посещаю этот узел в реальном времени, он отображает текст на экране без какого-либо форматирования.

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

Параметры страницы

Путь: содержимое /%

Аргументы

Узел: Заголовок

  • Заголовок:% 1
  • Действие, выполняемое при отсутствии аргумента: Предоставить аргумент по умолчанию
  • По умолчаниютип аргумента: идентификатор узла из URL

Edit

Я опишу поведение, которое я ожидаю увидеть ...

У меня есть список узлов на моем веб-сайте в представлении .... который отображается без каких-либо проблем.
Что я хотел бы сделать, это щелкнуть по узлу и перейти на страницу этого узла, которая по сути являетсярасширенное представление одного элемента из моего списка.

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

Ответы [ 2 ]

2 голосов
/ 28 июля 2010

Изменить: Основываясь на ваших изменениях, вы уже использовали Views для создания списка узлов, и теперь вы хотите иметь возможность щелкнуть один из них и перейти на страницу узла.

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

Если вы хотите создать уникальную тему вашего узла (помимо того, что позволяет делать перемещение полей и изменение настроек отображения в пользовательском интерфейсе), вам следует взглянуть на файлы пользовательских шаблонов и их темы. Ресурс здесь: http://drupal.org/theme-guide

Вы можете изменить файл node.tpl.php по умолчанию, если вы хотите изменить способ отображения всех узлов, или вы можете скопировать этот файл и переименовать его в node-name_of_custom_type.tpl.php, чтобы уникально оформить созданный вами пользовательский тип контента, но я рекомендую прочитать систему тем Drupal, прежде чем вносить эти изменения.

Конец редактирования


Если вы хотите назначить путь отображению страницы представлений, вы не должны моделировать его после каких-либо существующих путей (например, путей к узлам, как вы упомянули). Это должно быть что-то уникальное, чтобы избежать конфликтов псевдонимов. Так, например:

my-path/%

Теперь, если вы просто хотите встроить представление в свой узел (и хотите передать идентификатор узла в качестве аргумента), вы на полпути. Настройки аргументов, основанные на вашем описании, верны. Однако вам не нужно отображать страницу.

Вот несколько вариантов:

  • Quick 'n' Dirty: Создайте отображение блока (которому не нужен путь) и вставьте блок в область на странице узла (я использовал область content_bottom) «встроить» его в ваш узел
  • Мощный, гибкий: Используйте функцию views_embed_view ( api docs здесь ) внутри вашего узла (тело или поле CCK, просто убедитесь, что вы используете "фильтр PHP" "формат ввода)

Если вы используете views_embed_view, у вас есть гибкость, позволяющая прикреплять результаты просмотра в любом месте, и вам даже не нужно создавать страницу представлений или отображение блоков, потому что эта функция может просто использовать экран «По умолчанию». .


Примечание: Если вы экспортируете свой View и сохраните код экспорта на сайте, таком как pastebin или drupalbin , люди могут импортировать View и увидеть его непосредственно, чтобы помочь ответить на ваш вопрос в деталях.

1 голос
/ 28 июля 2010

Хорошо, понял. :)

Использование Node: Title в качестве аргумента довольно сложно: при настройках по умолчанию аргумент должен точно соответствовать заголовку. Таким образом, если вы хотите сопоставить значение «Test value», ваш путь должен выглядеть как content / Test% 20value (обратите внимание на заглавные буквы).

Это даст вам нужный вам узел. Вы сказали, что для аргумента по умолчанию установлено значение Node ID из URL; это действительно не относится к Node: Заголовочные аргументы. Он пытается найти числовой идентификатор узла и использовать его в качестве аргумента, который никогда не будет проверяться на узле: заголовок, если только заголовок узла не совпадает с идентификатором узла.

Если вы просто хотите отобразить все узлы, если отсутствует аргумент заголовка, выберите Показать все значения в качестве действия, которое нужно выполнить, если аргумент отсутствует. Если вы хотите отобразить все узлы, если аргумент заголовка недействителен (например, опечатка или что-то еще), убедитесь, что в группе полей Validator установлено Показать все значения , чтобы выполнить действие, если аргумент не проверяется .

Из-за ограничения точного соответствия для заголовков узлов обычно не рекомендуется использовать Node: Title в качестве аргумента. Вместо этого рассмотрите возможность использования «content / NID», где NID - это идентификатор узла узла строки, в качестве ссылки в исходном представлении. Затем вместо аргумента Node: Title в вашем представлении используйте аргумент Node: ID. Это должно сделать его менее подверженным ошибкам.

...