drupal gyors tippek

Drupal bejelentkezés több aldomainen.

Kis kihagyás után folytatnám egy újabb villám Drupal tippel:

Tegyük fel, hogy készítünk egy új oldalt, legyen: example.com. Ha megfelelőek a web és dns szerver beállítások, akkor új oldalunk elérhető lesz mind a www előtaggal, mind anélkül, tehát ezeken a címeken: http://example.com és http://www.example.com. Ez eddig jó hír, de ha meglátogatjuk az oldalt az egyik formában, bejelentkezünk, majd átváltunk a másik verzióra, ott bizony nem leszünk belépve. Ez viszont zavaró, mert a később ránk mutató külső linkek valószínüleg mindkét verziót használni fogják. A felhasználók akik meg ezekről a külső oldalakról jönnek, nem fogják érteni, hogy miért vannak néha belépve, néha meg nem.

Belepillantva a .htaccess fájlba, azonnal láthatjuk a megoldást: a látogatókat át kell irányítani, úgy hogy mindig csak az egyik verziót használják. Ez mindössz két sor roppant egyszerű átírást jelenti a .htaccess fájlban, a művelethez pedig bőséges információ található megjegyzés formájában, erre nem is térnék ki.

De van egy másik lehetőség is, amelyet a settings.php rejt. Ebben a fájlban van elrejtve a $cookie_domain beállítás, amelyet ha nem állítunk be a drupal automatikusan kitalál. És pont itt jön be a gond: néha example.com -nak néha www.example.com-nak fogja kitalálni. Viszont ha mi fixen beállítjuk így:

<?php
$cookie_domain
= '.example.com';
?>

akkor mindkét esetre érvényes sütit állít elő majd a kód. A lényeg a pont az emaple.com előtt, amely annyit jelent hogy minden .example.com végű un. hostra érvényes a süti.

Egy átlagos weboldalnál ez a módszer nem jobb a .htaccess-es megoldásnál. De ha például egy oldalcsoportot készítünk, ahol különböző aldomaineken (a.exmaple.com; b.example.com, ...) különböző drupal telepítések szolgálnak ki más-más tartalmat, de közös felhasználó adatbázissal, akkor ezzel a megoldással már meg is valósítottuk az un. Single Sign On-t, amikoris egyszer kell belépni, és a felhasználó minden aloldalon belépve marad.

Most látom, nem is lett ez annyira rövid tipp, de remélem hasznos lesz néhány olvasónak.

99designs.com - gyors és olcsó grafikai munkák?

99designs.com logo Mi, Drupal fejlesztők, különösen kedvező helyzetben vagyunk amikor egy új oldalt kell a semmiből felépíteni: temérdek modul és smink közül válogathatunk, és a modulos-kattintgatós módszerrel gyorsan eljuthatunk a fejlesztés egy olyan fázisába, amikor az oldal már majdnem kész.

De ahhoz, hogy újdonsült oldalunk megállja helyét, egyedi arculatra lesz szüksége. Vagy magunk tákoljuk össze a kétes minőségű grafikai elemeket, vagy megbízunk egy erre specializálódott céget, többnyire méregdrágán.

Legalábbis eddig ez volt a helyzet, viszont most van egy új lehetőségünk is: A Collegemogul.com legutóbbi bejegyzésében találtam rá a 99designs.com szolgáltatásra.

Szerintem mindenki látott már olyan versenykiírást, amikor egy cég új arculatához logó pályázatot hírdet: sok-sok pályázó beküldi a terveket, a legjobbat kiválasztják és készítőjét így vagy úgy megjutalmazzák.

A fenti szolgáltató ilyen versenyek kiírásához ad egy központi felületet. Megszabhatjuk, hogy mit szeretnénk (logó, webdesign, teljes arculat, stb...), és hogy megfelelő pályázat esetén mennyit vagyunk hajlandóak fizetni az elkészült műért. Nem köteletző győztest hírdetni, és kifizetni a honoráriumot, de ha előre garantáljuk, hogy mindenképpen kifizetünk valakit, akkor sokkal több pályázatot fogunk kapni és talán jobb minőségüeket is.

A beküldött pályázatokat a kiíró szövegesen és pontozással véleményezheti, ezzel visszajelzést adva a grafikusoknak, akik így javíthatnak vagy újragondolhatják terveiket.

Elsőre szkeptikus voltam az ötlettel kapcsolatban. Végignéztem néhány pályázatot és természetesen láttam nagyon sok kétes minőségű tervet. De szinte mindig volt két-három kiváló minőségű alkotás, amelyet bátran használhat a kiíró, nem lesz oka szégyenkezni.

Személyesen még nem próbáltam ki a céget, de ha valaki vett már igénybe hasonló szolgáltatást, szivesen olvasnék a tapasztalatairól.

Batch API: Sok feladat elvégzése Drupalban AJAX-szal.

Egy újabb Drupal gyrostipp következik.

Amikor bekapcsolunk egy új nyelvet, vagy verziófrissítés utána, amikor meglátogatjuk az update.php-t, azt láthatjuk, hogy megjelenik egy teljes képernyős AJAX-os állapotjelző sáv, un. „progress bar”. Azért hasznos ez az AJAX-os megoldás, mert ha a feladatok elvégzése 30 másodpercnél tovább tartana, a php szkript futása megszakadhat, és a feladatok elvégzése félúton megállna. Így viszont a Drupal gondoskodik, hogy néhány másodperc futás utána, a háttérben, egy új http lekérés indul, ezzel kiküszöbölve a 30 másodperces kolátot.

Most mogmutatom, hogyan tudunk mi is ilyet készíteni. Drupal-al ez is nagyon egyszerű:

A funkció lelke a Drupal magban a batch.inc-ben van elrejtve, és nekünk mindössze egyetlen függvényt, a batch_set()-et, és annak paraméterezését kell ismernünk. Ez a függvény egyetlen paramétert vár, egy tömböt. A tömbben meg lehet adni a feladatlista nevét, az elvégzendő feladatokat, amelyek php callback függvények és paramétereik, illetve a befejezéskor meghívandó callback függvény.

A példakód ilyen egyszerű:

<?php
  $batch
= array(
   
'title' => t('Helló batch feladatok'),  // a feladatlista címe
   
'operations' => array(),                // feladatok tömbje
   
'finished' => 'hellobatch_finished',    // befejezéskor meghívandó
 
);
 
  for (
$i=0; $i<$form_state['values']['jobs']; $i++) {
   
$operation = array(
     
'hellobatch_job',   // egy feladat callback fg.
     
array($i),          // és paraméterei
   
);
   
$batch['operations'][] = $operation;
  }
 
batch_set($batch);
?>

Ha mindezt egy form_submit függvényben hívjuk meg, nem is kell mást tennünk, azonnal elindul a feladatok elvégzése. Ha form submit-on kívűl akarjuk használni, akkor még a batch_process() függvényre lesz szükségünk.

További infó angulul az API oldalon.

A példamodul kódját csatolttam, próbáljátok ki!

Tömeges node műveletek

Összegyűlt pár apró ötletem, ami a mindennapi Drupal használat vagy programozás során jól jöhet. Úgy döntöttem indítok egy drupal gyors tippek sorozatot, ahol ezeket leírhatom. Ennek első eleme ez a post.

Véletlenül bukkantam a hook_node_operations hook-ba, amivel kiegészíthetjük az admin/content/node oldalon azt a legördülő listát amivel egyszerre több node-on végre tudunk hajtani egy műveletet.

Hasznos lehet például saját node fejlesztésénél, ha az a node típus igényel ilyen funkciót. De már meglévő node típusokra is implementálhatjuk, ha az adott oldalon egy műveletet gyakran végeznek el a node-okon. El tudok képzelni olyan szituációt, ahol például jól jönne a hozzászólások tiltása tömeges művelet.

A hook_node_operations használata egyszerű, felesleges itt ismételni azt ami egyértelműen le van írva a fenti api.drupal.org-os linken.

Ha van hasonló tippetek várom a hozzászólásokban.

Feliratkozás RSS - drupal gyors tippek csatornájára