Vizualizări bazate pe șabloane

În versiunea finală, rezultatul muncii privitorului nu se potrivește (pur vizibil) în 90% din cazuri.

Puteți să eliminați o vizualizare. Și există o mulțime de opțiuni pentru acest lucru, de exemplu folosind șabloane.







Temimizarea prin șabloane este aceeași pentru cea de-a șasea și cea de-a șaptea versiune a Drupal.

Să analizăm în detaliu.

Creăm o viziune, nu este nimic complicat, o poți face singur.

Vizualizări bazate pe șabloane

Urmăriți doar previzualizarea prezentării noastre. După cum puteți vedea, toate câmpurile s-au retras în grabă. Conținutul a fost decupat (setat la 100 de caractere), imaginea a fost procesată de stilul de ieșire (vedeți și crearea de stil de imagine software)

Vizualizări bazate pe șabloane

Pentru noi este cu siguranță inacceptabil. Ne întoarcem la temă.

Faceți clic pe Advanced (pentru a deschide meniul). Apoi faceți clic pe Informații.

Vizualizări bazate pe șabloane

În fereastra care se deschide, suntem interesați de un fișier numit Stilul de ieșire a coloanei. Acest fișier este responsabil pentru. ieșirea coloanelor, în general. La petrecere a timpului liber, puteți să vă uitați la toate aceste fișiere și să înțelegeți pentru dvs. ce și cum se simulează prin intermediul acestora.

Vizualizări bazate pe șabloane

Pentru a alimenta șablonul, creați un fișier cu numele specificat ultima în zona Stilul de ieșire a coloanei. În cazul nostru, acesta este numele de vizualizări-vizualizare-câmpuri - test-views - page.tpl.php

Apoi, dați clic direct pe stilul coloanei de ieșire - vedeți codul php. Copiați-l și inserați-l în fișierul șablon pe care tocmai l-ați creat.

Am eliminat intenționat toate inutile, nu ne va fi de folos.

Vizualizări bazate pe șabloane

Modelul va arăta astfel. Acum abandonăm acest fișier în dosarul tematic curent.

Vizualizări bazate pe șabloane

Vizualizări bazate pe șabloane

Apoi, în fereastra cu o listă de șabloane, dați clic pe butonul Rescan template files.

Vizualizări bazate pe șabloane

Dacă ați făcut-o în mod corect, fișierul de evidențiere va fi evidențiat.Dacă acest lucru nu sa întâmplat, căutați unde ați făcut o greșeală.Eroarea se întâmplă de obicei atunci când fișierul șablon are un nume incorect sau este plasat în folderul greșit de pe server.

Dacă aveți totul evidențiat corect, faceți clic pe ok.

Vizualizări bazate pe șabloane

Se specifică modul de vizualizare (dacă este o pagină). Dacă nu este specificat, specificați. Suntem mântuiți.

Vizualizări bazate pe șabloane

În consecință, vedem știrile noastre, cum ar fi trebuit.

Vizualizări bazate pe șabloane

Acum, cel mai interesant. Deschideți șablonul nostru.

Suprascriem tot ce este inutil în el și scoatem variabila $ id. Această variabilă stochează numele cheii elementului rândului $ $.

Nu trebuie să ștergeți memoria cache. Ne uităm la numele zilnic al variabilelor. În rapoartele dvs. vor fi diferite. Le-am dedus special pentru a afla aceste nume.

Vizualizări bazate pe șabloane

Acum putem crea noile noastre variabile (acestea vor afișa o vizualizare) și le vom emite oriunde (în cadrul acestui fișier de șablon, desigur).

Acum am creat variabilele și am pus valorile de ieșire în ele. Mai mult, facem ceea ce dorim și cum vrem.

De exemplu, un simplu tabel:

Nu funcționează. Iată codul:


Scrie o eroare:
Observație: Variabila nedefinită: img în funcția include () (linia 54 din fișierul /sites/all/themes/zen/views-view-fields--view-popular--block.tpl.php).
Observație: Variabila nedefinită: img in include () (linia 54 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).
Observație: Variabila nedefinită: img in include () (linia 54 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).
Observație: Variabila nedefinită: img in include () (linia 54 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).







După cum puteți vedea, am 4 tipuri de imagini care ar trebui afișate. a încercat să atribuie fiecărui tip o variabilă separată și să nu îmbine totul într-una. Iată codul:


Iată eroarea:
Observație: variabila nedefinită: img1 in include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).
Observație: variabila nedefinită: img2 în funcția include () (linia 46 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).
Observație: Variabila nedefinită: img3 in include () (linia 46 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).
Observație: Utilizarea img4 constantă nedefinită - presupusă "img4" în funcția include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).
Observație: variabila nedefinită: img1 in include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).
Notă: Undefined variable: img2 în funcția include () (linia 46 în site-urile de fișiere / toate / teme / zen / vizualizări-view-domenii - vizualizare-populară - block.tpl.php).
Observație: Variabila nedefinită: img3 in include () (linia 46 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).
Observație: Utilizarea img4 constantă nedefinită - presupusă "img4" în funcția include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).
Observație: variabila nedefinită: img1 in include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).
Observație: variabila nedefinită: img1 in include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).
Notă: Undefined variable: img2 în funcția include () (linia 46 în site-urile de fișiere / toate / teme / zen / vizualizări-view-domenii - vizualizare-populară - block.tpl.php).
Observație: Variabila nedefinită: img3 in include () (linia 46 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).
Observație: Utilizarea img4 constantă nedefinită - presupusă "img4" în funcția include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).
Observație: variabila nedefinită: img1 in include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).
Observație: variabila nedefinită: img2 în funcția include () (linia 46 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).
Observație: Variabila nedefinită: img3 in include () (linia 46 în site / all / themes / zen / views-view-fields - view-popular - block.tpl.php).
Observație: Utilizarea img4 constantă nedefinită - presupusă "img4" în funcția include () (linia 46 în site / all / topics / zen / views-view-fields - view-popular - block.tpl.php).


Aici sunt numele câmpurilor


Sunt afișate exact câmpul_style_guide_image, field_fashion_tendency_image, etc.?
Cel mai probabil, variabila id din buclă are o altă valoare, astfel încât variabilele $ img1, $ img2, $ img3 și $ img4 nu sunt declarate.

Anunțurile sunt afișate pe alte pagini.
Soluția este simplă:

Confruntat cu o problemă complet proastă. Există o scurtătură cu un filtru de context prin validarea termenului ID + PHP pentru a afișa termenul în alias și a ieși prin șablonul său, în conformitate cu principiul de mai sus.
În previzualizare, totul funcționează atât pe ID, cât și pe alias. Pe pagină numai prin ID. Cache-ul a fost curățat, cu sinonime am încercat variante diferite, vizualizarea implicită pentru taxonomie a fost deconectată, chiar am conectat șablonul în template.php. Toate cele mai bune.

Poate când deschideți pseudonimul, vizualizarea nu înțelege că filtrul de context al termenului este transmis acestuia? Încercați să poshamanit cu un filtru de context, sau mai degrabă cu verificările sale.

În rețea, am găsit exemple cu validare când argumentul alias este înlocuit cu ID-ul. Cu toate acestea, m-am uitat la depanator și sa dovedit că în argument există exact identitatea termenului. Cu toate acestea, toate dansurile cu o tamburină nu au ajutat.
Ca rezultat, am scuipat și a regenerat pseudonimul, astfel încât ID-ul în sine este prezent în URL-ul în sine. Problema a fost rezolvată.

Nichesebe, magie atât de magică.

Bine ai venit!
Multe mulțumiri pentru articol, m-au ajutat foarte mult.

Am un tip de material cu câmpul "referință entitate". Eu produc acest tip de material prin vedere. În mod specific, câmpurile entităților afiliate sunt afișate astfel:


Totul este afișat, cu excepția fotografiei (field_photo). Din păcate, sunt complet nulă în PHP. Poate ar trebui să existe altă sintaxă pentru imagine?

Da. În câmpul pentru fișier nu va fi valoarea, ci fidul fișierului, uri, dimensiunea și tot ce este altceva.
Faceți print_r ($ ArFather [$ i] [raw] [entitate] -> field_photo [und] [0]); și veți vedea cât de mult în această matrice. Printre altele, va exista o cale spre imagine.

Multe mulțumiri, înțelese.
O altă întrebare, ultima) Cum se afișează etichetele de pe teren?

Deja am vrut să adresez sfaturi despre simularea elementelor multipole, dar am găsit soluția pe cont propriu. Rezult, pot pentru că este util. Nu știu dacă e "kosher".

În buclă, creăm o variabilă pentru ieșire, așa cum este indicat în articol.

Ieșiți cum trebuie, de exemplu, într-un strat și atribuiți un strat de identificator stratului (aici sunt posibile opțiunile pentru gustul dvs., de exemplu, utilizați o clasă, nu id).

În fișierul CSS, creăm un stil pentru container (fundal roșu) și în clasa pseudo-class: first-child, definim stilul conținutului. În acest caz, stilul primului element este determinat. Nu există mai multe straturi în interiorul containerului și, dacă s-ar întâmpla, modificările atribuite de pseudo-clasa ar afecta numai primul strat.

Dintr-o dată am întâmpinat o problemă. Fișierul Șablon de afișare a șablonului nu este preluat dacă vizualizarea este o filă rapidă și se declanșează șablonul implicit. Cache-ul a fost curățat.
Dacă deschideți adresa URL a paginii, toate fără probleme.
Unde să săpești?

Glumă. Nu a lucrat cu casete rapide.
Și când editați o vizualizare, dacă rescanați șabloanele, aceasta nu este preluată? Nu există o rețea în acest sens?
Poate prin intermediul unor procese preprocese cumva bate, el suna la indemana o functie de apelare, care este deja ridicarea de șablon de care aveți nevoie.

De asemenea, la editare nu este preluat. Șablonul de informații este activ. Dacă afișarea este afișată prin adresa URL, aceasta este preluată.
Cu preprocese o idee bună. Voi încerca să vă dezabonați.

Pentru a prinde șablonul dorit, utilizați în template.php funcția MYTHEME_preprocess_views_view_fields ().

Da, în fiecare subiect, deoarece propriile lor modele. Deci, sa dovedit prin cârlig adăuga un model de tragere?

Da. Totul a funcționat așa cum ar trebui. În plus, acest fragment (în forma prezentată) adaugă un șablon pentru mai multe vizualizări și am nevoie doar de el.

Este posibil să ieșiți sau să nu ieșiți un câmp în funcție de valoarea celuilalt? Sau, cel puțin, cu condiția ca câmpul de la care depinde output-ul este gol.
Nu doriți să tăiați etichetele și, dacă nu le tăiați, atunci cazul clar dacă (! Empty ($ bla-bla)) nu funcționează.

De ce nu? Acestea sunt variabile obișnuite. Construcția dacă altceva va funcționa.

Vă mulțumim pentru un astfel de răspuns prompt.
Pentru mine în acest caz, problema a fost legată de găsirea unei valori la care puteți lega funcția goală (). deoarece chiar și cu o valoare de câmp gol, variabila nu este goală din cauza ambalajului din ea. Soluția a fost spionată mai jos.
Pe lângă variabila obișnuită, creez un control, cu etichete tăiate.
dacă conținutul ($ id == 'field_bla-bla');
dacă conținutul ($ id == 'field_bla-bla'));>

Îmi cer scuze, aparent neînțeles. Să presupunem că am o sarcină de a face fiecare veste sub forma unei legături. Asta este, face totul clic clic în care este plasată știrea. Pentru aceasta, puteți împacheta toate știrile din div, care, la rândul său, înfășurat în tag-ul a href. Dar cum să obțineți un link către nodul acestei știri pentru a trece printr-un href?

Multe mulțumiri pentru publicație. Atât de multe probleme au fost eliminate din teză.

Dacă nu există niciun modul care să vă permită să ieșiți materiale într-o vizualizare în diferite moduri de vizualizare, atunci puteți utiliza sesiuni sau variabile statice (nu sunt sigur despre acestea din urmă).
În cazul în care sesiunile fac - atunci în șablon să se uite la sesiune și la fiecare deschidere a șablonului pentru a crește numărul de contoare. Și ultima rulare la zero sau ștergeți-o. Dar aceasta nu este într-un fel o modalitate foarte frumoasă.
Ar fi mai bine să preprocesăm punctul de vedere, dar acest lucru este mai complicat, va trebui făcut.







Articole similare

Trimiteți-le prietenilor: