Hochgeladenen Dateien in neuem Fenster öffnen
Eingetragen von bauernfaenger (14)
am 08.03.2009 - 20:05 Uhr in
am 08.03.2009 - 20:05 Uhr in
Hallo Zusammen,
durch
function phptemplate_upload_attachments($files) {
$header = array(t('Attachment'), t('Size'));
$rows = array();
foreach ($files as $file) {
if ($file->list) {
$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, array('target' => '_blank')), format_size($file->filesize));
}
}
if (count($rows)) {
return theme('table', $header, $rows, array('id' => 'attachments'));
}
}
in der Datei "template.php" im Themeordner des aktiven Themes wird der Anhang, welchen man an einen Node hängt (über "Dateianhänge" -> "Neue Datei anfügen:") in einem neuen Fenster geöffnet. Nun möchte ich auch Anänge, welche über ein CCK Feld hochgeladen werden in einem neuen Fenster öffnen und die o.g. Funktion erweitern.
Der betreffende Code ist folgender:
<div class="field-items">
<?php foreach ((array)
$node->field_produkt_dateien as $item) { ?>
<div class="field-item"><?php print $item['view'] ?></div>
Wie mach ich das am Besten? Vielen Dank im Vorfeld für die Hilfe!
- Anmelden oder Registrieren um Kommentare zu schreiben
print_r
am 08.03.2009 - 22:58 Uhr
Moin!
Mit
<?php
drupal_set_message('<pre>'. print_r($item, 1) .'</pre>');
?>
kannst Du Dir ausgeben lassen, welche Daten so alles in
$item
stecken. Auf dieser Basis und unter Verwendung der Funktionl()
sollte es ein Leichtes sein, die entsprechenden Links Deinen Wünschen entsprechend auszugeben.hth,
Stefan
PS: der Theme-Developer des devel-Moduls und/oder google hätten schneller zur Lösung geführt, als das Formulieren der Frage.
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hi Stefan, zunächst vielen
am 10.03.2009 - 21:26 Uhr
Hi Stefan,
zunächst vielen Dank für die Antwort!
Den Theme-Developer des Develmoduls gibt es leider nicht für D5 :-\
Wenn ich den Code-Schnipsel in template.php oder in den Content,welcher so ein CCK-Form hat einfüge, ist leider kein Inhalt im
Welche Daten werden dann in der $item erwartet? Werte die in im Tab "Dev load" oder "Dev render" stehen sind m.M. nach nicht relevant, oder?
drupal_set_message
am 10.03.2009 - 23:08 Uhr
Moin!
<?php
<div class="field-items">
<?php foreach ((array)$node->field_produkt_dateien as $item) { ?>
<?php drupal_set_message('<pre>'. print_r($item, 1) .'</pre>'); ?>
<div class="field-item"><?php print $item['view'] ?></div>
<?php } ?>
</div>
?>
So meinte ich das. Dann werden Dir die Daten jedes Dateiobjektes ausgegeben.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hi Stefan, Drupal antwortet
am 12.03.2009 - 21:59 Uhr
Hi Stefan,
Drupal antwortet leider nur mit
Parse error: syntax error, unexpected '<' in /www/htdocs/XXXXX/XXXXX/includes/common.inc(1464) : eval()'d code on line 2
Wenn ich den Code in Content des Inhaltstypen eingebe... Woran könnte es liegen? :-x
php
am 12.03.2009 - 22:31 Uhr
Ok, dann formulieren wir das mal schnell um:
<?php
<div class="field-items">
<?php
foreach ((array)$node->field_produkt_dateien as $item) {
drupal_set_message('<pre>'. print_r($item, 1) .'</pre>');
print '<div class="field-item">'. print $item['view'] .'</div>';
}
?>
</div>
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hi Stefan, traue mich schon
am 13.03.2009 - 12:32 Uhr
Hi Stefan,
traue mich schon fast nicht mehr zu antworten :-x Leider bekomme ich wieder ne Fehlermeldung
Parse error: syntax error, unexpected '<' in /www/htdocs/XXXXX/XXXXXX/includes/common.inc(1464) : eval()'d code on line 2
Habe mal den gesamten Inhaltstypen exportiert:
$content[type] = array (
'name' => 'Produkte',
'type' => 'produkte',
'description' => 'Neue Produkte erstellen',
'title_label' => 'Produktbezeichnung',
'body_label' => '',
'min_word_count' => '0',
'help' => '',
'node_options' =>
array (
'status' => true,
'promote' => false,
'sticky' => false,
'revision' => false,
),
'upload' => '1',
'image_attach' => '0',
'image_attach_size_teaser' => '_original',
'image_attach_weight_teaser' => '0',
'image_attach_size_body' => '_original',
'image_attach_weight_body' => '0',
'old_type' => 'produkte',
'orig_type' => '',
'module' => 'node',
'custom' => '1',
'modified' => '1',
'locked' => '0',
);
$content[groups] = array (
0 =>
array (
'label' => 'Übersicht',
'settings' =>
array (
'form' =>
array (
'style' => 'fieldset',
'description' => '',
),
'display' =>
array (
'description' => '',
'teaser' => 'no_style',
'full' => 'no_style',
'label' => 'above',
),
),
'weight' => '1',
'group_name' => 'group_bersicht',
),
1 =>
array (
'label' => 'Unterseite',
'settings' =>
array (
'form' =>
array (
'style' => 'fieldset',
'description' => '',
),
'display' =>
array (
'description' => '',
'teaser' => 'no_style',
'full' => 'no_style',
'label' => 'above',
),
),
'weight' => '2',
'group_name' => 'group_unterseite',
),
);
$content[fields] = array (
0 =>
array (
'widget_type' => 'image',
'label' => 'Produktbild',
'weight' => '1',
'max_resolution' => '350x350',
'max_filesize' => 0,
'max_number_images' => 0,
'image_path' => 'produkte/produktbilder',
'file_extensions' => 'jpg jpeg png gif',
'custom_alt' => 1,
'custom_title' => 0,
'description' => '',
'group' => 'group_unterseite',
'required' => 1,
'multiple' => 0,
'use_default_image' => 0,
'default_image_upload' => '',
'default_image' => NULL,
'field_name' => 'field_produkt_produktbild',
'field_type' => 'image',
'module' => 'imagefield',
'display_settings' =>
array (
'label' =>
array (
'format' => 'hidden',
),
'teaser' =>
array (
'format' => 'hidden',
),
'full' =>
array (
'format' => 'imagefield_default',
),
),
),
1 =>
array (
'widget_type' => 'image',
'label' => 'Vorschaubild',
'weight' => '1',
'max_resolution' => '100x100',
'max_filesize' => 0,
'max_number_images' => 0,
'image_path' => 'produkte/vorschaubilder',
'file_extensions' => 'jpg jpeg png gif',
'custom_alt' => 1,
'custom_title' => 0,
'description' => '',
'group' => 'group_bersicht',
'required' => 1,
'multiple' => 0,
'use_default_image' => 0,
'default_image_upload' => '',
'default_image' => NULL,
'field_name' => 'field_produkt_vorschaubild',
'field_type' => 'image',
'module' => 'imagefield',
'display_settings' =>
array (
'label' =>
array (
'format' => 'hidden',
),
'teaser' =>
array (
'format' => 'imagefield_default',
),
'full' =>
array (
'format' => 'hidden',
),
),
),
2 =>
array (
'widget_type' => 'text',
'label' => 'Produkt Beschreibung',
'weight' => '2',
'rows' => '15',
'description' => '',
'default_value' =>
array (
0 =>
array (
'value' => '',
),
),
'default_value_php' => '',
'default_value_widget' =>
array (
'field_produkt_beschreibung' =>
array (
0 =>
array (
'value' => '',
),
),
),
'field_produkt_beschreibung' =>
array (
0 =>
array (
'format' => 1,
),
),
'group' => 'group_unterseite',
'required' => 1,
'multiple' => 0,
'text_processing' => '1',
'max_length' => '',
'allowed_values' => '',
'allowed_values_php' => '',
'field_name' => 'field_produkt_beschreibung',
'field_type' => 'text',
'module' => 'text',
'display_settings' =>
array (
'label' =>
array (
'format' => 'hidden',
),
'teaser' =>
array (
'format' => 'hidden',
),
'full' =>
array (
'format' => 'default',
),
),
),
3 =>
array (
'widget_type' => 'text',
'label' => 'Vorschautext',
'weight' => '2',
'rows' => '8',
'description' => 'Das ist der Vorschautext in der Produktübersicht.',
'default_value' =>
array (
0 =>
array (
'value' => '',
),
),
'default_value_php' => '',
'default_value_widget' =>
array (
'field_produkt_vorschautext' =>
array (
0 =>
array (
'value' => '',
),
),
),
'group' => 'group_bersicht',
'required' => 1,
'multiple' => 0,
'text_processing' => '0',
'max_length' => '145',
'allowed_values' => '',
'allowed_values_php' => '',
'field_name' => 'field_produkt_vorschautext',
'field_type' => 'text',
'module' => 'text',
'display_settings' =>
array (
'label' =>
array (
'format' => 'hidden',
),
'teaser' =>
array (
'format' => 'default',
),
'full' =>
array (
'format' => 'hidden',
),
),
),
4 =>
array (
'widget_type' => 'text',
'label' => 'Technische Informationen',
'weight' => '3',
'rows' => '15',
'description' => '',
'default_value' =>
array (
0 =>
array (
'value' => '',
),
),
'default_value_php' => '',
'default_value_widget' =>
array (
'field_produkt_techinfos' =>
array (
0 =>
array (
'value' => '',
),
),
),
'field_produkt_techinfos' =>
array (
0 =>
array (
'format' => 1,
),
),
'group' => 'group_unterseite',
'required' => 0,
'multiple' => 0,
'text_processing' => '1',
'max_length' => '',
'allowed_values' => '',
'allowed_values_php' => '',
'field_name' => 'field_produkt_techinfos',
'field_type' => 'text',
'module' => 'text',
'display_settings' =>
array (
'label' =>
array (
'format' => 'above',
),
'teaser' =>
array (
'format' => 'hidden',
),
'full' =>
array (
'format' => 'default',
),
),
),
5 =>
array (
'widget_type' => 'image',
'label' => 'Weitere Produktbilder',
'weight' => '4',
'max_resolution' => 0,
'max_filesize' => 0,
'max_number_images' => '6',
'image_path' => 'produkte/weiterebilder',
'file_extensions' => 'jpg jpeg png gif',
'custom_alt' => 1,
'custom_title' => 1,
'description' => '',
'group' => 'group_unterseite',
'required' => 0,
'multiple' => 1,
'use_default_image' => 0,
'default_image_upload' => '',
'default_image' => NULL,
'field_name' => 'field_produkt_weiterebilder',
'field_type' => 'image',
'module' => 'imagefield',
'display_settings' =>
array (
'label' =>
array (
'format' => 'hidden',
),
'teaser' =>
array (
'format' => 'hidden',
),
'full' =>
array (
'format' => 'thickbox][weitereproduktbilder_vorschau',
),
),
),
6 =>
array (
'widget_type' => 'file',
'label' => 'Dateien',
'weight' => '5',
'file_extensions' => 'pdf mov wmv ',
'file_path' => 'produkte/dateien',
'description' => '',
'group' => 'group_unterseite',
'required' => 0,
'multiple' => 1,
'force_list' => 1,
'field_name' => 'field_produkt_dateien',
'field_type' => 'file',
'module' => 'filefield',
'display_settings' =>
array (
'label' =>
array (
'format' => 'hidden',
),
'teaser' =>
array (
'format' => 'hidden',
),
'full' =>
array (
'format' => 'default',
),
),
),
);
php
am 13.03.2009 - 14:10 Uhr
Ah, ähm. die erste Zeile meines Codes ("<?php") muss weg.
Probier das mal.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hallo Stefan, so jetzt kommt
am 13.03.2009 - 14:54 Uhr
Hallo Stefan,
so jetzt kommt zumindest keine Fehlermeldung mehr, allerdings ist der Div bei der gespeicherten Site leer (
) Das Eingabeformat ist natürlich "PHP-Code".
und weiter gehts...
am 13.03.2009 - 15:05 Uhr
Ok, das ist doch schonmal ein Fortschritt :-).
<div class="field-items">
<?php
drupal_set_message('<pre>'. print_r($node, 1) .'</pre>');
foreach ((array)$node->field_produkt_dateien as $item) {
print '<div class="field-item">'. print $item['view'] .'</div>';
}
?>
</div>
Jetzt siehst Du, ob das Feld wirklich so heisst, und ob da nicht etwa noch
[0]
dahinter muss.hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hi Stefan, zunächst hier
am 06.04.2009 - 22:05 Uhr
Hi Stefan,
zunächst hier der Inhalt, den Devel in dem Zusammenhang ausgibt:
field_produkt_dateien
Array
(
[0] => Array
(
[fid] => 296
[description] => xxx.pdf
[list] => 1
[nid] => 92
[filename] => xxx.pdf
[filepath] => files/produkte/dateien/xxx.pdf
[filemime] => application/pdf
[filesize] => 849990
)
)
Hier die nun leicht erweiterte (es wurde hinzugefügt, dass nur eingeloggte User downloaden können) Anpassung von Attachments
<?php
/**
* Anpassung der Attachments
*/
function phptemplate_upload_attachments($files) {
$header = array(t('Attachment'), t('Size'));
$rows = array();
foreach ($files as $file) {
if ($file->list) {
global $user;
if ($user->uid) { // logged in users have uid > 0
$href = check_url(($file->fid ? file_create_url($file->filepath) : url(file_create_filename($file->filename, file_create_path()))));
$text = check_plain($file->description ? $file->description : $file->filename);
$rows[] = array(l($text, $href, array('target' => '_blank')), format_size($file->filesize));
if (count($rows)) {
return theme('table', $header, $rows, array('id' => 'attachments'));
}
}
// for anonymous users only show the name, not the link
$text = check_plain($file->description ? $file->description : $file->filename);
$rows[] = array($text, format_size($file->filesize));
if (count($rows)) {
return theme('table', $header, $rows, array('id' => 'attachments'))."<p><em>Sie müssen Sich <a href=\"/user\">einloggen/registrieren</a> um den Anhang betrachten zu können.</em></p>";
}
}
}
}
?>
Wie müsste der fertige Code lauten? :-x Meine Versuche schlugen leider alle fehl :\
Die Funktion muss wahrscheinlich um die Variable $field_produkt_dateien[0] erweitert werden, bei foreach ist mir das allerdings ein Rätsel...
Die Frage könnte glatt von
am 11.04.2009 - 20:36 Uhr
Die Frage könnte glatt von jemand anders stammen ;)
<?php
/**
* Anpassung der Attachments
*/
function phptemplate_upload_attachments($files) {
$header = array(t('Attachment'), t('Size'));
$rows = array();
foreach ($files as $file) {
if ($file->list) {
global $user;
if ($user->uid) { // logged in users have uid > 0
$href = check_url(($file->fid ? file_create_url($file->filepath) : url(file_create_filename($file->filename, file_create_path()))));
$text = check_plain($file->description ? $file->description : $file->filename);
$rows[] = array(l($text, $href, array('attributes' => array('target' => '_blank'))), format_size($file->filesize));
if (count($rows)) {
return theme('table', $header, $rows, array('id' => 'attachments'));
}
}
// for anonymous users only show the name, not the link
$text = check_plain($file->description ? $file->description : $file->filename);
$rows[] = array($text, format_size($file->filesize));
if (count($rows)) {
return theme('table', $header, $rows, array('id' => 'attachments'))."<p><em>Sie müssen Sich <a href=\"/user\">einloggen/registrieren</a> um den Anhang betrachten zu können.</em></p>";
}
}
}
}
?>
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.
Hmm, war schon ganz froh
am 26.02.2010 - 08:49 Uhr
Hmm, war schon ganz froh einen Thread zu finden, der scheinbar eine Lösung für mein Problem parat hält. Leider funktioniert das Öffnen von Dateianhängen in einem neuen Fenster nicht mit dem u. g. Code in der template.php des entsprechenden Themes ... Ich benutze Drupal in Version 6.15. Was könnte ich falsch machen? Gibt es eine Alternative zu diesem Codebeispiel?
Hallo Zusammen,
durch
function phptemplate_upload_attachments($files) {
$header = array(t('Attachment'), t('Size'));
$rows = array();
foreach ($files as $file) {
if ($file->list) {
$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, array('target' => '_blank')), format_size($file->filesize));
}
}
if (count($rows)) {
return theme('table', $header, $rows, array('id' => 'attachments'));
}
}
in der Datei "template.php" im Themeordner des aktiven Themes wird der Anhang, welchen man an einen Node hängt (über "Dateianhänge" -> "Neue Datei anfügen:") in einem neuen Fenster geöffnet.