Puncte:0

Cum se transmite Block ID unei vizualizari?

drapel us

Am un tip de bloc personalizat numit HomeBlocks. Acest pachet are un câmp de paragrafe care permite mai multe paragrafe.

Apoi plasez (folosind Layout Builder) o instanță a acestui tip de bloc pe pagina mea de pornire (un tip de nod numit Landing Page). În aspectul tipului de bloc am o vizualizare care listează unele dintre paragrafele adăugate la acel bloc specific. Vizualizarea listează paragrafele mele, dar listează toate paragrafele de acest tip. Dacă adaug un filtru contextual pentru ID-ul părinte în vizualizare și setez ca Fixed, valoarea fiind BlockID-ul blocului pe care l-am plasat pe pagina mea de pornire; apoi filtrează numai la cele adăugate la acel bloc. Perfect.

Întrebarea este atunci; cum să setați dinamic acest filtru contextual?

Mă pot gândi la 2 abordări:

  1. Creați un plugin de filtru contextual care trece BlockID.
  2. Treceți BlockID din aspect în vizualizare.

M-am uitat la opțiunea 2 cu ceva timp în urmă și am constatat că se lucrează pentru a permite ca argumentele să fie transmise înapoi de la LB; dar suporta doar valori statice (spre deosebire de jetoane).

Opțiunea 1 pare destul de simplă și am configurat-o. Pentru început, pur și simplu transmit înapoi valoarea ID-ului static și aceasta funcționează conform așteptărilor.

Piesa care lipsește aici este cum să obțineți o listă de blocuri (de un anumit tip) care sunt plasate pe un anumit nod?

Am încercat să fac asta cu o vizualizare și pot obține o listă de BlockId-uri ale tuturor blocurilor de acest tip; dar nu pot vedea cum se filtrează la cel folosit pe nodul specific.

Dacă va exista vreodată doar 1 instanță a acestui bloc folosită pe site; apoi pot folosi vizualizarea mea existentă (care listează singurul bloc de acest tip). Nu mă îngrijorează faptul că am mai multe versiuni ale acestui bloc pe o singură pagină; dar încerc să mă adaptez că ar putea fi mai multe pagini cu acest bloc adăugat.

Puncte:0
drapel in

Deci, dacă am înțeles bine, iată ce ai făcut:

  1. Am creat câteva tipuri de paragrafe.
  2. A creat un tip de bloc, cu un câmp de paragraf care face referire la tipurile de paragraf din #1.
  3. A creat o vizualizare cu o afișare Bloc de Paragrafe, cu un filtru contextual pentru Parent ID.
  4. S-a adăugat vizualizarea din #3 la un afișaj al tipului de bloc din #2 prin Layout Builder.
    • Presupun că aveți alte lucruri care se întâmplă în aspect, altfel, acesta ar fi pur și simplu un bloc de vizualizare a paragrafelor sau doar a adăugat câmpul paragraf direct la aspect.
  5. A creat instanțe ale tipului de bloc în #2 și le-a adăugat pe o pagină.

Există câțiva pași cruciali care sunt ușor de ratat:

  • La pasul 3 (crearea vizualizării), creați o relație cu tipul de entitate Block.Apoi, în loc să creați un filtru contextual pentru ID-ul părinte al paragrafului, creați un filtru contextual pentru blocul aferent. ID camp.
  • La pasul 4 (adăugarea blocului de vizualizare la aspect), când adăugați blocul de vizualizare pe aspectul blocului, Layout Builder vă va întreba despre titlul blocului și vizibilitatea acestuia. Imediat după aceea și din cauza modificărilor anterioare ale vizualizării, vă va întreba acum ce valoare să transmiteți ca valoare a filtrului contextual. Va exista o opțiune care reprezintă blocul curent.

Rezultatul final ar trebui să fie o vedere în interiorul aspectului unui bloc care filtrează paragrafele după ID-ul blocului care îl conține.

liquidcms avatar
drapel us
grozav, dar poate sunt necesare patch-uri? Descrierea ta a ceea ce am este corectă. Nu există nicio relație pentru „tip de entitate bloc”. Am relație cu conținutul folosind câmpurile adăugate la acel tip. Folosind unul dintre acestea, am arg pentru "ID bloc personalizat". După plasarea blocului, am legături contextuale pentru „controlul vizibilității” (patch), gestionarea elementelor (styling) și configurarea. În configurare văd doar titlu și suprascrie titlu. De asemenea, pot activa să solicite argumente în Vizualizare sub setări de bloc; dar aceasta necesită doar un id static în aspect.
liquidcms avatar
drapel us
Voi încerca să configurez acest lucru pe un site vanilla D9. Poate că aveți patch-uri, sau nu am cele mai recente (sunt pe D9.2) sau patch-urile pe care le am interferează.
liquidcms avatar
drapel us
Am încercat un site vanilla D9.2 cu doar câteva patch-uri pentru a permite paragrafelor să funcționeze deloc cu blocuri în LB și obțin aceleași rezultate ca cele menționate. Voi încerca să actualizez la cel mai recent D9.3.
drapel in
@liquidcms Tocmai am verificat, relația este numită ca „După id: Bloc personalizat folosind `„". Când adăugați filtrul contextual, câmpul de filtrat este „ID bloc personalizat”. Apoi un detaliu minor pe care l-am omis, când configurați filtrul contextual, bifați „Specificați criteriile de validare”, cu validatorul setat ca „Blocați”. , și Single ID ca argument. Cred că acest ultim bit este ceea ce a făcut ca selecția să apară pentru mine ultima dată când am făcut asta. Și aceasta a fost disponibilă din 9.1 fără corecții.
liquidcms avatar
drapel us
Din păcate, nicio relație în apropierea acestui nume. Poate un modul de contribuție pe care îl aveți? O să văd dacă o pot găsi. Mulțumiri.
drapel in
@liquidcms O căutare rapidă pentru „După id” (potrivire majuscule și cuvinte) în cod dezvăluie că această caracteristică este din `entity_reference_revisions`, o dependență de `paragrafe`, pe care ar trebui să o aveți deja.
liquidcms avatar
drapel us
Destul de ciudat, am făcut exact aceeași căutare sensibilă la majuscule pe întregul site și nu am găsit nimic. Dar un pic de săpat și ghicit că aveți acest patch la locul lor: https://www.drupal.org/node/2799479. Cel de la #163 ca eu il am pe cel de la #158 care inca nu a adaugat aceasta relatie. Multumesc pentru ajutor.
liquidcms avatar
drapel us
Și chiar și cu acel patch.. încă nu există nicio opțiune de a trece în ID-ul blocului curent (sau orice altceva în vizualizare). Bănuiesc că un alt patch oferă această parte a soluției. Deocamdată mă voi întoarce la soluția mea a unui plugin de argument personalizat pentru a trece „id-ul părinte”. Acest lucru funcționează, dar în momentul de față preia doar primul bloc de acest tip, deoarece nu găsesc răspunsul la întrebarea mea inițială - „cum să obțin o listă a blocurilor plasate pe un nod?”.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.