Startseite
  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

[gelöst]Rules: User-Reference-Feld füllen?

Eingetragen von Ionit (995)
am 29.08.2010 - 13:44 Uhr in
  • Module
  • Drupal 6.x

Hallo,

ich binde auf den User-Profilen über Views das Add-Form des Inhaltstypen "Gästebuch" ein damit Besucher Einträge hinterlassen können.

Das Add-Form besteht aus dem Titel, dem Text und einem (nicht sichtbarem) User-Reference-Field (Auto-Complete).

Wenn ein Besucher nun einen Gästebucheintrag vornimmt, soll, beim speichern, das User-Reference-Field gefüllt werden und zwar mit dem Namen des User-Profiles-Autors/Inhabers.

Ich habe versucht das Problem mit Rules zu lösen allerdings schaffe ich das nicht.

Als Auslöser verwende ich "Inhalt soll gespeichert werden"
Bedingung: Inhalt hat den Typ "Gästebuch"
Aktion: Ein CCK Feld füllen"
Dort gebe ich als PHP-Code ein
return array(
0 => array('uid' => $user->uid),
);

Ich bekomme so allerdings keine Ausgabe (da fehlt mir wieder das PHP-Wissen) - außerdem denke ich, ist das sowieso der falsche Weg denn man müsste Rules ja vorher beibringen, dass Profile zu laden und nachzuschauen wer der Inhaber/Autor ist und dann dieses Namen einzusetzen.

Ich weiß allerdings nicht wie ich Rules dazu bewegen kann - das müsste man doch sicherlich auch über PHP-Code machen oder?

Könnte mir da vielleicht jemand von Euch auf die Sprünge helfen - ich stochere hier leider wieder nur im Nebel herum.

Danke und schöne Grüße
Matthias

‹ Ubercart "Bestätigungsmail" Umlaut Problem PHPBB integration ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, ich konnte das Problem

Eingetragen von Ionit (995)
am 30.08.2010 - 12:07 Uhr

Hallo,

ich konnte das Problem leider immer noch nicht lösen.

Mit dem Code

<?php
global $user;
profile_load_profile($account);
print
$account->name;
?>

kann man ja den Author des Profiles laden(wenn ich mich nicht irre). Ich dachte nun, dass ich diesen Code in Rules verwenden kann um das User-Reference-Feld zu füllen.

Ereignis: Inhalt soll gespeichert werden / Nach dem Speichern von neuem Inhalt
Bedingung: Inhalt hat den Typ "Gästebuch"
Aktion: Benutzerkonto laden (dort gebe ich unter Benutzer-ID: <?php global $user; profile_load_profile($account); echo $account->name; ?> ein)
Aktion: Ein CCK-Feld füllen return array(   0 => array('uid' => $user_loaded->uid),);

Wenn ich nun einen Gästebucheintrag vornehme, bekomm eich leider nur eine Fehlermeldung.
user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 query: SELECT * FROM users u WHERE in

Ich habe dann versucht - anstatt "Benutzerkonto laden" die Aktion "Benutzerdefinierten PHP-Code ausführen" mit
global $user;
profile_load_profile($account);
print $account->name;
zu verwenden und anschließend wieder "Ein CCK-Feld füllen" aber das gibt zwar keine Fehlermeldung aber leider auch überhaupt keine Ausgabe.

Ich bin mit meinem Latein leider am Ende und bräuchte mal Hilfe. Kann von Euch zufällig jemand erkennen wo der Fehler liegt?

Ich bedanke mich schonmal im Vorraus.

Schöne Grüße Matthias

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ziel?

Eingetragen von McGo (140)
am 30.08.2010 - 12:40 Uhr

Ich verstehe noch nicht so ganz, was das Ziel ist, dass mit der Rule erreicht werden soll. Meine Glaskugel sagt mir, dass du ein Gästebuchformular hast, dass auf der Profilseite eines Benutzers angezeigt werden soll. Du willst das Gästebuch dann dem Benutzer zuordnen.

Wenn z.B. der Benutzer mit der ID 100 auf das Profil des Benutzers mit der ID 200 schaut, dann soll im Gästebuch eingetragen werden, dass der Eintrag zu Benutzer 200 gehört und von Benutzer 100 erstellt wurde, ja? Da die Benutzer-ID des Profils ja Bestandteil der URL könnte dir http://drupal.org/project/prepopulate weiterhelfen. Oder du nimmst als Vorgabewert ein Argument aus der URL.Das kannst mit dem Befehl arg() machen. Wenn das Profil also wirklich das Benutzerprofil auf user/200 ist, dann wäre die 200 arg(1). Der PHP Code im Standardwert des PHP Feldes müsste so aussehen (ungetestet):

<?php

return array(
 
0 => array('uid' => arg(1)),
);

?>

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo McGo, ja - richtig -

Eingetragen von Ionit (995)
am 30.08.2010 - 13:16 Uhr

Hallo McGo,

ja - richtig - über den Namen des User-Reference-Feldes soll die Zuordnung der Gästebucheinträge zu den Profilen erfolgen. Ich nutze kein fertiges Gästebuch-Modul sondern verwende einen eigenen Inhaltstypen - ohne "Profil/Namenszuordnung" kann ich die Nodes ja nicht per View "filtern" und dem jeweiligen profil zuordnen.

Ich habe nun

return array(
0 => array('uid' => arg(1)),
);

unter "Ein CCK-Feld füllen" eingetragen und es funktioniert auf Anhieb. Dass das nur an arg(1) liegt, war mir nicht bewußt - ich hatte alles mögliche ausprobiert - von "Content Profile laden" über "Benutzer laden" und eigenen PHP-Code ausführen gepaart mit stundenlangem Suchen und Lesen auf drupal.org ...

Ich bin echt frustriert dass ich hier soviel Zeit verbrate und dann liegt das "nur" an arg(1).

Ich dachte den Usernamen gibt man mit $account->name aus - warum verwendet man hier arg(1)? Ich dachte dahinter verbirgt sich die ID als eine Zahl/Nummer - warum gibt der Aufruf von arg(1) den Namen aus?

Warum wird manchmal

<?php
global $user;
profile_load_profile($account);
print
$account->name;
?>

verwenden und hier 'uid' => arg(1) ?

Wärst Du so nett und könntest dazu noch was sagen? Seit gestern arbeite ich php-einfach.de durch und baue langsam ein Grundverständnis bzgl. PHP auf aber warum bei Drupal so viel verschiedenen Variablen (bzgl. des Usernamens) verwendet werden, ist mir echt zu hoch und vollkommen unverständlich.

Ich danke Dir vielmals für die Hilfe - das hätte ich alleine nie hinbekommen.

Schöne Grüße Matthias

Drupal rockt!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

arg = url

Eingetragen von McGo (140)
am 30.08.2010 - 13:31 Uhr

Die Funktion arg() liefert die die Argumente aus der URL. Dabei beginnt arg(0) bei dem ersten Eintrag. Für die URL node/1/edit wäre das also arg(0) = node, arg(1) = 1 und arg(2) = edit. Da die URL des Users in deinem Fall user/[uid] ist, also z.B. user/100 bekommst du in arg(1) die uid des Users dessen Profil du aufrufst. Im user reference Feld wird die uid erwartet. (das steht auch in der Beschreibung zum Feld).

Die Variable $account ist nicht definiert. Die einzige im globalen Kontext verfügbare Variabel ist $user und entspricht dem aktuellen Benutzer.

undpaul

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Blockregionen per CCK Feld ausblenden
  • [erledigt] drupal 7 - read more ausblenden
  • Drupal7 für eine Produktvergleich Seite
  • Marinelli 3, Admin-Layer
  • #ajax Funktionalität in einem Field Widget
  • Image: Bildupload erst beim Speichern des Nodes
  • Views Accordion - Header Elemente nebeneinander
  • Wie kann ich Theme AUTOMATISCH umstellen, wenn sich Benutzer einlogen?
  • Überprüfung von Artikeln, die Benutzer geschrieben haben
  • Target des Weiterlesen-Links ändern?
  • CCK Auswahlfelder während des Betriebes ändern/erweitern oder in Textfeld umwandeln
  • Url Alias zerschossen - (SET SQL_BIG_SELECTS=1)
Weiter

Neue Kommentare

  • in die template.php im
    vor 1 Stunde 15 Sekunden
  • da es bisher keine etablierte
    vor 1 Stunde 10 Minuten
  • Also die lösung ist einfach
    vor 4 Stunden 28 Minuten
  • Und warum schreibst Du die
    vor 7 Stunden 27 Minuten
  • Jep, so hab ich eine View
    vor 7 Stunden 54 Minuten
  • Nimm dazu doch das Modul
    vor 8 Stunden 19 Minuten
  • okay, vielen dank :)
    vor 8 Stunden 30 Minuten
  • _target-Attribut für Links in node.tpl.php einfügen
    vor 8 Stunden 44 Minuten
  • Hallo Jonny und willkommen
    vor 9 Stunden 17 Minuten
  • Hast Du Dir schon mal die
    vor 10 Stunden 12 Minuten

Statistik

Beiträge im Forum: 173955
Registrierte User: 15480

Neue User:

  • ghs2f1efs
  • Neoskop
  • habicht09

» Alle User anzeigen

User nach Punkten sortiert:
stBorchert5516
quiptime4713
Tobias Bähr3874
wla3805
md3777
bv3700
Thoor3678
Alexander Langer3282
dereine2635
Exterior2571
» User nach Punkten
Zur Zeit sind 1 Benutzer und 12 Gäste online.

Benutzer online

  • uaith

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Showroom
  • » Forum
  • » Drupalchannel
  • » Ü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
  • Bücherecke

Quicklinks III

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

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed Drupal Podcast
  • 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