Skip to Content

Preluare de continut in site-uri externe

Am o problema simpla si clara: vreau sa am anumite tipuri de continut din platformele Drupal pe care le pastoresc care sa poata fi preluabile sub forma unui simplu cod de embed in alte site-uri externe.

Ca de obicei incep prin a cauta modulul corespunzator nevoilor mele. Plec de la presupunerea optimista ca cineva a avut deja aceasta nevoie inaintea mea si ca si-a satisfacut-o sub forma unui modul care este pus gratuit la dispozitia publicului larg. Laughing out loud

Gasesc cate ceva (pe Drupal gasesti de toate...) insa din diferite motive nu este exact ce imi doresc. Mi se par greoaie si greu de personalizat.

Asa ca ideea evolueaza in alta directie: sa fac o pagina intr-o instalare Drupal care sa contina continul pe care vreau sa il distribui, dar o pagina, evident, fara coloane, CSS, etc. O pagina 'curata', minimalista dar cu continut dinamic, ramasa in cadrul unui drupal.

Trec la urmatorul pas, creez un tip nou de continut, ii spun embed a carui unica ratiune este aceea de a gazdui continutul embed-uibil (scuzati barbarismul Smile ). Fac si un sablon, page-embed.tpl.php (pentru phptemplate eu pe acesta il folosesc pentru theming) insa nu vrea deloc sa mearga. Adica atunci cand am facut testele cu o pagina individuala mergea brici insa ca sablon pentru un input type nu.

Dupa cateva ore de experimente si frustrari o iau mai metodic explorand site-ul drupal.org in cautare de raspunsuri si le gasesc. Mai precis sistemul de theming din Drupal 6 nu recunoaste in mod automat un template pentru un nou tip de continut ci trebuie declarat explicit in fisierul template.php din folderul cu tema curenta. Daca template.php nu exista trebuie doar creat un fisier gol si pus in el declaratia respectiva, trebuie sa fie chiar prima (sau singura) functie si care la mine suna cam asa:

function numele_temei_mele_preprocess_page(&$vars, $hook) {

global $theme;

if ($vars['node']->type == 'embed') {
$vars['template_files'][] = 'page-embed';
}
if ($vars['node']->type == 'premium') {
$vars['template_files'][] = 'page-premium';
}
}

(am facut si un tip de continut "premium", un fel de embed mai generos Smile, de asta sunt doua)

In sablonul page-embed.tpl.php in varianta minimalista am pus doar atat <? print $content ?> si continutul apare nud, ca fetele din Playboy.

Pentru ca 'nuditatea' absoluta nu e intotdeauna cea mai buna solutie in final am ales sa integrez <? print $content ?> intr-o pagina html corecta si i-am adaugat un titlu, un pic de css, ca la carte. Notepad ruleaza Laughing out loud

Acum, in momentul in care creez un fisier de tipul embed, indiferent ce pun in el, text static sau un cod php acel fisier poate fi preluat print-un 'iframe' in orice site extern, fara dureri si complicatii. Iar 'codul' acestuia este, evident, chiar adresa paginii respective. Laughing out loud

La final de proiect, ca sa sarbatoresc putin victoria am mai facut o pagina continand toate embed-urile pe care le-am facut si am usurat un pic munca celor care le vor prelua printr-un javascript onClick="select() care selecteaza automat codul de embed:

O problema nostima si neprevazuta cu care m-am confruntat destul de repede a fost aceea ca odata creat un fisier din noul tip, embed era foarte dificil sa il regasesc si sa il editez/sterg la nevoie, neafisand in pagina niciun fel de controale. Asa ca, in spiritul spontaneitatii nationale am facut o mica regula ca in url-ul fisierului sa se regaseasca ID-ul paginii, in exemplul de mai sus "embed/8490/sondajul-curent".

Astfel, daca imi doresc sa il editez/sterg e suficient sa scriu 'node/8490/edit' sau 'node/8490/delete' (logat ca admin, evident, nu va chinuiti altfel Smile ).

Asa ca, daca vreti sa permiteti altor site-uri externe sa preia continut de pe site-ul vostru Drupal sper sa va foloseasca informatiile de mai sus, mie mi-a luat doua zile sa le pun cap la cap.

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • Textual smileys will be replaced with graphical ones.

More information about formatting options

CAPTCHA
Demonstreaza ca esti barbat si nu robot si raspunde la intrebarea de mai jos. :)
Fill in the blank


Smokers | articole