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

[gelöst] Mehr Felder mit Benutzerdaten anlegen

Eingetragen von darkeye78 (105)
am 08.01.2010 - 20:10 Uhr in
  • Anfängerfragen

Hallo,

ich möchte auf der User-Registrierungsseite neue Felder anlegen(Adressanschrift, Telefonnummer, Fax, etc). Bestimmte Angaben sollten dabei unbedingt erforderlich sein. Anschliessend sollen diese Daten unter einem verfassten Artikel des entsprechenden Benutzers aufgelistet werden.

Kann man das mit den Drupal-hauseigenen Funktionen oder mit CCK realisieren?

MFG

‹ Gallery Assist - wie funktionierts? Qcache_lowmem_prunes 325692026 Häufigkeit der Bereinigung des MySQL-Anfrage-Caches aus Mangel an Speicher (sollte idealerweise N ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Neue Profilfelder kannst du

Eingetragen von Exterior (2903)
am 09.01.2010 - 01:45 Uhr

Neue Profilfelder kannst du doch ohne weiteres mit dem Profile-Modul anlegen, genauso kannst du dabei festlegen, ob diese Felder Pflichtfelder sein sollen oder nicht.

Und wenn des ganze unter einem geschriebenen Beitrag ausgegeben werden soll, dann lege dir für den Inhaltstyp eine extra node.tpl.php an und gib dort die Profil-felder aus:

<?php
//Profil des handelnden Benutzers laden
profile_load_profile($user);
print
$user->profil_feldname;
?>


Das musst du natürlich für deine Anforderungen abstimmen, aber damit kannst du ganz einfach unter jedem Node eines Inhaltstyps beliebige Profilfelder ausgeben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke füe die Antwort. Doch

Eingetragen von darkeye78 (105)
am 11.01.2010 - 13:26 Uhr

Danke füe die Antwort. Doch welches Profile Modul ist denn hierbei empfehlsnwert. Ich finde lediglich ein Modul welches aber für die 4-er und 5-er Version ist. Ich habe aber die 6--er Version.

Dann hab ich mir das Modul Advanced Profile runtergeladen und àuf die Schnelle angetestet. Doch damit kann man anscheinend keine neue Profilfelder anlegen.

Ich habe noch nach anderen Modulen gesucht, aber nix gefunden. Was gibts denn noch?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Gemeint ist das Core-Modul

Eingetragen von TobiasR (134)
am 11.01.2010 - 13:30 Uhr

Gemeint ist das Core-Modul Profile.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ahhh ok, danke. So, ich habe

Eingetragen von darkeye78 (105)
am 11.01.2010 - 14:34 Uhr

Ahhh ok, danke.

So, ich habe nun neue Profilfelder angelegt. Ich möchte jtzt dass die Propfilfelder unter den Artikeln des entsprechendes Autors angezeigt werden. Doch mit dem Code von exterior klappt das leider nicht. Ich habe in meiner node.tpl folgenden Code eingetragen:

<?php
//Profil des handelnden Benutzers laden
profile_load_profile($user);
print
$user->profile_name;
?>

Doch damit wird rein garnichts angezeigt... Ein Wert in profile_name ist definitiv angegeben. Ich vermute mal dass der Code nicht ganz korrekt ist, denn wenn ich andere Zeichen eingebe, werden diese angezeigt.

Kann einer bitte sagen wie der richtige Code aussehen muss? Danke!

(Perfekt wäre es, wenn die entsprechenden Felder nur dann angezeigt werden, wenn diese auch vom User eingetragen worden sind)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Der Code funktioniert

Eingetragen von Exterior (2903)
am 11.01.2010 - 15:43 Uhr

Der Code funktioniert definitiv, habe es gerade nochmal getestet, irgendwas musst du falsch gemacht haben.

Habe gerade diesen Code probiert:

<?php
profile_load_profile
($user);
print
$user->profile_vorname . '<br>';
print
$user->profile_nachname;
?>

Damit werden mir untereinander die Inhalte von den Feldern "profile_vorname" und "profile_nachname" angezeigt.
Angezeigt wird das auch nur, wenn etwas drin steht.

Die Frage ist nun, wo dein Fehler steckt...
Baust du diesen Code direkt in die Content-Ausgabe ein oder in eine extra Funktion, die du in der Content-Ausgabe aufrufst?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habs mittlerweile

Eingetragen von darkeye78 (105)
am 11.01.2010 - 15:48 Uhr

Ich habs mittlerweile herausgefunden. Wenn ich folgenden Code in die node.tpl einbaue:

<?php
global $user;
profile_load_profile($node);
print
$node->profile_name;
?>

wird einzig und alleine der entsprechende Wert angegeben. Aber so gefällt mir das nicht, Gibt es einen Code der einfach alles ausspuckt was der User bei der Registrierung angegeben hat? Wenn er z.B. nur seinen Namen, seine Url eingetragen hat und die anderen 10 Felder nicht ausgefüllt hat, dann sollen unter dem Artikel nur diese beiden Werte erscheinen. Ist das irgendwie möglich?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Sorry hab deinen letzten

Eingetragen von darkeye78 (105)
am 11.01.2010 - 15:57 Uhr

Sorry hab deinen letzten post noch nicht gelesen!

Ich habe grade deinen Code ausprobiert... Funktioniert dennoch nicht. Es wird einfach nix angezeigt

<?php
profile_load_profile
($user);
print
$user->profile_name . '<br>';
print
$user->profile_plz;
print
$user->profile_url;
?>

P.S. Wenn ich ihn ändere in:

<?php
global $user;
profile_load_profile($node);
print
$node->profile_name . '<br>';
print
$node->profile_plz . '<br>';
print
$node->profile_url . '<br>';
?>

dann funktioniert es.

Aber wie gesagt, bin auf der Suche nach folgendem Code:

Zitat:

Wenn er z.B. nur seinen Namen, seine Url eingetragen hat und die anderen 10 Felder nicht ausgefüllt hat, dann sollen unter dem Artikel nur diese beiden Werte erscheinen. Ist das irgendwie möglich?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wo genau benutzt du denn

Eingetragen von Exterior (2903)
am 11.01.2010 - 16:14 Uhr

Wo genau benutzt du denn diesen Code? Denn in der normalen Content-Ausgabe in der node.tpl.php ist eigentlich das User-Objekt verfügbar. Wenn du es aber z.B. in einer Funktion benutzt, muss man natürlich noch "global $user" einfügen (dann hätte auch $user->profile_name funktioniert).

Eigentlich dürften damit nur Felder ausgegeben werden, die auch ausgefüllt wurden...

Aber du kannst auch aus jeder Feld-Ausgabe eine If-Anweisung basteln, die erst prüft, ob das Feld belegt ist und nur dann ausgibt, in etwa so:

<?php
global $user;
profile_load_profile($node);
if (
$node->profile_name != '')
{
  print
$node->profile_name;
}
?>

Damit musst du evtl. noch ein wenig experimentieren, aber das dürfte so klappen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zu Deiner Frage: Ich baue

Eingetragen von darkeye78 (105)
am 11.01.2010 - 16:28 Uhr

Zu Deiner Frage: Ich baue den Code unten in die themes/garland/nope.tpl.php ein.

Habe nun den If Befehl mit eingebaut und es funktioniert wunderbar! Eine allerletzte Frage habe ich noch: Die Werte werden allerdings auch unter den Einleitungstexten meiner Startseite angezeigt. Das ist natürlich Blödsinn... die Werte sollen nur auf der Artikelseite erscheinen.

Weisst du (oder jemands anders) dafür auch eine Lösung? :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja, die ist sogar ganz

Eingetragen von Exterior (2903)
am 11.01.2010 - 16:50 Uhr

Ja, die ist sogar ganz einfach ;)

Du musst dir für deine Artikel eine extra node.tpl.php anlegen. Dazu kopierst du dir einfach deine node.tpl.php und benennst diese Kopie in "node-typname.tpl.php" um (also zum Beispiel "node-story.tpl.php"). Und nur in dieser node-typ.tpl.php fügst du den Code für die Profil-Felder ein, die normale node.tpl.php lässt du so, wie sie ist. Damit werden die Profil-Felder nur bei dem gewünschten Inhaltstyp ausgegeben.

Übrigens hast du bei Garland in der Node.tpl.php einen Code-Abschnitt, der so aussieht:

<?php
<div class="content clear-block">
<?
php print $content ?>

</div>
?>

Darin wird die ganze Ausgabe geregelt, also solltest du deinen Code für die Profil-Felder auch dort einbauen. Dann würdest du auch "global $user" nicht mehr brauchen ;)

Würde dann z.B. so aussehen, der Code-Teil:
<?php
<div class="content clear-block">
<?
php print $content;
profile_load_profile($node);
print
$node->profile_name;?>

</div>
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Der neue Code Teil funzt

Eingetragen von darkeye78 (105)
am 11.01.2010 - 17:03 Uhr

Der neue Code Teil funzt leider nicht, bekomme die Fehlermeldung: Parse error: syntax error, unexpected '<' in /home/www/doc/531/domain.de/www/themes/garland/node-story.tpl.php on line 17

Ich schätze mal da ist nur ne Kleinigkeit falsch, aber ich hab leider null Ahnung von PHP...

Habe nun auch eine extra node-story.tpl.php angelegt, den Code hineinkopiert, den anderen Code aus der node.tpl.php entfernt, doch es gibt leider keine Änderung... Die User-Werte werden nachwievor auch auf der Startseite in den Einleitungstexten angezeigt :(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Pfuh, dass du kein PHP

Eingetragen von Exterior (2903)
am 11.01.2010 - 17:55 Uhr

Pfuh, dass du kein PHP kannst macht die Sache nicht einfacher -,-'

Auf Zeile 17 in deiner node.tpl.php dürftest du so diesen Code finden:

<?php
print $content
?>

Setze hinter das "$content" ein ";", dann drücke Enter und füge den Code für deine Profilfelder ein.

Mal ganz ohne Syntax-Highlighting, das müsste dann so aussehen:

'<'div class="content clear-block">
'<'?php print $content;
profile_load_profile($node);
print $node->profile_name;
print $node->profile_plz;
print $node->profile_url;
?'>'
'<'/div>

Damit ersetzt du mal den Code von Zeile 16 bis 18.
(Und entferne bei einigen '<' bzw. '>' die Hochkommas, die habe ich rein gemacht, damit der nicht automatisch den Text zu Code formatiert)

Welchen Inhaltstyp hat denn deine Startseite? Hat die den Typ Seite bzw. Page? Oder ist das auch ein Artikel?
Wenn's auch ein Artikel ist, muss man noch eine neue Abfrage machen. Wenn es kein Artikel ist, dann leere mal deinen Drupal-Cache komplett.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Habe den Code nun so wie du

Eingetragen von darkeye78 (105)
am 11.01.2010 - 18:32 Uhr

Habe den Code nun so wie du es möchtest, in die node-story.tpl.php eingebaut. Klappt jetzt.

Meine Artikel haben den Typ story. Die Einleitungstexte, die nicht nur auf der Startseite sondern auch auf den Kategorieseiten eingeblendet werden, haben für meine Begriffe keinen Typ. Habe einfach unter admin/content/node-type/story/display die Einleitungstexte aktiviert.
Cache habe ich gelöscht, hat leider nix gebracht. Meine noch nicht fertige Seite ist http://www.du-bist-autor.de

Vielen Dank übrigens für deine bisherige Hilfe. Weiss das sehr zu schätzen! :-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mmmh, was genau meinst du

Eingetragen von Exterior (2903)
am 11.01.2010 - 19:08 Uhr

Mmmh, was genau meinst du denn mit "Einleitungstexte"?

Meinst du auf der Startseite das "Hier haben Sie die Möglichkeit...."?
Sorry, aber ich kann mir bei deiner Seite gerade unter Einleitungstexte nichts vorstellen =(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Einleitungstexte=Vorschautext

Eingetragen von darkeye78 (105)
am 11.01.2010 - 19:21 Uhr

Einleitungstexte=Vorschautexte, auch Teasertexte genannt. In admin/content/node-type/story/display wird es auch als "Anrisstext" bezeichnet.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Achso, gut, darauf hätte

Eingetragen von Exterior (2903)
am 11.01.2010 - 20:02 Uhr

Achso, gut, darauf hätte ich kommen können -,-'
Du musst vorher also noch prüfen, ob der Inhalt komplett angezeigt wird oder nur der Teaser...mmmh

Probier mal diesen Code hier, das ist im Grunde der gleiche wie vorhin, nur habe ich noch eine kleine If-Anweisung eingebaut:

'<'div class="content clear-block">
'<'?php print $content;
if((arg(0) == 'node') && (is_numeric(arg(1))))
{
profile_load_profile($node);
print $node->profile_name;
print $node->profile_plz;
print $node->profile_url;
}
?'>'
'<'/div>

Damit dürfte das ganze funktionieren.

Zur Erläuterung: Die Abfrage prüft die Adresse des Nodes. Du hast zwar URL-Aliase vergeben, aber jeder Inhalt hat intern eine Adresse wie z.B. example.com/node/31
Mit arg() ruft man die einzelnen URL-Teile nach der Domain ab, also wäre in diesem Beispiel arg(0) "node" und arg(1) "31".

Wenn also in arg(0) "node" steht und in arg(1) eine Zahl, dann betrachtest du gerade einen Node, also einen Inhalt, als ganzes und bist nicht in der Teaser-Ansicht. Und nur dann gibt der Code oben die Profil-Felder aus.

Also den Codeblock so wie den letzten kopieren und einfügen (den alten natürlich vorher löschen ;) ), dann dürfte es klappen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Juhuuu es hat endlich

Eingetragen von darkeye78 (105)
am 11.01.2010 - 20:23 Uhr

Juhuuu es hat endlich geklappt! :-)))
Danke für die Mühe und die Zeit die du geopfert hast!!!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Kein Problem ;) Wenn alles

Eingetragen von Exterior (2903)
am 11.01.2010 - 20:45 Uhr

Kein Problem ;)

Wenn alles geklärt ist, kannst du den Beitrag ja mal als "gelöst" markieren ;)
(Den ersten Beitrag hier editieren und im Titel "[gelöst]" davor schreiben)

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

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