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

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

Eingetragen von Ionit (1777)
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 (1777)
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 (145)
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 (1777)
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 (145)
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

  • Drupal 8/9 SEO-Beratung/Coaching
  • Hilfe zu Views und Filter?
  • Variable aus dem inkludierten Partial Template auslesen
  • Probleme beim Versand von Mails via Drupal 9
  • Drupal 9: Wie kommt der Inhalt eines selbst erstellten Feldes in page-title.html.twig
  • Drupal DACH Meetup - Donnerstag 4. März 2021, 19 Uhr
  • Layout-Builder hängt
  • Sollte das Forum vielleicht lieber offline gehen?
  • Cronjob für Multisite
  • Drupal oder Symfony Web Entwickler (m/w/i*) in Hamburg
  • Problem mit Verschlüsselungsmodul Real AES: PHP-encryption library via Composer
  • [gelöst] nodeone Tutorials nicht mehr online?
Weiter

Neue Kommentare

  • manarak schrieb Ich konnte
    vor 18 Stunden 8 Minuten
  • Geschafft!
    vor 19 Stunden 23 Minuten
  • montviso schrieb Bist Du auf
    vor 20 Stunden 23 Minuten
  • bewerben Sie sich bitte wie
    vor 1 Tag 45 Minuten
  • Dann per persönlicher
    vor 1 Tag 1 Stunde
  • da es sich um eine
    vor 1 Tag 1 Stunde
  • Danke AliGerne möchte ich
    vor 1 Tag 1 Stunde
  • Danke für den Tipp! Ich werde
    vor 1 Tag 1 Stunde
  • Um welche Seite gehts denn?
    vor 1 Tag 1 Stunde
  • Hallo, wir sind ein junges
    vor 1 Tag 21 Stunden

Statistik

Beiträge im Forum: 246072
Registrierte User: 18884

Neue User:

  • uniquename
  • xapizm
  • maklko

» Alle User anzeigen

User nach Punkten sortiert:
wla9015
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3917
ronald3831
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 2 User und 3 Gäste online.

Benutzer online

  • montviso
  • bv

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