Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Anfängerfragen ›

Variablen uncompiliert auslesen

Eingetragen von 1000 (764)
am 16.08.2010 - 18:10 Uhr in
  • Anfängerfragen
  • Drupal 6.x

Ich versuche gerade eine selbst erstellte Profilseite zu basteln. Dazu habe ich eine user-profile.tpl.php Datei in den Themes Ordner koppiert. Aus der Anleitung http://drupal.org/node/35728 habe ich eine Möglichkeit gefunden den complilierten Quellcode auszulesen. Leider sind alle Variablen bereits compiliert, so dass ich damit nicht viel anfangen kann. Wie kann ich den uncompilierten Quelltext des Arrays $user_profile sehen, so dass ich diesen einfach an meine Bedürfnisse anpassen kann?

Available variables

The following is a list of variables that is available to your custom user-profile.tpl.php.

<?php
print '<pre>'. check_plain(print_r($profile, 1)) .'</pre>';
?>

in der user-profile.tpl.php zeigt zwar die generelle Struktur, die eigendlichen Variablen aber nicht.

‹ [gelöst] Noob Frage zu Menüdarstellung [gelöst] Wie kann ich in einem neuen Forenthema in den Textkörper ein Bild einfügen? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Variablen

Eingetragen von stBorchert (6003)
am 16.08.2010 - 18:46 Uhr

Hallo.
Öhm, bei PHP werden keine Variablen "kompiliert".

Wenn Du Dir den Inhalt von $user_profile anzeigen lassen möchtest, verwendest Du am Besten das Modul [do:devel Devel] und dessen Funktion <?php dsm($user_profile) ?>.
Damit erhälst Du dann eine komplette Übersicht der Struktur und des Inhalts von $user_profile.

Alternativ funktioniert auch <?php drupal_set_message('<pre>'. var_export($user_profile, 1) .'</pre>') ?> ganz gut.
Allerdings kann es dort bei Rekursionen (wie sie beispielsweise bei Views auftreten) zu Problemen kommen.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bei mir funktioniert die

Eingetragen von 1000 (764)
am 16.08.2010 - 21:26 Uhr

Bei mir funktioniert die Methode mit dem kopieren der user-profile.tpl.php in den aktiven Theme Order nicht. Ein einloggen ist danach nicht mehr möglich. Es erscheint eine weiße Seite. Liegt wahrscheinlich an Logintobogan oder lgindestination. Kann ich nicht irgendwo die Originaldatei bearbeiten ???

  • Anmelden oder Registrieren um Kommentare zu schreiben

WSOD

Eingetragen von stBorchert (6003)
am 16.08.2010 - 21:28 Uhr

Wenn Du nur noch eine weisse Seite siehst, solltest Du einen Blick in das error-log von PHP werfen. Dort steht der Grund für die weisse Seite.

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn ich das mit

Eingetragen von Sense (1559)
am 17.08.2010 - 07:41 Uhr

Wenn ich das mit "Originaldatei bearbeiten" höre läuft es mir ständig kalt den Rücken runter.
Do not hack core

In Bezug auf dein Problem, schau mal in die Error Logs, wie Stefan schon sagte, da wirst Du mit Sicherheit den Fehler finden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

@ Stefan Die Funktion <?php

Eingetragen von 1000 (764)
am 17.08.2010 - 13:43 Uhr

@ Stefan Die Funktion

<?php
dsm
($user_profile)
?>
des Devel Moduls liefert zwar die Struktur allerdings habe ich genau das gleiche Problem wie zuvor: Der Inhalt der Variablen wird ausgegeben und nicht die Variablen selbst. Bei einigen Modulen wird es dann schwer herauszubekommen, wie die Variablen heissen. Ich benötige den Code, der nicht ausgeführt ist. Also Struktur & Variablen, um das Design anzupassen und kleine Fehler auszubessern.

<?php
     dpm
( get_defined_vars() );
?>

liefert zwar die Variablen, die user_profile.tpl.php zur Verfügung stehen, allerdings nützt es auch nichts. Z.B. wird in der Variable user_picture ausgegeben:

div class="picture"> <a href="/user/1" title="Benutzerprofil anzeigen." class="active"><img src="http://xxx/sites/default/files/imagecache/user_image_smal/pictures/picture-1-9635800a17dbb6038336c977e82629f6.jpg" alt="Bild des Benutzers admin" title="Benutzerprofil anzeigen." class="imagecache imagecache-user_image_smal" width="40" height="40" /></a></div>

Das Problem hierbei: Ich kann die Variablen innerhalb der Variable nur als ausgeführten Code sehen. Um Ihn verändern zu können benötige ich aber den "unkompilierten Code"

Deshalb @Sense würde ich gerne einfach die Coredatei finden und entweder anpassen oder den Inhalt in user_profile.tpl.php kopieren, falls möglich

  • Anmelden oder Registrieren um Kommentare zu schreiben

kompiliert

Eingetragen von stBorchert (6003)
am 17.08.2010 - 14:22 Uhr

Ich versteh ehrlich gesagt immer noch nicht, was genau Du mit "unkompiliertem Code" meinst.
Wenn get_defined_vars zum Beispiel "user_profile" liefert, dann heisst die Variable eben auch $user_profile.

Oder suchst Du die Stelle, an der die Variable mit ihrem Inhalt gefüllt wird? Dann musst Du in den Dateien von Drupal nach s['user_profile'] suchen.
Hintergrund: ich weiss jetzt nicht, ob $variables['user_profile'] oder $vars['user_profile'] verwendet wird (vermute jedoch Ersteres).

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich suche die Stellen an

Eingetragen von 1000 (764)
am 17.08.2010 - 14:47 Uhr

Ich suche die Stellen an denen die Variablen mit Inhalt gefüllt werden. Hab bisher vergeblich gesucht. Also ich möchte z.B. die Profilbild größe von $profile['user_picture'] verändern oder am besten den gesamten

Container Original in die user_profile.tpl.php einbauen, um Ihn dort anzupassen.. Per Einstellungen geht das nicht, da die Bildgröße dann gleich an anderen Positionen gleichzeitig auch verändert wird. Wird in den jeweiligen Modulen an die Variable $user_profile einfach Inhalt "angekettet"? Also z.B. innerhalb von Facebook-Style-Statuses wird in $user_profile eine Array Position eingefügt mit der Variable facebook_statuses ??? Im Order User müssten dann ja ach die eigens zusammengestellten Felder wie Kontakt zusammengebaut werden. Konnte es aber bisher nicht finden, wo das genau passiert.

  • Anmelden oder Registrieren um Kommentare zu schreiben

$account

Eingetragen von stBorchert (6003)
am 17.08.2010 - 14:54 Uhr

Schau Dir mal den Inhalt der Variablen $account an (die sollte es da eigentlich geben; evtl. auch $profile).
Dort müssten alle benötigten Informationen in "Reinform" stehen (zum Beispiel $account->picture)..

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe bereits die

Eingetragen von 1000 (764)
am 17.08.2010 - 16:05 Uhr

Ich habe bereits die einzelnen Variablen aus $profile ausgelesen. Diese sind aber nicht in Reinform. Ich habe versucht mit:

<?php
print $account['picture'];
?>

die $account-->picture variable auszulesen. Das funktioniert aber nicht. Ich erhalte Fehlermeldungen. Wie kann ich den diese Variable auslesen??

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bitte beachten: Es ist in PHP

Eingetragen von wla (9461)
am 17.08.2010 - 16:13 Uhr

Bitte beachten:
Es ist in PHP ein Unterschied, ob Du
print $account['picture'];
schreibst oder
print $account->picture; .
Das sollte man nicht verwechseln.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Auf gut deutsch: Wenn du auf

Eingetragen von Exterior (2903)
am 17.08.2010 - 17:05 Uhr

Auf gut deutsch: Wenn du auf Inhalte von $account zugreifen willst, musst du das z. B. mit $account->picture machen, da $account ein Objekt ist und kein Array.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eine Abfrage <?php print

Eingetragen von 1000 (764)
am 17.08.2010 - 17:25 Uhr

Eine Abfrage

<?php
print $account->picture;
?>

liefert als Ausgabe:

sites/default/files/pictures/picture-3.jpg

d.h. hier wird wieder ein bereits verarbeiteter Code ausgegeben. Ich möchte aber den gesamten div Container ala

div class="picture"> <a href="/user/1" title="Benutzerprofil anzeigen." ..........</a></div>

nur eben im Original Code (unverarbeitet) haben, um ihn anpassen zu können

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es wird hier der Pfad zu dem

Eingetragen von wla (9461)
am 17.08.2010 - 17:36 Uhr

Es wird hier der Pfad zu dem Userbild ausgegeben (dem Original). Das ist schon alles. Was soll daran verarbeitet sein? Du bist im Gegenteil noch vor dem Rendern des Bildes. Irgenwo kommt im profile-Modul dann die Verarbeitung, vermutlich in der Art:

  theme_image($account->picture, .........  ):

Wenn Du auf alles Einfluß nehmen willst, mußt Du Dir die ganzen Template-Files zusammensuchen und in den Ordner Deines Themes kopieren. Da kannst Du dran schrauben, wie Du willst. Evtl wirst Du noch entsprechende Preprocess-Funktionen im template.php Deines Themes einbauen müssen, um an die Einzelteile zu kommen.
Sieh Dir mal den Template-File im Zen-Theme an. Da finden sich eine Reihe von auskommentierten Preprocess-Funktionen, die Du so entsprechend in Deinem Theme einbauen kannst.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eigendlich suche ich eine

Eingetragen von 1000 (764)
am 18.08.2010 - 13:10 Uhr

Eigendlich suche ich eine Abkürzung: Ich möchte einfach, dass erstellte Kategorien nicht untereinanderweg gelistet werden. Ich möchte eine Tabelle mit 2 Spalten, wobei in der einen "persönliche Informationen" und in der anderen das Userbild in groß steht. Ist wirklich eine harte Nuss, da man auch das Bild nachträglich nicht verändern kann.

[user_picture] => <div class="picture">
  <a href="/user/3" title="Benutzerprofil anzeigen." class="active"><img src="http://xxx.de/sites/default/files/imagecache/user_image_smal/pictures/picture-3.jpg" alt="Bild des Benutzers Randy" title="Benutzerprofil anzeigen."  class="imagecache imagecache-user_image_smal" width="40" height="40" /></a></div>

Da habe ich zwar Änderungen vornehmen können und auch die Variablen entsprechend ersetzen können. Leider wird das Bild dann nur sehr unscharf ausgegeben. Warum auch immer. Wie kann ich das Userbild als user_image_large ausgeben, welches in den Einstellungen von ImageCache definiert wurde??

Ein Versuch mit:

<?php
$pic
= $account->picture;
print
theme('imagecache', 'user_image_large', $pic, $alt, $title, $attributes);
?>

liefert ebenfalls ein unscharfes Bild. Die Originaldatei ist nicht unscharf oder zu klein o.ä.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe schon mal hier

Eingetragen von wla (9461)
am 18.08.2010 - 13:29 Uhr

Ich habe schon mal hier gelesen, daß die GD-Library nicht immer gute Ergebnisse liefert. Unscharfe Bilder als Ergebnis sind mir da noch in Erinnerung, aber auch, daß das stark vom Ausgangsbild abhing. In manchen Fällen ist man dann zu ImageMagick gewechselt, aber das muß auf dem Server Deines Hosters auch installiert sein. Das soll bessere Ergebnisse liefern.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe keine Distribution

Eingetragen von 1000 (764)
am 18.08.2010 - 15:23 Uhr

Ich habe keine Distribution für mein System gefunden. Ich benutze Linux Ubuntu x86_64
Auch eine Autoinstallation für Linux per wget wird nicht angeboten. Trotzdessen, vielen Dank für den Tipp !

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie wäre es dann mit dieser

Eingetragen von wla (9461)
am 18.08.2010 - 15:32 Uhr

Wie wäre es dann mit dieser Seite (nur mal schnell gegoogled).

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

1000 schrieb Wie kann ich das

Eingetragen von talueng (48)
am 18.08.2010 - 15:51 Uhr
1000 schrieb

Wie kann ich das Userbild als user_image_large ausgeben, welches in den Einstellungen von ImageCache definiert wurde??

Am einfachsten so:

<?php

theme
('imagecache', 'user_image_large', $user->picture);
?>

...oder als eigene, etwas mächtigere Funktion:

<?php

function _theme_my_user_picture($user, $size = 'user_image_default', $classes = '', $link = TRUE) {
 
$picture;
 
$result = "<div class='user_picture size_" . $size;
 
  if (
is_numeric($user) && $user) {
   
$user = user_load($user);
  }
 
  if (
$user && !empty($user->picture) && file_exists($user->picture)) {
   
$picture = $user->picture;
  } else if (
variable_get('user_picture_default', '')) {
   
$picture = variable_get('user_picture_default', '');
   
$result .= " user_picture_default";
  } else {
   
$result .= " user_picture_empty";
  }

  if (
$classes != "") { $result .= " " . $classes; }
 
$result .= "'>";
 
  if (
$link) {
   
$result .= l(theme('imagecache', $size, $picture), 'user/' . $user->uid, array('html' => TRUE));
  } else {
   
$result .= theme('imagecache', $size, $picture);
  }

 
$result .= "</div>";
 
  return
$result;
}
?>

Bzgl. der Schärfe gibt es auch eine Einstellung für die GDLibrary im Drupal Administrations Backend, die afair standardmäßig auf 75% JPEG-Qualität ist. Auch daran könnte es liegen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe die Funktion in

Eingetragen von 1000 (764)
am 18.08.2010 - 18:12 Uhr

Ich habe die Funktion in meine user-profile.tpl.php eingebaut und aufgerufen. Kein Ergebnis. Ich nehme an, dass ich zuvor noch die Variable User beschaffen muss (aus dem Objekt). Leider weiss ich nicht genau was ich da falsch mache. Die JPEG-Qualität habe ich auf 100% gesetzt. Leider ohne Ergebnis.

@Werner sudo aptitude update
sudo aptitude install imagemagick aptitude install php5-imagick

hat funktioniert. Aber warum wird ImageMagick nicht in der phpinfo.php angezeigt??? Bei mir heisst es Imageick aber wahrscheinlich ist das so???

Ich habe nachgeschaut und die convert Datei befindet sich im richtigen Ordner. Ich erhalte trotzdem diese Fehlermeldung:

# warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/usr/bin/convert) is not within the allowed path(s): (/var/www/vhosts/xxx.de/httpdocs:/tmp) in /var/www/vhosts/xxx.de/httpdocs/includes/image.imagemagick.inc on line 55.
# Die Datei /usr/bin/convert konnte nicht gefunden werden. Die open_basedir-Sicherheitseinschränkung von PHP ist auf /var/www/vhosts/xxx.de/httpdocs:/tmp eingestellt, welches die Lokalisierungsversuche von ImageMagick behindern kann.

  • Anmelden oder Registrieren um Kommentare zu schreiben

1000 schrieb Ich habe die

Eingetragen von talueng (48)
am 18.08.2010 - 18:24 Uhr
1000 schrieb

Ich habe die Funktion in meine user-profile.tpl.php eingebaut und aufgerufen. Kein Ergebnis. Ich nehme an, dass ich zuvor noch die Variable User beschaffen muss (aus dem Objekt).

$account sollte funktionieren. Allerdings habe ich gerade gesehen, dass Du ja eigentlich schon selbst die richtige Funktion aufgerufen hast (s. o. theme('imagecache', 'user_image_large', $account->picture) und es jetzt eigentlich nur noch um die Unschärfe des Bildes geht. Wenn das mit der JPEG-Kompression nichts geändert hat, liegt es wohl tatsächlich an GDlib vs ImageMagick. Kann mich auch daran erinnern, dass es da mal was auf drupal.org zu gab.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich bin nun zu folgendem

Eingetragen von 1000 (764)
am 18.08.2010 - 23:12 Uhr

Also ich bin nun zu folgendem Ergebis gekommen:

Das Modul Devel würde eine Erweiterung gut gebrauchen können. Den Code einmal verarbeitet und einmal unverarbeitet anzeigen. Ansonsten eird man echt irre beim Suchen !

Jetzt löse ich es

ala

<div class="profile">
<?php print $profile['Persönliche Informationen']; ?>

</div>

und das Bild ala

<?php
$pic
= $account->picture;
print
theme('imagecache', 'user_image_large', $pic, $alt, $title, $attributes);
?>

auslesen. Dann ein simples Tabellendesign nach gusto erstellen und dazu eine neue Klasse für die css erstellen. Damit kann ich es erreichen, dass z.B. Persönliche Informationen direkt neben dem Pic angezeigt werden und nicht untereinnader. Für das Bild werde ich wohl ImageMagick benutzen. Installiert ist es schoneinmal. Für die Fehler mache ich einen neuen Thread auf, weil es eigendlich mit den Thema hier nicht mehr viel am Hut hat.

Meine Vorgehensweise ist wohl nicht sehr professionell. Falls es da noch eine bessere Lösung gibt bin ich dankbar.

@Werner again. ImageMagick läuft nun. Speziell, wenn ich das Bild per:

<?php
$pic
= $account->picture;
$title = 'Profilbild';
print
theme('imagecache', 'user_image_default', $pic, $alt, $title, $attributes);
?>

ausgebe wird es extrem unscharf. Ich habe das modul Profile Pictures installiert und die Ergebnisse in der Bildqualität verglichen. Erstere Variante bietet deutlich schlechtere Ergebnisse. Liegt es evt. an ImageCache???

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast Du die entsprechenden

Eingetragen von wla (9461)
am 19.08.2010 - 09:26 Uhr

Hast Du die entsprechenden Bilder auch aus den Presetverzeichnissen vorher gelöscht? Imagecache rechnet die Bilder einmal um und speichert dann dieses Bild. Das wird dann immer wieder referenziert und nicht nochmal berechnet um den Server zu entlasten.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe extra komplet neue

Eingetragen von 1000 (764)
am 19.08.2010 - 12:29 Uhr

Jetzt klappt es. Ich habe einfach unter Menu-->Bild-->Originalgröß einen Wert von 150 für die Höhe angegen. Nun werden die Bilder scharf.

???!!?!?! Zu früh gefreut !

Weiss jemand wie man dies einstellen kann?

Die Bildgröße wurde an die maximal zulässigen Abmessungen von 85x85 Pixel angepasst.

  • 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 1 Woche 5 Tagen
  • Hey danke
    vor 1 Woche 6 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 6 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 4 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 4 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 1 Tag
  • In der entsprechenden View
    vor 3 Wochen 1 Tag
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 1 Tag
  • gelöst
    vor 5 Wochen 5 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

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 28 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