Adăugați propriile setări în Drupal temă 7

Ca un exemplu banal setare personalizată subiecte pe blog-ul meu.

Adăugați propriile setări în Drupal temă 7

Exemplu de blog

Inițial, au fost ferm conduse în subiect, dar când am decis să le schimbe, am fost confruntat cu faptul că a trebuit să se urce pe un ftp, editați tema. Ce se întâmplă dacă am o pagină - # 42; .tpl.php mai mult de 2 (page.tpl.php pagina - fata-tpl.php)? Gets sadismul completă și pierdere de timp în zadar, așa că am făcut doar o ajustare corespunzătoare în subiect.

Adăugați propriile setări în Drupal temă 7

pregătire

Pentru a pune în aplicare, avem nevoie de un subiect la care vom adăuga setările personalizate, și o brumă de mâini Form API. sau cel puțin capacitatea de a înțelege rapid lucrurile complexe, nu :)

Și acum la afaceri

Cea mai mare parte munca se face în fișierul temă-settings.php. Dacă nu o aveți, de a crea și de a adăuga o formă de cârlig:

Obțineți valori din acest domeniu putem în șabloane oriunde, pur și simplu utilizați theme_get_setting (). Ca o opțiune este transferată în numele domeniului nostru, și puteți specifica subiectul care ia valoarea, implicit deoarece este scos din uz, dacă este necesar.

Experiența a arătat că cel mai bine este să-și încheie aceste apeluri în stare

Acest lucru va evita multe greșeli, care, de obicei, pop-up în cazul în care valoarea de imprimare și pur și simplu nu este prezent sau atunci când transferul site-ului. Corny la toate lokalke în Chiharu ara și drupalhosting fără un înveliș bate ecran alb de moarte.

De fapt, acesta este întregul proces. Acest lucru face posibil pentru a manipula datele de pe site-ul de opțiuni tematice, care, la rândul său, accelerează procesul de înlocuire pe site-urile mari, iar dacă este făcută la client, nu te va trage peste nimic.

Câteva exemple ultimele

Adăugarea unei secțiuni la câmpurile noastre să fie împărțită în mod logic setări legate de utilizator.

Multumesc pentru raspuns rapid!

Despre setările de impunere în nodul. Nu spun că acest lucru ar trebui să fie făcut, dar nu este aceasta doar o soluție bună pentru setări personalizate?

Ei bine, uite, ce avantaje pot vedea aici:

a) face (si refacuta) foarte repede. Ie pentru un alt site, puteți utiliza template-uri gata făcute, ceva adăugarea și eliminarea necesare.

b) ascunde de motoarele de căutare? Deci, o linie în aceleași roboți toate, nu?

O temă se schimbă și se pare \ eliminate unele câmpuri. Din nou, uita-te pentru un nod și edita chtoli. Și așa este sunt obținute setările pentru un anumit subiect.

Ei bine, este pentru că suntem deja pe subiectul personalizat. Desigur, prin schimbarea temei vom avea câmpurile noastre (unul din acest nod cu setările) pentru a forța de tracțiune la dreapta plasează Tm (în imprimare) noua temă.

Și întrebarea se schimbă atunci când schimbați subiectul aici nu este foarte relevant. La urma urmei, orice suficient personaliza site-ul prin schimbarea temei va cădea o mulțime de lucruri.

Ie toate arata mai sus, mai mult ca avantajele unei astfel de decizii, nu? Ce alte dezavantaje semnificative ai putea suna?

Nu pot spune contra nod de abordare, pentru că nu este utilizat, astfel încât, chiar nu cred că o astfel de decizie. La fel ca și faptul că din exterior, nu drupalway decizie. La urma urmei, capacitatea de a adăuga propriile setări în tema nu este făcută pentru spectacol. Cred că totul are locul ei, și lucruri cum ar fi fraze banale, imeydzhy text pentru subiecte necesare pentru a face setarea.

cel puțin în proiectul meu de decizie ca un nod nu va găsi aplicații. Sunt foarte schepitilen la acest lucru. Sunt foarte mulțumit de tip vybeshivaet formularul web, care este creat atunci când modulul de același nume. închide imediat snoshu și posibilele forme ale unei Pager normale = \ Admin mai curat, iar clientul nu specifică ce este un web-formă, cât și în versiunea în limba română, și toate „Chestionar“. Ei cred că acesta este un sondaj de opinie și stai neponyatkah.

Așa că am ridicat problema în detrimentul a ceea ce vreau să ascund într-un fel competent setările Xena la utilizator normal nu vede nici o setare favikonok, tema rebuld etc.

$ Nod = node_load ($ nid);
$ Ganglioni> FIELD_NAME [ 'und'] [0] 'valoare']

Dacă este așa, pentru că în cazul în care proiectul va sprijini un alt trișor, funcția theme_get_setting () este mai vorbește)

La fel ca și faptul că din exterior, nu drupalway decizie. La urma urmei, capacitatea de a adăuga propriile setări în tema nu este făcută pentru spectacol.

Multe soluții drupalway înrădăcinate blocat foarte profundă și de multe ori aceasta este singura justificare pentru suschestovvaniya lor în forma sa actuală, pe această vorbesc adesea și să lucreze la 8-9. Așa că mă uit, dacă avem atât de multe probleme și ciudățenii cu un set de opțiuni, și dacă pentru a face toate acestea mai ușor și mai logic pentru utilizator?

Și, în apendice la acesta pentru a crea un modul personalizat, care creează un, panoul de administrare proprie specială aceleași forme și Paige. Conținutul așa cum trebuie, etc. Dar o astfel de zona de administrare are sens să scrie doar pentru proiecte foarte mari, și fiecare lucru mic te poate arunca pe subiect.

Scrie admin sau arunca pe subiect și a ascunde / rafina? Abordarea cu un simplu nod de nici mai simplu / mai clar?

$ Nod = node_load ($ nid);
$ Ganglioni> FIELD_NAME [ 'und'] [0] 'valoare']

Dacă este așa, pentru că în cazul în care proiectul va sprijini un alt trișor, funcția theme_get_setting () este mai vorbește)

Ei bine, un alt programator trebuie să citească trei cuvinte despre faptul că terenul trebuie să fie luate în nodul Nastrojki, de exemplu. Prea, pentru că nimic dificil și teribil.

Nu holivar în nici un caz. Am încercat să găsească o soluție rapidă, ușor, convenabil.

Aceasta piele este pentru un an)

Am deși modul în care datele sunt introduse în codul devine curat. Pravdka formatarea se pierde, dar este mai bine decât mai târziu, în stilul curat codul sursă și clasa adaugă el. Tot ce vreau să scrie despre CKEditor'a setarea pentru manageri de conținut, dar nu uitați = \

Doar am observat că, după îndepărtarea / înlocuirea imaginilor din zona de administrare, fișierul vechi nu este șters.

Confruntându-se cu o altă problemă în cazul în care imaginea de fundal specificată prin css sau direct în prin .tpl , apoi prin turnarea de noi conturi de fiecare dată să se joace cu codul, care anulează toate automatizarea) poate cu siguranță, js Cherz pentru a încărca cele mai recente fișiere trimise, dar acest lucru este Mauvais tone. Cum se setează automat fișier redenumire la încărcarea șablon?

Doar am observat că, după îndepărtarea / înlocuirea imaginilor din zona de administrare, fișierul vechi nu este șters

El trebuie să se retragă de pe prima coroană, după 3-4 ore.

Confruntându-se cu o altă problemă în cazul în care imaginea de fundal specificată prin css sau direct în prin .tpl , apoi prin turnarea de noi conturi de fiecare dată să se joace cu codul, care anulează toate automatizarea)

Nici nu, faci ceva greșit. Nu este necesar să se specifice o adresă URL prin intermediul PHP să-l primească. file_create_url () zaguglit

lansat de câteva ori CZK ușor, imaginile nu sunt șterse.

Funcția wb_clear_form_system_theme_settings_alter (formular $, $ Form_state, $ form_id = NULL)

if (isset (form_id $)) întoarcere;
>

$ Form [ 'alt'] [ 'background_image'] = array (
'#title' => "imagine de fundal"
'#type' => 'managed_file',
'#REQUIRED' => FALSE,
„#description“ => „Imaginea de fundal.“
'#default_value' => theme_get_setting ( 'background_image'),
'#upload_location' => 'public: // bg /',
= '#upload_validators'> array (
= 'File_validate_extensions'> array ( 'gif png jpg jpeg'),
)
);

// Salvați imaginea, în cazul în care a fost dat statutul de „temporar“.
$ Image_custom_index = theme_get_setting ( 'background_image');
if ($ image_custom_index) $ fid = theme_get_setting ( 'background_image');
$ File = file_load ($ FID);
if ($ file-> status == 0) $ file-> status = FILE_STATUS_PERMANENT;
file_save ($ file);
>
>

Fișierul nu este prost pentru coroana este eliminat. El a atârnat eticheta, care nu este în uz, și numai după 3-4 ore, în cazul în care prima coroană a avut loc după data aceasta va fi ștearsă fizic. Și el vede că coroane în mai puțin de 3-4 ore și îndepărtarea lista neagră.

Deși această variantă nu poate fi eliminată, nu numai critic în principiu. Dar dacă îl puteți șterge și pentru a adăuga, dar apoi fără modulul nu se poate face, deoarece este necesar să se prezinte Alter.

Bună ziua. Îmi pare rău. dar eu nu funcționează câmpul de imagine.

aici e dosarul meu temă-settings.php

Funcția artforce_form_system_theme_settings_alter (formular $, $ Form_state, $ form_id = NULL) // Work-în jurul valorii de un bug de bază care afectează teme admin. A se vedea problema # 943212.
if (isset (form_id $)) întoarcere;
>

$ Form [ 'alt'] = array (
'#type' => 'FIELDSET',
'Setări avansate' '#title' =>
'#weight' => 5
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);

// Salvați imaginea, în cazul în care a fost dat statutul de „temporar“.
$ Image_custom_index = theme_get_setting ( 'încărcător');
if ($ image_custom_index) // Ia fișierul de identitate.
$ Fid = theme_get_setting ( 'încărcător');
// navă soluția noastră l-am găsit.
$ File = file_load ($ FID);
// Dacă starea este într-adevăr „timpul“ este.
if ($ Dosar-> Stare == 0) // Setați starea normală.
$ Dosar-> Stare = FILE_STATUS_PERMANENT;
// Salvați fișierul.
file_save ($ file);
>
>
>

este afișat câmpul în setările temă. Aleg o imagine. Salvez. totul este bine.
dar. dacă fac data viitoare mă duc la temele pagina de setări și de a modifica orice alte setări, pentru a scrie-mi
Utilizat în fișier de încărcare nu poate fi utilizat.

Spune-mi, te rog, că acest lucru ar putea fi?