В Drupal, как я могу включить один узел в другой? - PullRequest
1 голос
/ 16 декабря 2010

Допустим, у меня есть два типа контента: предложения и действия. Предложение будет содержать несколько действий, но действия также должны быть доступны для просмотра независимо друг от друга. Каждый будет содержать несколько текстовых полей и ссылок.

Должны ли предложения и действия быть узлами? Как бы я поступил так?

Ответы [ 4 ]

3 голосов
/ 16 декабря 2010

По сути, в друпале нет отношений между родителями и детьми. Вы можете создавать такие вещи, используя ссылку на узел CCK и некоторые творческие представления.

2 голосов
/ 16 декабря 2010

Есть несколько способов сделать это, как с большинством вещей в Drupal, но если бы это был я, я бы сделал это:

  1. Построить отношения узлов в CCK
  2. Загрузить «дочерний», т. Е. Связанный узел, с помощью node_load () в файле шаблона
  3. Извлеките нужный бит из недавно загруженного узла и распечатайте его в «родительском» узле

Редактировать: да, они оба должны быть узлами.

Если вы используете этот метод, то после его настройки вам нужно будет перейти к своим предложениям и выбрать, какие действия вы хотите «содержать» (т. Е. Связать).

Затем, чтобы распечатать их, вам понадобится код, подобный

<?php
$actions = $node->field_name_of_your_actions_link_field;

foreach($actions as $action){
  $anAction = node_load($action[nid]);
  $output .= $anAction->the_bit_you_need_to_get[0][content];
}
?>

Конечно, имена переменных будут другими, но, надеюсь, это укажет вам правильное направление

0 голосов
/ 01 июня 2012

Вы смотрели в модуль Views? Он чрезвычайно надежен и позволяет отображать практически все.

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

Затем вы создадите представление страницы, которое будет фильтроваться по предложению типа контента. Вы сможете добавить все поля из предложения, заказать их и выполнить свою CSS, чтобы они отображали, как вы хотите.

Тогда у вас будет другое представление, на этот раз блок, и в нем будут перечислены ваши Действия, чтобы вы могли фильтровать по этому типу контента. Затем вы бы добавили контекстный фильтр, чтобы получить таксономию загруженного вами узла. После того, как вы отобразите этот блок на страницах предложений, он должен показать ссылки на их действия.

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

Виды отличные. Это немного пугающе, но как только вы освоитесь, его довольно легко использовать. Приношу свои извинения, если вы уже знали об этом, и я что-то упустил в ваших требованиях.

0 голосов
/ 16 декабря 2010

Попробуйте использовать отображение блока Views. Вам нужно создать отображение блока для представления, которое показывает все (или сколько вам нужно) узлы действий, связанные с соответствующим узлом предложения (вам нужно будет установить аргумент представления примерно так: Nid - предоставить аргумент по умолчанию - идентификатор узла с URL). А затем прикрепите этот блок к страницам, представляющим страницы ваших предложений.

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