Cms amurg principiile generale de lucru cu macro-uri

Macrorele din sistemul nostru sunt o modalitate simplă de a conecta diferite blocuri de funcții la un site web, de exemplu, o linie de știri, un forum, un catalog de produse etc. și efectuează, de asemenea, diverse operații pentru procesarea șirurilor, realizarea funcțiilor matematice și așa mai departe. Prin combinarea macrocomenzilor, puteți crea aproape orice funcționalitate, inițial absentă în sistem. Cu toate acestea, cele mai multe dintre lucrurile cerute de webmaster pentru a construi site-uri au implementat deja dezvoltatorii de sistem, și trebuie doar să le numim cu macro corespunzător, setați parametrii folosind tastele și personaliza aspectul de proiectare în determinarea fișierele oficiale, dacă este necesar.







Macroanele sunt scrise în corpurile de șabloane sau în desenele altor macrocomenzi (fișiere în dosarul Șabloane), în fișierele de conținut (dosarul Conținut) și în șabloanele de notificare prin e-mail (cu restricții). Din motive de securitate, orice macrocomenzi scrise în fișiere de date nu vor fi executate și vor fi afișate în text simplu, deoarece se crede că, în general, datele pot fi generate de formularele de pe site de către utilizatori. Excepția este cea mai simplă modificare a macrocomenzii (căi și lucruri pe care nu există paranteze pătrate).

Macroanele pot fi dezactivate în anumite blocuri cu forța prin utilizarea macrocomenzilor locale # 036; NOMACRO_START $ și # 036; NOMACRO_FINISH $. Acesta este de obicei folosit pentru documentație și alte scopuri similare.

$ MacrosName # 091; cheie1: valoare1; cheie2: valoare2 ;. ; filtru: fieldname = fieldvalue; stare: boolean; nocache: boolean # 093; $

Un filtru complex. Un șir, în care termenii sunt separați prin virgule, caz în care înregistrarea va fi transferată din director către eșantion pentru prelucrare ulterioară.

În stânga în condiție (valoarea lui A) trebuie să existe un nume al câmpului a cărui valoare va fi utilizată în comparație, iar în dreapta (valoarea B) poate fi fie o macrocomandă, fie o constantă codată greu.

  • A> B ("mai mult")
  • A!> B, A<=B ("не больше", синоним "меньше либо равно")
  • A
  • A!= B ("nu mai puțin", sinonim cu "mai mare sau egal cu")
  • A = B ("egal")
  • A! = B ("nu egal")
  • A în B (linia A este inclusă în rândul B)
  • A în B (linia A nu este în linia B)
  • O cutie B, A conține B (inversă, linia B intră în linia A sau, care este aceeași, A conține B)
  • A! Rin B, A! Conține B (nu inversează, linia B nu este în linia A sau, care este aceeași, A nu conține B)

Dacă A și B sunt numere pozitive sau negative sau zerouri, atunci compararea valorilor va fi efectuată ca numerică (cu excepția condițiilor in și rin). Un separator zecimal pentru valorile date și pentru valorile din baza de date poate fi fie puncte, fie virgule.

Dacă A și B satisfac masca DD.MM.RRRR sau hh: mm: ss DD.MM.RRRR. comparația este în formatul "data-timp" (cu excepția condițiilor de intrare și de șoc).

În toate celelalte cazuri, parametrii vor fi comparați caracter-cu-caractere ca valori șir.

Valoarea lui B nu ar trebui să fie înconjurată de citate, deoarece citatele vor fi considerate ca fiind un caracter normal.

Valoarea lui B nu poate conține virgule. Prin urmare, dacă acestea sunt posibile ca urmare a executării unei macrocomenzi sau a unei constante, ele trebuie înlocuite cu "\" (fără ghilimele) utilizând macrocomanda Replace.

Valoarea B poate conține mai multe variante care sunt considerate "logice OR", separate de "||", adică A = B || B1 || B2. Această posibilitate este rar utilizată, deoarece emularea aproape totală se realizează prin proiectarea formularului A în „B.B1.B2“, în cazul în care punctele sunt necesare numai ca separator de valori diferite și, în loc să le poate fi orice altceva (spațiu, linie, etc.), în funcție de logica proiectului.

În director există o culoare a câmpului, care poate lua valorile albastru, roșu, verde. Pentru a scoate intrările cu valorile verde și albastru într-un singur eșantion, trebuie să scrieți cheia filtru astfel:

filtru: culoarea albastru.green (în loc de un punct, puteți utiliza orice caracter, cu excepția unei virgule, chiar a unui spațiu).

Dacă vrem să verificăm mai multe condiții în același timp, le scriem printr-o virgulă:







filtru: culoare albastră verde, greutate> = 20, greutate <=100, brand != Prada

Sortarea înregistrărilor. Trei parametri sunt enumerați prin virgulă:

  • numele câmpului prin care sorți sau mai multe nume de câmpuri prin / în ordinea utilizării la sortare;
  • asc sau desc (în ordine crescătoare / descendentă), dacă câmpurile sunt multiple - mai multe asc sau desc descrise / respectiv date în câmpurile primului parametru;
  • modul de comparare a valorilor: literal, numeric, data, datatime, auto (detectarea automată a tipului de către prima intrare din director), dacă câmpurile mai multe - afișează mai multe moduri prin / pentru fiecare dintre ele.

Dacă cheia nu este setată, valoarea implicită va fi "data, desc, auto".

De asemenea, această cheie poate avea valori speciale, nu "triple"

  • aleatoare. Înregistrările din eșantion vor fi amestecate aleator (după filtrare);
  • inversă. Înregistrările vor fi afișate în ordine inversă.
  • extrafield. Înregistrările sunt sortate după câmpul calculat creat în zbor (numai în macroul Știri).

sortare: data, desc, auto
sortare: stare / creată, desc / asc, literal / auto
sortare: aleatoriu
sortare: invers

Conține numele câmpului după al cărui conținut toate duplicatele din selecție vor fi șterse. Dacă în eșantion există înregistrări care se duplică reciproc în totalitate sau parțial, apoi cu ajutorul acestei chei puteți specifica numele câmpului a cărui valoare nu trebuie repetată. De exemplu, în cazul în care înregistrarea 1 are un nume (câmpul Prenume) Alex și înregistrate 2 au același nume, în același domeniu, tasta de setare ca fiind distincte: doar înregistrarea firstname apare în proba 1, iar al doilea va fi ignorat.

O condiție compus pentru executarea unei macrocomenzi. O cheie specială, care este de obicei implementată de orice macro (dar poate fi lipsă dacă nu are sens în ea sau dacă macro-ul este scris de un dezvoltator terță parte). Ca valoare, un șir este transmis acesteia din variabile booleene, separate prin virgule. Un șir boolean înseamnă oricare dintre valorile de pe / 1 / true / yes. care va determina executarea macro-ului, sau valori "empty string" / 0 / false / no. care conduc la faptul că macro-ul nu va fi executat și va fi afișat un șir gol în locul macrocomenzii. În același timp, dacă tasta condiție nu este specificată deloc, macro-ul va fi executat necondiționat.

condiție: 986F8D3F0489456781060C37BECD297B = 125. =, $ Atribut: id $ = "123456"

"Logical AND" în condițiile de execuție macro

În condiție, puteți trece o combinație de condiții, separate prin virgule (și spații după virgule, care vor fi ignorate). Toate condițiile vor fi combinate prin operația "logical AND", adică condiția generală va fi adevărată dacă toate componentele acesteia sunt adevărate. De exemplu, înregistrarea "condiție: 1, 0, 1, 1" va fi echivalentă cu "condiție: 0", iar "condiție: da, 1 adevărată" va fi echivalentă cu "condiție: 1".

Astfel, condiția vă permite să implementați pur și simplu situația când macrocomanda este executată numai dacă toate condițiile sunt adevărate.

"Logical OR" în condiții de execuție macro și combinații mai complexe de condiții

Situația în care macrocomanda trebuie executată dacă oricare dintre condițiile de mai sus este îndeplinită, nu este implementată direct în cheia condiție, dar poate fi rezolvată în următoarele moduri:
- Înregistrarea mai multor macrocomenzi identice unul câte unul, fiecare dintre acestea fiind executat numai dacă sunt îndeplinite unele dintre condițiile. De obicei, acest lucru este destul de convenabil din punctul de vedere al citirii codului, dar dacă mai multe condiții sunt adevărate simultan, macrocomenzile vor funcționa mai mult decât este necesar. Prin urmare, această metodă nu funcționează întotdeauna, deși pentru marea majoritate a situațiilor acest lucru este suficient.
- Mai întâi puteți calcula condițiile folosind alte macrocomenzi și apoi aplicați rezultatul cheii condiție.

De exemplu, avem două atribute: Atributul $: un atribut $ și $: b $, legat de câmpurile de tipul căsuței de bifare și, prin urmare, preluând valori sau un "șir gol". Trebuie să executăm macrocomanda Știri numai o singură dată dacă OR (adevărat orice condiție sau ambele). Să scrie atributele într-un rând: $ Attribute: a $ Attribute: b $, rezultând linia onon. Puteți aplica atunci acest șir în $ macro NotEmpty # 091; # 093; $, ceea ce este de ieșire va „adevăr“, în cazul oricărui șir care nu este gol, iar dacă ambele atribute sunt goale - valoarea „fals“. Ca rezultat, obținem rezultatul dorit cu această notație:

$ News # 091; tabel. ; proiectare. ; condiție: $ NotEmpty # 091; $ Atribut: a $ Atribut: b $ # 093; $ # 093; $

- Puteți utiliza caracteristicile speciale ale macrocomenzii Math, care vă permite să calculați expresii logice în notația Perl, de exemplu, este perfect legal să calculați o expresie a formularului (1 || 1) 0. Desigur, toți parametrii unei astfel de expresii, desigur, vor trebui să fie șiruri cu care se pot executa operații logice, în acest caz, cu linia "1" sau "0".

Procesarea macrocomenzilor

- macrocomenzile sunt procesate "din interior spre exterior", adică, dacă o macrocomandă este imbricată în alta, va fi executată mai întâi imbricată și apoi încadrată. În acest caz, toate macrocomenzile sunt executate imediat ce textul apare în text, adică se va executa mai devreme macroul care este mai aproape de partea de sus a paginii.
- macrocomenzile nu se pot executa în paralel, adică fiecare macro care a început executarea trebuie să-și finalizeze execuția înainte de a începe executarea unei alte macro-uri.
- Dacă macrocomanda nu primește date critice pentru a intra, execuția acesteia va duce la imprimarea rezultatului în corpul paginii. De obicei, aceasta înseamnă că eroarea făcută de dezvoltator are o natură critică, dar se face în sintaxă (cum ar fi erorile de compilare, nu erorile de execuție). Prin urmare, cu excepția cazului în care dezvoltatorul câștigă puternic, astfel de erori nu vor fi văzute de vizitatorii site-ului.

Scrierea propriilor macrocomenzi







Articole similare

Trimiteți-le prietenilor: