Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Files sortieren

Eingetragen von headkit (514)
am 13.12.2007 - 14:37 Uhr in
  • Themes & Theming
  • Drupal 5.x oder neuer

Hi Leute!

Ich würde gerne per Upload verschiedene Dateien an eine Node ranhängen und diese dann in eigenen Blocks jeweils nach Dateityp sortiert auflisten.
Das Auslagern der Dateianhänge in einen Block hab ich schon per Views und Block-Skript gelöst

<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
 
$node = node_load(arg(1));
  print
theme('upload_attachments', $node->files, true);
}
?>

Aber wie müsste ich das Skript erweitern, um nur bestimmte Dateitypen in der Auflistung zu erlauben?

Danke!

‹ wo ist die search_box Hilfe nach Template wechsel kein Menü mehr ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

ist das zu schwierig?

Eingetragen von headkit (514)
am 16.12.2007 - 15:57 Uhr

ist das zu schwierig?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Was ist das Problem? Mache

Eingetragen von quiptime (4972)
am 16.12.2007 - 16:19 Uhr

Was ist das Problem?

Mache mal ein print $node->files bzw. print_r($node->files). Falls Du damit nichts anfangen kannst poste die Ausgabe print $node->files bzw. print_r($node->files).

Hat es klick gemacht?

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

sowas?

Eingetragen von headkit (514)
am 17.12.2007 - 14:40 Uhr

sowas?

<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
   
$node = node_load(arg(1));
   
$Node_Files = $node->files;
    foreach (
$Node_Files as $filename){
        if(
array_key_exists(".mp3", $filename){
            echo
'mp3';
        }
    }
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

bin fast da...

Eingetragen von headkit (514)
am 17.12.2007 - 16:20 Uhr

so krieg ich ne liste der dateianhänge, allerdings nicht verlinkt usw.

<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
   
$node = node_load(arg(1));
   
$Node_Files = $node->files;
    foreach (
$Node_Files as $Subarray){
        foreach (
$Subarray as $key => $value){
            if (
$key == "filename"){
                    echo
$value."<br>";
                   
#print theme('upload_attachments', $node->files, true);
           
}
        }
    }
}
?>

wie kann ich hiermit jetzt bestimmte filetypen ausschließen und dann mit der funktion print_theme ausgeben?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Indem du vor der Übergabe

Eingetragen von Alexander Langer (3416)
am 17.12.2007 - 17:03 Uhr

Indem du vor der Übergabe an die Theming-Funktion die Dateinamen auf die enthaltenen Dateiendungen prüfst und nur die gewünschten Dateien themen und den Rest unter den Tisch fallen lässt.

--
"Look, Ma, I'm dead!"
Cell, Stephen King

  • Anmelden oder Registrieren um Kommentare zu schreiben

schon klar. hab mich

Eingetragen von headkit (514)
am 19.12.2007 - 13:12 Uhr

schon klar. hab mich missverständlich ausgedrückt. nochmal:
beim aufruf

<?php
 
print theme('upload_attachments', $node->files, true);
?>

übergebe ich ja das subarray "$node->files", das in bestimmmter art formatiert ist und von der funktion print theme verarbeitet werden kann. in dieser formatierung müsste ich dann ja wohl auch die aussortierten files in einem gleichartigen array übergeben, z. b. als $files_sorted.

nehmen wir an, ich durchsuche "$Node_Files = $node->files;" nach anhängen mit der endung ".zip", dann könnte ich alle gefundenen arrays in ein eigens hierfür erstelltes array "$Found_Files = array();" schieben und dieses dann an die funktion übergeben?

<?php
 
print theme('upload_attachments', $Found_Files, true);
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

ich dachte so <?phpif

Eingetragen von headkit (514)
am 19.12.2007 - 13:36 Uhr

ich dachte so

<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
   
$node = node_load(arg(1));
   
$Node_Files = $node->files;
   
$Found_Files = array();

    foreach (
$Node_Files as $Subarray){
        foreach (
$Subarray as $key => $value){
            if (
$key == "filename"){
                if (
$searchkey = array_search(".mp3", $Subarray)){
                   
array_push($Found_Files, $Subarray);
                }
            }
        }
    }
   
   
#print theme('upload_attachments', $Found_Files, true);
}
?>

bekomme aber immer ne Fehlermeldung

warning: array_search() [function.array-search]: Wrong datatype for second argument in second argument in

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nimm die den Code von

Eingetragen von quiptime (4972)
am 19.12.2007 - 14:30 Uhr

Nimm die den Code von theme_upload_attachments() als Vorbild

<?php
function theme_upload_attachments($files) {
 
$header = array(t('Attachment'), t('Size'));
 
$rows = array();
  foreach (
$files as $file) {
   
$file = (object)$file;
    if (
$file->list && !$file->remove) {
     
// Generate valid URL for both existing attachments and preview of new attachments (these have 'upload' in fid)
     
$href = file_create_url((strpos($file->fid, 'upload') === FALSE ? $file->filepath : file_create_filename($file->filename, file_create_path())));
     
$text = $file->description ? $file->description : $file->filename;
     
$rows[] = array(l($text, $href), format_size($file->filesize));
    }
  }
  if (
count($rows)) {
    return
theme('table', $header, $rows, array('id' => 'attachments'));
  }
}
?>

fuer Deinen eigene Code.

Du kannst $node->files NICHT ohne weiteres in eine Schleife packen. $node->files ist KEIN Array sondern ein Objekt.
Um es trotzdem tun zu koennen beachte den Code voran mit

<?php
foreach ($files as $file) {
 
$file = (object)$file;
?>

 

Unabhangig vom bereits existierenden Problem mit dem Objekt. Du kannst mit array_push ein weiters Problem bekommen. Und zwar dann wenn nur 1 Datei hochgeladen wurde. Dann bringt array_push einen PHP Error. Alternativ ist array_pop besser.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

dann könnte ich diese

Eingetragen von headkit (514)
am 19.12.2007 - 16:03 Uhr

dann könnte ich diese funktion doch eigentlich auch gleich in die template.php packen und etwas umschreiben, so dass z.b. alle files ausser files der endung ".mp3" gelistet werden, oder?
dann kann ich mir das sortieren im block auch sparen.
oder?

ich habe nun folgendes im template.php:

<?php
function garland_upload_attachments($files, $in_block = false) {
  if (!
$in_block) {
    return;
  }
 
$header = array(t('Attachment'), t('Size'));
 
$rows = array();
  foreach (
$files as $file) {
    if (
$file->list) {
       
$File_xplode = explode(".", $file->filename);
       
$File_Type = $File_xplode[1];
       
        if (
$File_Type != "mp3") {
         
$href = $file->fid ? file_create_url($file->filepath) : url(file_create_filename($file->filename, file_create_path()));
         
$text = $file->description ? $file->description : $file->filename;
         
$rows[] = array(l($text, $href), format_size($file->filesize));
          }
    }
  }
  if (
count($rows)) {
    return
theme('table', $header, $rows, array('id' => 'attachments'));
  }
}
?>

und das funktioniert sogar. siehst du da irgendwelche möglichen probleme (bis auf case sesitivität)?
danke!

  • Anmelden oder Registrieren um Kommentare zu schreiben

So gedacht

Eingetragen von tumblingmug (872)
am 19.12.2007 - 17:52 Uhr
musikkuss schrieb

dann könnte ich diese funktion doch eigentlich auch gleich in die template.php packen und etwas umschreiben

Genau so ist das gedacht mit den Theme-Funktionen.

musikkuss schrieb

und das funktioniert sogar.

So soll es sein :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 17 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Tagen
  • In der entsprechenden View
    vor 3 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Tagen
  • gelöst
    vor 6 Wochen 14 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 27 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association