Ссылка узла на таблицу в Drupal - PullRequest
2 голосов
/ 09 августа 2010

У меня есть Drupal с CCK,
У меня есть тип контента с именем Article.
Эта статья имеет 5 ссылок на узлы.
Я использую поле таблицы в CCK и пытаюсь подключить его к
ссылкам, поэтому в каждой статье [которая содержит поле таблицы]
будет таблица с 5 столбцами, один длякаждый продукт
и контент, который может меняться в зависимости от того, что хочет пользователь

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

Изображение для очистки alt text

1 Ответ

3 голосов
/ 15 августа 2010

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

  1. Вместо этогоиспользования 5 отдельных полей ссылки на узел для каждого продукта, добавьте одно поле ссылки на узел, которое ссылается на продукты.В конфигурации для поля (находится на вкладке Управление полями для типа контента) установите Количество значений в 5 в Глобальные настройки .

  2. Затем избавьтесь от поля CCK табличного представления.Вам это не понадобится, так как создаваемый вид будет выполнять то, что вы хотите.

  3. Теперь перейдите к Создание сайта -> Просмотров -> Добавить .Введите имя для просмотра;скажем список .Вы можете изменить теги Описание и на любое значение, но оставьте для Тип просмотра значение Узел .

    * 1040.*
  4. Теперь настройте вид.Под Поля добавьте поля, которые вы хотите отобразить в таблице продуктов;скажем, Узел: Заголовок и Узел: Тело .

  5. Под Фильтры , добавьте фильтр для Узел: введите , чтобы в представлении отображались только продукты, а не другие типы узлов.

  6. В разделе Основные настройки , измените стиль из Неформатированный до Таблица .

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

  7. Под Аргументы , добавьте Узел: ID .Теперь в представлении будут отображаться только узлы с идентификаторами, которые соответствуют аргументу, переданному в представление.

  8. Проверка Разрешить несколько терминов для аргумента , что позволит вам искать большечем один узел за раз.

  9. Поскольку вы не будете передавать эти аргументы вручную, у представления будет автоматически генерироваться аргументы, которые он ищет.Выберите Предоставить аргумент по умолчанию в Действие, которое нужно предпринять, если аргумент отсутствует .

Доступно несколько вариантов, но ни один не соответствует одномуВы хотите: то есть идентификаторы узлов для упомянутых узлов.Итак, выберите PHP Code , чтобы вы могли указать собственный аргумент.Используйте следующий код:

$arguments = array();
$node = node_load(arg(1));

if ($node->field_product) {
  foreach ($node->field_product as $product) {
    if ($product['nid']) $arguments[] = $product['nid'];
  }
}

return implode(',', $arguments);

Это будет искать идентификатор узла страницы (arg(1)), проверьте, есть ли у него поле ссылки на узел продукта ($node->field_product, измените field_product накороткое имя вашего поля), затем создайте аргумент, содержащий идентификатор каждого узла, на который есть ссылка.Он возвращает список аргументов в формате, ожидаемом Views: 1,2,3.

Теперь представление завершено: остается только сделать так, чтобы представление появилось на странице.Вы можете создать дисплей Block , а затем добавить этот блок в область под Building building -> Blocks .Если вы перейдете на страницу, которая ссылается на продукты, появится блок с таблицей ссылочных блоков.

Если вы хотите, чтобы представление было частью самого узла, загляните в Ссылка на представление модуль, который создает поле CCK, которое ссылается на представление во многом как ссылка на узел, ссылается на узел.

...