Drupal függyvények, ciklusok

tibi képe

Sziasztok,

ebben a témában kezdtük el a beszélgetést, most itt folytatnám. Sajnos nem jutottam sokra:( Elolvastam és próbáltam alkalmazni az ott leírtakat, de nem tudtam használni.

Javasolt olvasmány : http://api.drupal.org/api/HEAD/group/file

Először is nem biztos, hogy a feltöltött fájlok a ?files\kepek? könyvtárban vannak.
Az adminisztrációs felületen lehetőség van a feltöltött fájlok könyvtárának megváltoztatására.
http://localhost/?q=/admin/settings/file-system
Az ott beállított értéket, ezzel a függvénnyel lehet lekérdezni: http://api.drupal.org/api/HEAD/function/file_directory_path
Az általad használt while ciklust és a kiterjesztés ellenörzést szükségtelenné teszi ez a függvény : http://api.drupal.org/api/HEAD/function/file_scan_directory
Az eredményül kapott tömbön végig lépkedve ne HTML kimenetet készíts, hanem készítsed elő az adatokat ennek a függvénynek :
http://api.drupal.org/api/HEAD/function/theme_table
Már alig várja őket, ebben a formában:
$output = theme('table', és a többi paraméter);

Mint már említve volt, hogy a 'files\kepek' elég bizonytalan, - a publikus és privát fájl elérésről nem is beszélve ? ezért a fájlok URL-jének összeállításában nagy segítséget nyújthat egy kitalálhatatlan nevű függvény. A
http://api.drupal.org/api/HEAD/function/file_create_url
:-)
Jellemzően az < img> és az < a> HTML elemekhez.
De ha már itt tartunk, akkor szeretném felhívni a figyelmet a http://api.drupal.org/api/HEAD/function/l
függvényre.

Ezen a nyomon próbáltam folytatni a fejlesztést, de nem tudom használni az itt leírtakat. Néztem más modulokat, hogy mit hogy csináltak meg. Abból nyertem hasznos tapasztalatokat. Ha kaphatnék egy kis segítséget, hogy hoygan tudom használni a drupal függvényeit. Minként tudok kimenetet generálni stb. Egy linkenk is nagyon örülnék.

Köszönettel T.

pp képe

Azért a kérdést is mellékelhetted volna, nem csak a rá adott választ.

http://api.drupal.org/api/5/file/developer/examples/page_example.module

a hook_menu-nél van a lényeg.
mi nem világos? kédezz!

pp

0
0
tibi képe

A konkrét kérdésem az lenne, hogy hogyan is tudom használni Sweetchack álltal javasolt függvényeket. Azt írta, hogy a while ciklusom helyet a file_scan_directory-t használjam, stb. Nem jövök rá, hogy tudnám használni ezt a lehetőséget. Vagy ha nem ezt használom hanem a while ciklussal oldom meg, akkor hogy generálok kimenetet, vagy akár más ciklusnál? Konkrétan ezek a dolgok érdekelnének.

T.

0
0
pp képe

Lehet én velem van a baj, de nem értem mit akarsz.

Mi köze a while ciklusnak a kimenethez?
Úgy érzem nem tiszták bizonyos fogalmak a fejedben!
Szóval írd le:
Mit szeretnél (pontosan, az "izé bigygerázzon a cucuban" megfogalmazás nem jó!)
Mit próbáltál
Milyen Drupal-t használsz
Milyen előképzettséged van
Szóval minél többet írj magadról és a problémádról.

pp

0
0
tibi képe

Megpróbálom akkor egy kicsit összeszedni a gondolataimat.
Van egy modulom amin éppen dolgozok, ez az első modul amit Drupalra írok, php-vel már 2 éve foglalkozom és magával a php-vel nincs gondom, csak drupal modulba nem tudom integrálni a már meglévő tudásomat. A modulom feladata az, hogy könyvtárakat tudjak vele létrehozni a drupal files könyvtárán belül (szerkesztés, törlés, áthelyezés) és ezek tartalmát meg tudjam jeleníteni egy oldalon. (Ez működik "nyers" php scriptként.)
Egy while ciklusom van arra, hogy kilistázzam a könyvtár tartalmát, linkelve, 4-et egy sorba stb. Erre kaptam azt a választ, hogy használjam a http://api.drupal.org/api/HEAD/function/file_scan_directory függvényt. Nos ezt nem tudom hogy tudnám alkalmazni :( Na meg azt is kaptam válaszként, hogy ne HTML kimenetet készítsek hanem készítsem elő a http://api.drupal.org/api/HEAD/function/theme_table függvénynek az adatokat. A következő formában: $output = theme('table', és a többi paraméter);
Itt elakadtam. Nem értem, hogy használhatom a drupal ezen függvényeit a probléma megoldására. 5.1-es drupalt használok.

Az alap php forrás:

if($kepekk = @opendir("files/kepek/")){
    $kepek = array(".bmp", ".gif", ".jpeg", ".jpg", ".png", "");
    $kepszamolo = 1;
    while($kep = @readdir($kepekk)) {
        if  (in_array(strtolower(strrchr($kep, ".")), $kepek)) {
             if ($thumb_per_sor == 8) {
            echo "  </tr>\n"."  <tr>\n";
                $thumb_per_sor = 0;
            }
            list ($szelesseg, $magassag) = @getimagesize("files/kepek/".$kep);
          echo  "<td>\n"."<a href=\"/files/kepek/".$kep."\">\n"."<img style=\"border: 0px; vertical-align: middle; width: ".ceil(($szelesseg / 10)).";\" src=\"files/kepek/".$kep."\" alt=\"".$kep."\" />\n"."</a>\n"."</td>\n";
            $kepszamolo++;
        }
    }
    @closedir($kepekk);
}

Itt még nem dimanikus a könyvtrákezelés. Az egy későbbi feladat lesz. Egyenlőre egy adott könyvtár tartalmát szeretném (jelen esetben, képek) kilistázni egy oldalon.
Remélem sikerült normálisan elmondani mi is a problémám.

T.

0
0
Sweetchuck képe

Alap értelmezésben a fájl feltöltések a ?files? könyvtárba történnek. Ez a könyvtár Drupal telepítési könyvtárának egy alkönyvtára. De ezt az alapértelmezett beállítást meg lehet változtatni.
Ez azért fontos, mert ha a modulodat egy olyan Drupal rendszerben szeretnéd használni, ahol a fájl feltöltések könyvtára eltér az alapértelmezettől, akkor ott nem fog helyesen működni, mert a PHP kódba írtad bele hogy hol keresse a kép fájlokat.
 if($kepekk = @opendir("files/kepek/")){
Helyette érdemes lekérdezni az aktuális beállítást.
(Ha a végeredményt nézzük, akkor ez a rész egyáltalán nem is kell.)
 if($kepekk = @opendir(file_directory_path() . "/kepek")){

...használjam a file_scan_directory() függvényt. Nos ezt nem tudom hogy tudnám alkalmazni...
Olvasd el a paraméter listát, aztán tesztelésnél nézd meg hogy milyen eredményt ad vissza.

 $files =  file_scan_directory(... paraméterek ...);
echo '< pre>' . print_r($files, true) . '< /pre>'; 
0
0
tibi képe

Mostmár értem, csak arra voltam kíváncsi, hogyan tudom a

if($kepekk = @opendir("files/kepek/")){

helyett az álltalad javasolt megoldást használni

if($kepekk = @opendir(file_directory_path() . "/kepek")){

Azt hittem ezt is kampoként tudom használni :S. Gyakorlatilag akkor az össze drupal függvényt felhasználhatom a modulomon belűl? Más modulok függvényeit is tudom így használni? Köszönöm a hozzászólásodat.
T.

0
0
pp képe

Igen tudod, de figyelj oda, hogy be legyen kapcsolva az adott modul. Az info fájlba sem árt felvenni azokat a modulokat, amiket használsz, így ki se lehet kapcsolni azokat ;)

pp

0
0
Sweetchuck képe

tibi képe

Köszönöm a segítségeket és a hozzászólásokat! Az info fájlom már létezik ;)
Remélhetőleg jó úton haladok. De lehetséges, hogy még lesznek kérdéseim. Addig is további jó munkát mindenkinek.

T.

0
0