Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

[gelöst] Wie auf Variable aus user-profile.tpl.php zugreifen?

Eingetragen von Ionit (1802)
am 09.03.2011 - 19:05 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x

Hallo,

mit PHP-Code berechne ich, wenn ein User das Profile eines anderen Users aufruft, on the fly, einen Wert. Dieser Wert kann 1 oder 0 sein.

Die Berechnung erfolgt momentan direkt in der user-profile.tpl.php - der berechnete Wert befindet sich in der Variablen $wert. Der Wert wird nicht per print ausgegeben.

Ich will nun aus einem Block (im Profile) diesen Wert abfragen - leider weiß ich aber nicht wie man an diese Variable herankommt.

Ich habe es schon mit Devel versucht aber $wert taucht nirgends auf!

Das Problem ist - ich habe 10 Blöcke - die Sichtbarkeit dieser Blöcke steuere ich über "True/False". "1" aus der Variablen $wert wäre TRUE und "0" wäre FALSE. Die Berechnung von 1 oder 0 ist allerdings etwas umfangreicher sodass ich diese Berechnung nicht in allen 10 Blöcken durchführen will - ich möchte diesen Wert daher nur einmal berechnen und dann soll jeder Block nur diesen Wert abfragen und dann TRUE oder FALSE returnen.

Könnte mir bitte jemand auf die Sprünge helfen wie ich diese Variable in einem Block aufrufen kann? Ist das auf diese Weise überhaupt möglich oder müsste man $wert in der Datenbank zwischenspeichern (das will ich vermeiden)?

Vielen Dank schonmal.

Schöne Grüße
Matthias

‹ block in abhängigkeit eines bestimmten inhaltstyps anzeigen Fehler: "Validation error, please try again. If this error persists, please contact the site administrator." ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Das müßtest Du in einer

Eingetragen von wla (9461)
am 09.03.2011 - 21:27 Uhr

Das müßtest Du in einer preprozess_block-Funktion in der Datei template.php regeln. Dort kannst Du dann auch eine Variable setzen, die gespeichert wird. Dann können alle Blöcke diese Variable auswerten.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Werner, danke für den

Eingetragen von Ionit (1802)
am 09.03.2011 - 21:53 Uhr

Hallo Werner,

danke für den Denkanstoß.

Erfolgt dann die Berechnung des Wertes auch in der preprocess_block-Funktion in der template.php oder wird das Ergebniss dort nur "gespeichert"? Der Wert soll ja nur berechnet werden wenn ein Profile aufgerufen wird - dazu werden die $user und die $account Variable geladen und diverse Werte abgeglichen. Wenn ein Node oder eine View-Page aufgerufen wird, soll diese Berechnung nicht statt finden (logisch!).

Um Dinge wie "preprocess_block-Funktionen" etc. habe ich bisher immer einen großen Bogen gemacht aber jetzt scheint es wohl Zeit zu sein mal tiefer in die Materie einzutauchen allerdings stehe ich gerade wie der "Ochs vorm Tor".

Grübelnde Grüße
Matthias

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok - ich glaube ich bin

Eingetragen von Ionit (1802)
am 09.03.2011 - 22:33 Uhr

Ok - ich glaube ich bin dahinter gestiegen und werde nun versuchen die Variable zu setzen.

Danke erstmal.

Schöne Grüße
Matthias

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hmmm ... ich muss bzgl. des

Eingetragen von Ionit (1802)
am 10.03.2011 - 09:40 Uhr

Hmmm ... ich muss bzgl. des Themas doch noch ein paar grundsätzliche Fragen stellen da ich Verständnis-Probleme habe

Wenn ich über die preprocess-Block-Funktion eine neue Variable definiere dann wird mir diese doch (oder sehe ich das falsch?) "nur" über die block.tpl.php ausgegeben.

Ich muss auf diese Variable aber direkt aus den Sichtbarkeitseinstellungen des jeweiligen Blocks zugreifen.

Ich lege einen neuen Nicht-View-Block an - um mir über Devel alle Variablen/Arrays anzeigen zu lassen, gebe ich im Blockinhalt ...

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

an.

Als Ausgabe erhalte ich aber "nur"

code
theme_path
theme_info
conf
old_theme_path

Die Block-Variable $block taucht dort aber nicht auf - wenn ich über preprocess einen neue Variable definiere, wird mir diese dort sicherlich auch nicht ausgegeben - nun frage ich mich wie ich denn dann auf diese Variable zugreifen kann um True/False zurückgeben zu können?

Oder gehe ich an die Sache falsch ran?

Grübelnde Grüße
Matthias

  • Anmelden oder Registrieren um Kommentare zu schreiben

Modul

Eingetragen von stBorchert (6003)
am 10.03.2011 - 11:50 Uhr

Hallo.
Wenn Du Daten Template-übergreifend verwenden willst, solltest Du diese Daten entweder über eine dafür erstellte Funktion in der template.php oder über ein eigenes kleines Modul bereitstellen.
Ansonsten kannst Du auf die Daten nicht von überall zugreifen.

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, könntest Du mir

Eingetragen von Ionit (1802)
am 10.03.2011 - 12:00 Uhr

Hallo Stefan,

könntest Du mir bitte eine Tip geben mit welcher Funktion/Code man eine Variable Template-übergreifend verfügbar machen kann? Das weiß ich leider nicht.

Ich habe vorhin schon versucht die neue Variable in das globale User-Object zu "injizieren" - damit man darauf zugreifen kann - dies hat aber leider nicht geklappt.

Grübelnde Grüße
Matthias

  • Anmelden oder Registrieren um Kommentare zu schreiben

Funktion

Eingetragen von stBorchert (6003)
am 10.03.2011 - 12:51 Uhr

Wie schon gesagt: lege in der template.php eine Funktion an (oder schreibe ein Modul, in dem die Funktion definiert ist) und verwende dann diese Funktion in den Templates. So sammelst (oder berechnest) Du an einer Stelle die Daten und kannst sie dann "global" über die Funktion verwenden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, da hast Du

Eingetragen von Ionit (1802)
am 10.03.2011 - 13:13 Uhr

Hallo Stefan,

da hast Du natürlich recht. Ich dachte eigentlich, dass es schon eine drupalinterne Funktion gibt die man dazu verwenden muss ala ....

mytheme_drupal_set_variable .... oder sowas in der Art.

Ich habe eben schon in der API rumgesucht.

Aber ok - ich werde dann mal die Function schreiben.

Wegduckende Grüße
Matthias
;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Stefan, ich habe gerade

Eingetragen von Ionit (1802)
am 10.03.2011 - 13:41 Uhr

Hallo Stefan,

ich habe gerade meine erste Function geschrieben und kann den Wert nun überall verfügbar machen.

Das klappt super.

Nun ist mir auch zu 100 Prozent klar was "global" bedeutet - ich habe es zwar schon (da es ja überall so aufgeführt wird) häufig verwendet aber die Funktionsweise (warum, weshaIb) war mir (als immer noch PHP-Noob) nie so richtig ersichtlich.

Mir ist hier gerade eine ganze Lichterkette aufgegangen.

Herzlichen Dank für den Denkanstoß. ;-)

Schöne Grüße
Matthias

  • 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 15 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