показать все содержимое определенного типа контента - PullRequest
2 голосов
/ 13 августа 2011

Для каждого термина таксономии я могу получить доступ к странице (я не использую модуль Views), на которой показано все содержимое, помеченное конкретным термином, с использованием пути, подобного следующему: www.example.com/taxonomy/term/1.

Теперь мне интересно, смогу ли я сделать то же самое с типами содержимого (например, для отображения всего содержимого статьи с типом содержимого), используя URL-адрес, например www.example.com/content/type/1.

Ответы [ 2 ]

5 голосов
/ 13 августа 2011

Я предполагаю, что Представления 3. Вы можете создать Представление и предоставить контекстный фильтр в URL для динамического отображения всех узлов этого типа содержимого.

Добавить «Content: Type» в качестве контекстного фильтра. В разделе «Когда фильтр недоступен» выберите «Указать значение по умолчанию», а затем «Необработанное значение из URL». Для вашего примера вы бы выбрали «3» для компонента пути.

Вы можете установить путь к «/ content / type /%», где% - это имя типа контента. Однако я не уверен, что он будет работать с числовыми значениями.

2 голосов
/ 13 августа 2011

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

Ваш модуль должен связать пункт меню с путемнапример, «content / type /%» и визуализировать страницу, содержащую все узлы этого типа контента.
Для визуализации узлов вы можете использовать node_view_multiple () .Для извлечения списка узлов и его рендеринга вы можете использовать код, подобный следующему:

$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', $content_type)
  ->propertyCondition('status', 1)
  ->execute();

$nodes = entity_load('node', array_keys($entities['node']));
return node_view_multiple($nodes, 'teaser');

$content_type - строка, переданная пункту меню.

код, который я сообщил, не будет использовать пейджер, но он покажет все узлы на одной странице.

...