user_register profile_fields (CPF) einzeln darstellen! Wie?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

user_register profile_fields (CPF) einzeln darstellen! Wie?

Beitrag von issjut »

Hallo.
ich habe zum Anpassung meiner Profilansichten die ursprüngliche Liste der benutzerdefinierten Profilfelder durch einzelne Felder ausgetauscht..

{PROFILE_GROESSE_NAME}:{PROFILE_GROESSE_VALUE}
{PROFILE_GEWICHT_NAME}:{PROFILE_GEWICHT_VALUE}

usw....

geht das auch iregdend wie in der Registrierung?

Dort lautet die allgemeine Ausgabe der benutzerdefinierten Profilfelder ja...

Code: Alles auswählen

	<!-- BEGIN profile_fields -->
		<dl>
			<dt><label<!-- IF profile_fields.FIELD_ID --> for="{profile_fields.FIELD_ID}"<!-- ENDIF -->>{profile_fields.LANG_NAME}:<!-- IF profile_fields.S_REQUIRED --> *<!-- ENDIF --></label>
			<!-- IF profile_fields.LANG_EXPLAIN --><br /><span>{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF -->
			<!-- IF profile_fields.ERROR --><br /><span class="error">{profile_fields.ERROR}</span><!-- ENDIF --></dt>
			<dd>{profile_fields.FIELD}</dd>
		</dl>
	<!-- END profile_fields -->
Die ID's kenne ich ja, aber lässt sich das hier auch irgendwie EINZELN auflisten?


//edit:
Ferner würde ich bei der Registrierung ganze gerne mehr als nur die eine Seite haben.
z.b. Nickl und PW auf Seite 1
E-Mail, Adresse usw auf Seite 2
Profilangaben auf Seite 3

So könnte man z.B. rechtliche Hinweise besser unterbringen...
Bei E-Mail Name und Anschrift z.B. den Hinweis, dass diese Daten gemäß Datenschutzgesetz nicht an Dritte weiter gegeben werden und auch nicht im Profil sichtbar sind...

(Nur so ne Idee) :grin:
Zuletzt geändert von issjut am 16.04.2008 21:05, insgesamt 1-mal geändert.
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Hi,

schau mal hier vorbei, vielleicht bringt das Dich auf den richtigen Weg ...

http://www.phpbb.de/viewtopic.php?t=154 ... ile+fields
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Beitrag von issjut »

hmm... leider scheint da auch noch niemand eine Lösung für die Registrierung gefunden zu haben. Aber es freut mich ja schon mal zu sehen, dass ich nicht der Einzige bin den die Anordnung der Felder in der Registrierung stört ;-)
Vielen Dank!!

Vielleicht gibt es ja doch noch Jemanden der sich der Lösung des Problems annehmen könnte.

Die ID ist ja über das ACP einsehbar ---> fragt sich nur wo ich diese dann einfügen müsste, damit die Felder richtig angezeigt werden^^
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Beitrag von issjut »

So ich frage noch mal ob jemand inzwischen ne Lösung hast!?
Um mein Problem und mein Vorhaben mal zu verdeutlichen, hier die Zeilen aus der viewtopic_body.html und ucp_register.html die für die Anzeige der benutzerdefinierten Profilfelder zuständig sind

Ich möchte nachwievor, dass ich die benutzerdefinierten Profilfelder bei der registrierung einzeln platzieren kann und nicht nur die Liste als Ausgabe habe!

Hier ist es ja recht einfach!

viewtopic_body.html

Code: Alles auswählen

<!-- IF postrow.S_PROFILE_FIELD1 -->
			<!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. -->
			<dd><strong>{postrow.PROFILE_FIELD1_NAME}:</strong> {postrow.PROFILE_FIELD1_VALUE}</dd>
		<!-- ENDIF -->

		<!-- BEGIN custom_fields -->
			<dd><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}:</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd>
		<!-- END custom_fields -->
um z.b. das Profilfeld Alter (AGE) anzeigen zu lassen mit der Änderung:

Code: Alles auswählen

<dd><strong>{postrow.PROFILE_AGE_NAME}:</strong> {postrow.PROFILE_AGE_VALUE}</dd>
Aber in der ucp_register.html sieht es so aus

Code: Alles auswählen

<!-- BEGIN profile_fields -->
		<dl>
			<dt><label<!-- IF profile_fields.FIELD_ID --> for="{profile_fields.FIELD_ID}"<!-- ENDIF -->>{profile_fields.LANG_NAME}:<!-- IF profile_fields.S_REQUIRED --> *<!-- ENDIF --></label>
			<!-- IF profile_fields.LANG_EXPLAIN --><br /><span>{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF -->
			<!-- IF profile_fields.ERROR --><br /><span class="error">{profile_fields.ERROR}</span><!-- ENDIF --></dt>
			<dd>{profile_fields.FIELD}</dd>
		</dl>
	<!-- END profile_fields -->
Wie kann ich es hier hinbekommen, dass ich nicht die ganze Liste mit einmal bekomme?
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Beitrag von issjut »

@Dr.Death: Sry habe ich nicht mehr dran gedacht :oops:

Hallo,
ich habe mir das ganze noch mal angeschaut und will das Thema nun endlich vom Tisch haben....

Daher hier noch einmal das wichtigste in Kürze (so kurz es geht ;-))

In der ucp_register.html gibt es folgende Stelle die für die Ausgabe der benutzerdefinierten Profilfelder (CPF) in einer Liste zuständig ist.

Code: Alles auswählen

<!-- BEGIN profile_fields -->
      <dl>
         <dt><label<!-- IF profile_fields.FIELD_ID --> for="{profile_fields.FIELD_ID}"<!-- ENDIF -->>{profile_fields.LANG_NAME}:<!-- IF profile_fields.S_REQUIRED --> *<!-- ENDIF --></label>
         <!-- IF profile_fields.LANG_EXPLAIN --><br /><span>{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF -->
         <!-- IF profile_fields.ERROR --><br /><span class="error">{profile_fields.ERROR}</span><!-- ENDIF --></dt>
         <dd>{profile_fields.FIELD}</dd>
      </dl>
   <!-- END profile_fields -->

Ich möchte nun diese Liste nicht mehr haben, sondern die benutzerdefinierten Profilfelder einzeln Darstellen (änhlich wie es auch in der memberlist_view.html mögich ist)

also z.b. für das benutzerdefinierte Profilfeld "Familienstand"

Code: Alles auswählen

{profile_fields.FAMILIENSTAND_NAME}
{profile_fields.FAMILIENSTAND_EXPLAIN}
Ich brauche das ganze, weil ich die Registrierung etwas flexibler gestallten möchte und auch zwischen der bisherigen Liste etwas einfügen möchte

Beispiel vorher:
PF1 -> Größe
PF2 -> Gewicht
PF3 -> Augenfarbe
PF4 -> Geschlecht
PF5 -> Partnerschaft
...
..
.

Beispiel nachher:
Persönliche Angaben:
PF1 -> Größe
PF2 -> Gewicht
PF3 -> Augenfarbe

Wonach suchst Du:
PF4 -> Geschlecht
PF5 -> Partnerschaft
...

Deine Interessen:
..
.

Zuständig für die bisherige Ausgabe der Liste ist die includes/functions_profile_fields

Code: Alles auswählen

function generate_profile_fields($mode, $lang_id)
   {
      global $db, $template, $auth;

      $sql_where = '';
      switch ($mode)
      {
         case 'register':
            // If the field is required we show it on the registration page and do not show hidden fields
            $sql_where .= ' AND (f.field_show_on_reg = 1 OR f.field_required = 1) AND f.field_hide = 0';
         break;

         case 'profile':
            // Show hidden fields to moderators/admins
            if (!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_'))
            {
               $sql_where .= ' AND f.field_hide = 0';
            }
         break;

         default:
            trigger_error('Wrong profile mode specified', E_USER_ERROR);
         break;
      }

      $sql = 'SELECT l.*, f.*
         FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . " f
         WHERE f.field_active = 1
            $sql_where
            AND l.lang_id = $lang_id
            AND l.field_id = f.field_id
         ORDER BY f.field_order";
      $result = $db->sql_query($sql);

      while ($row = $db->sql_fetchrow($result))
      {
         // Return templated field
         $tpl_snippet = $this->process_field_row('change', $row);

         // Some types are multivalue, we can't give them a field_id as we would not know which to pick
         $type = (int) $row['field_type'];

         $template->assign_block_vars('profile_fields', array(
            'LANG_NAME'      => $row['lang_name'],
            'LANG_EXPLAIN'   => $row['lang_explain'],
            'FIELD'         => $tpl_snippet,
            'FIELD_ID'      => ($type == FIELD_DATE || ($type == FIELD_BOOL && $row['field_length'] == '1')) ? '' : 'pf_' . $row['field_ident'],
            'S_REQUIRED'   => ($row['field_required']) ? true : false)
         );
      }
      $db->sql_freeresult($result);
   }
Hat Jemand eine Idee wie ich mein Problem löse?
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Beitrag von issjut »

Ein letztes mal schiebe ich es noch nach oben

(ist aber kein verbindliches Versprechen ;-))

Nun kommt schon Leute... das muss doch jemand hinbekommen!

Oder versteht Ihr nicht was ich überhaupt möchte?
Benutzeravatar
Dawn
Mitglied
Beiträge: 125
Registriert: 25.11.2006 20:56
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Dawn »

Edit:

Ich habe es mal für mich gelöst. Allerdings im Bereich Profil, nicht in der Registrierung. Aber ich denke, das ist ähnlich.

Also in der ucp_profile_profile_info.html:

den

Code: Alles auswählen

<!-- BEGIN profile_fields --> 
....
<!-- END profile_fields -->   
genommen und folgendermaßen umgestaltet:

Code: Alles auswählen

<!-- BEGIN profile_fields -->
      <!-- IF  (( profile_fields.FIELD_ID == "pf_vollname") || ( profile_fields.FIELD_ID ==  "pf_eigenertitel")) -->

     <tr >     <td valign="top" class="row1" width="35%">
        <b class="genmed">{profile_fields.LANG_NAME}:</b><!-- IF profile_fields.S_REQUIRED --> <b>*</b><!-- ENDIF -->
            <!-- IF profile_fields.LANG_EXPLAIN --><br /><span class="gensmall">{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF -->
                  </td>
                <td class="row2">{profile_fields.FIELD} <!-- IF profile_fields.ERROR --><br /><span class="gensmall error">{profile_fields.ERROR}</span><!-- ENDIF --></td>
        </tr>

          <!-- ELSEIF ( profile_fields.FIELD_ID == "pf_chargeschichte") -->

          <tr>
        <td class="row1" colspan="2"><span class="gen"><font size="+1">Die Charaktergeschichte</font></span><br>
<br>
</td>
</tr>

     <tr>     <td valign="top" class="row1" width="35%">
        <b class="genmed">{profile_fields.LANG_NAME}:</b><!-- IF profile_fields.S_REQUIRED --> <b>*</b><!-- ENDIF -->
            <!-- IF profile_fields.LANG_EXPLAIN --><br /><span class="gensmall">{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF -->
                  </td>
                <td class="row2">{profile_fields.FIELD}
<!-- IF profile_fields.ERROR --><br /><span class="gensmall error">{profile_fields.ERROR}</span><!-- ENDIF --></td>
        </tr>
      <!-- ENDIF -->

<!-- END profile_fields -->
Zur Erklärung. Die Customfelder die ich hier verwendet habe heißen:

vollname, eigenertitel und chargeschichte

Das "pf_" ist notwendig, damit die Variablen angesprochen werden können.

Der Part mit dem ELSEIF ist da drin, da ich gerne eine Unterteilung in verschiedene Sektionen haben wollte. Auf diese Weise habe ich dann eine Zwischenüberschrift reingebracht und danach dann die Abfrage weiter.

Vielleicht hilft es ja wem.
---
Nachtrag: die Reihenfolge in der die Felder erscheinen wird weiterhin im ACP bestimmt. Diese Abfrage hier ändert daran nichts.

---

Edit 3: Ich habe gerade festgestellt, dass die Abfrage

Code: Alles auswählen

 <!-- ELSEIF ( profile_fields.FIELD_ID == "pf_ueber") --> 
Nicht funktioniert, wenn das Feld "ueber" ein Boolean ist. Weiß jemand wo der Denkfehler ist?
Nicht alles, was man nicht versteht, ist eine Frau
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Re: user_register profile_fields (CPF) einzeln darstellen! Wie?

Beitrag von issjut »

Hab das ganze jetzt nur mal überflogen, werde es aber die Tage mal versuchen. Danke erstmal!
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“