Letöltés modul

moha képe

Hello!

Ismét a segítségeteket szeretném kérni. Egy letöltő oldalt kellene csinálnom Drupalban.
Nem kell bonyolult dologra gondolni, annyi lenne a lényeg, hogy:

- Egy node-ra fel tudjak pakolni 8-10 file-t (dokumentumok, videók), amit le lehet tölteni
- Tudjak mind mellé írni egy rövid szöveget, hogy mi is az az adott file
- Lehessen hozzá tenni egy ikont

Illetve az alábbi adatokat jelezze ki minden file-hoz:
- File név
- Típus
- Méret
- Feltöltés dátuma

Sajnos a sima upload eléggé szűkszavú. Mivel egy meglévő natív PHP oldalt dolgozok át Drupalra, szeretném ahhoz hasonlóan megcsinálni a file letöltést is, de a sima csatolt fájlok nem emelkednek ki, ezért kellenének a fenti elemek.

Mit javasoltok hozzá?

Előre is köszi,
Moha

drifter képe

Filefield? Alapból az is "szűkszavú", de tartozik hozzá leírás, és sminkből előhozhatod a föltöltés dátumát is, ikont is stb.

0
0
moha képe

Esetleg tudsz ehhez linkelni egy tutorialt vagy hasonlót? Mármint: feltettem a Filefield modult, működik is, de ez is csak bepakolja egymás alá a fájlokat. Gondolom, sminkből lehetne rendezgetni, de nem tudom, hogyan.

0
0
drifter képe

Leszeded a devel modult, bekapcsolod. Ekkor node megtekintésekor látni fogod a Devel fült, azon belül Dev render az érdekes. Ott látod majd az összes változót amit el tudsz érni, amit használni tudsz a template file-ban.

Csinálsz egy node-TIPUS.tpl.php-t a sminkedbe (sima node.tpl.php is legyen ott), és bele tudod irkálni a filefield tartalmát tetszés szerint, pl:

 print $field_feltoltott[0]['timestamp'] - beküldési idő - stb., így eléred az összes metaadatot amire szükséged van.

0
0
aboros képe

azért van a csodálatos sminkréteg és benne a sok csodálatos sminkfüggvény, hogy használjuk azokat. addig sztár, hogy hozzáadsz a tartalom típusodhoz egy filefield típusú mezőt. korlátlan értékűre állítod, engeded, hogy meg lehessen adni 'description' -t is az egyes elemekhez.

aztán fogod a sminked template.php -ját (ha nincs benne ilyen létrehozod) és szépen beleraksz valami ilyesmit. (sminkedneve_preprocess_node néven kell megvalósítanod. az én sminkemet playground -nak hívják, a példában a filefield mező neve myfield (tehát field_myfield))

és akkor így:

function playground_preprocess_node(&$vars) {
 
  # csak akkor lepunk akszioba, ha van a mezoben legalabb egy file

  if (isset($vars['node']->field_myfield[0]['filepath'])) {
    # kenyelmi okokbol egy valtozoba rakjuk a mezot
    $files = $vars['node']->field_myfield;
 
    # ezeket az oszlopokat akarjuk, ez a tablazat 'fejlece' lesz
    $header = array(t('Description'), t('Filename'), t('Size'), t('Date'));
    $rows = array();
 
    # szepen vegiglepkedunka a tombon es feltoltjuk a $rows -t a kello ertekekkel 
    foreach ($files as $file) {
      $rows[] = array($file['view'], $file['filename'], intval($file['filesize']/1024) . ' KB', format_date($file['timestamp'], 'small'));
    }
 
    # a $header es a $rows alkotta tablazatot a node content vegere varrjuk
    $vars['content'] .= theme('table', $header, $rows);
  }
}

a meződet a tartalom típusod szerkesztésénél a display fields fülön állítsad 'exclude' -ra, hogy ne kettőződjön a megjelenítés.
ha valami nem világos miért pont úgy, kérdezz bátran. az elv ez, innen a fantáziádra bízom, hogy finomhangoljad, lehet variálni a végtelenségig.

0
0

-
clear: both;