У меня есть представление Drupal, основанное на одной сущности, извлеченной из другой базы данных (это сущность CiviCRM, загруженная в Drupal с помощью Объект CiviCRM
друпал модуль).
Одним из полей, которые я использую, является поле массива (скажем, оно называется поле массива
), который выводит массив вроде пункт1, пункт2, пункт3
(элементы являются строками) для каждого экземпляра объекта. Количество элементов (то есть длина массива поле массива
) ограничено определенным числом для каждого экземпляра объекта.
Теперь я хочу, чтобы каждый из них предмет
s доступен как отдельное поле в Drupal View. Имя поля должно быть пункт1
и т. д. и значение поля должно быть 1
если пункт1
существует в этом поле массива
массив , и 0
если пункт1
там не существует.
Как мне этого добиться? Я думал о нескольких решениях:
- каким-то образом включить функцию внутри Drupal Views, которая «взорвет» мое поле массива на несколько других полей. Я знаю, что функциональность есть, потому что прямо сейчас я могу фильтровать
поле массива
для конкретных значений с помощью обычного фильтра Drupal Views, т. е. Drupal Views выполняет поиск по поле массива
множество. Я просто не могу получить доступ к этой функции для своей цели.
- с использованием
Представления PHP
-- Я читал, что его нельзя использовать из соображений безопасности: https://ohthehugemanatee.org/blog/2013/12/26/44497-people-are-wrong-how-to-never-use-views-php/
а также производительность: https://www.drupal.org/project/views_php
- Создание собственного небольшого модуля Drupal для разделения
поле массива
. Проблема в том, что создается новая таблица с разделенными значениями. Но мне нужно иметь доступ к этим значениям в представлении Drupal на основе существующей сущности. То есть я не могу работать со случайными таблицами, потому что они не будут доступны в моем представлении Drupal. Отношения
.
- Клонирование существующей сущности (в базе данных CiviCRM), разделение значений
поле массива
, создав новый атрибут сущности для каждого из этих значений (0
или же 1
снова), создавая связь между исходной сущностью и новой сущностью, делая новую сущность доступной в Drupal через Объект CiviCRM
модуль и включение нового объекта в представления Drupal через Отношения
. Проблема в том, что мы предпочли бы не слишком сильно изменять исходную базу данных, если это возможно.
- К сожалению, похоже, невозможно клонировать и изменить объект только на стороне Drupal, т.к.
Объект CiviCRM
Модуль не копирует объект в Drupal, а только извлекает информацию из исходной базы данных.
У кого-нибудь есть подсказка?
Честно говоря, необходимость разделения массива не кажется мне такой уж сложной, поэтому внутри Drupal Views должно быть более простое решение, чем создание дополнительных сущностей. Это только вопрос отображения, так как никакой дополнительной информации не требуется.
Вариант использования/цель:
У меня есть система с одной базой данных Drupal и одной базой данных CiviCRM, которую я хочу дополнить некоторой статистикой. Я создал Drupal View для каждого статистического вопроса, который извлекает информацию из базы данных CiviCRM с помощью Объект CiviCRM
Друпал модуль. Но данные (которые представляют собой варианты множественного выбора) поступают в виде массива вариантов. Я не могу правильно подсчитать параметры с представлениями Drupal, если они недоступны как отдельные значения.