Am o vizualizare Drupal bazată pe o entitate care este extrasă dintr-o altă bază de date (este o entitate CiviCRM extrasă în Drupal cu ajutorul Entitatea CiviCRM
modulul Drupal).
Unul dintre câmpurile pe care le folosesc este un câmp de matrice (să spunem că se numește câmp de matrice
), care scoate o matrice ca item1, item2, item3
(articolele sunt șiruri de caractere) pentru fiecare instanță a entității. Numărul de elemente (adică lungimea matricei de câmp de matrice
) este limitată la un anumit număr pentru fiecare instanță a entității.
Acum vreau să am fiecare dintre acestea articol
este disponibil ca un câmp separat în vizualizarea Drupal. Numele câmpului ar trebui să fie elementul 1
etc. iar valoarea câmpului ar trebui să fie 1
dacă elementul 1
există în asta câmp de matrice
matricea lui și 0
dacă elementul 1
nu există acolo.
Cum pot realiza asta? M-am gandit la mai multe solutii:
- incluzând cumva o funcție în interiorul Drupal Views care va „exploda” câmpul meu matrice în alte câteva câmpuri. Știu că funcționalitatea este acolo, pentru că acum pot filtra
câmp de matrice
pentru valori specifice cu un filtru normal Drupal Views - adică Drupal Views caută prin intermediul câmp de matrice
matrice. Pur și simplu nu pot accesa această funcționalitate pentru scopul meu.
- folosind
Vizualizări PHP
-- Am citit că nu trebuie folosit din motive de securitate: https://ohthehugemanatee.org/blog/2013/12/26/44497-people-are-wrong-how-to-never-use-views-php/
precum si performanta: https://www.drupal.org/project/views_php
- Crearea unui mic modul Drupal personalizat pentru împărțire
câmp de matrice
. Problema este că pare să creeze un nou tabel cu valorile împărțite. Dar trebuie să pot accesa aceste valori într-o vizualizare Drupal bazată pe o entitate existentă. Adică, nu pot lucra cu tabele aleatoare, deoarece acestea nu vor fi disponibile în vizualizarea mea Drupal Relații
.
- Clonarea entității existente (în baza de date CiviCRM), împărțirea valorilor lui
câmp de matrice
, creând un nou atribut de entitate pentru fiecare dintre aceste valori (0
sau 1
din nou), creând o relație între entitatea originală și noua entitate, făcând noua entitate disponibilă în Drupal prin Entitatea CiviCRM
modul și includerea noii entități în vizualizările Drupal prin Relații
. Problema este că am prefera să nu schimbăm prea mult baza de date inițială, dacă este posibil.
- Din păcate, pare a fi imposibil să clonezi și să schimbi entitatea doar din partea Drupal, deoarece
Entitatea CiviCRM
Modulul nu copiază entitatea în Drupal, ci doar extrage informațiile din baza de date inițială.
Are cineva un indiciu?
Necesitatea de a împărți o matrice nu mi se pare atât de complexă, sincer, așa că ar trebui să existe o soluție mai simplă pentru aceasta în interiorul Drupal Views decât crearea de entități suplimentare. Este doar o chestiune de afișare, aproape, deoarece nu sunt necesare informații suplimentare.
Caz de utilizare/Obiectiv:
Am un sistem cu o bază de date Drupal și una CiviCRM, pe care vreau să îl completez cu niște statistici. Am creat un Drupal View pentru fiecare întrebare statistică, care își extrage informațiile din baza de date CiviCRM cu ajutorul Entitatea CiviCRM
Modul Drupal. Dar datele (care sunt opțiuni cu alegere multiplă) vin ca o serie de opțiuni. Nu pot număra corect opțiunile cu Drupal Views dacă nu sunt disponibile ca valori unice.