Seite 1 von 1

user_register profile_fields (CPF) einzeln darstellen! Wie?

Verfasst: 19.02.2008 11:18
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:

Verfasst: 19.02.2008 11:30
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

Verfasst: 19.02.2008 11:53
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^^

Verfasst: 23.02.2008 15:21
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?

Verfasst: 16.04.2008 21:02
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?

Verfasst: 22.04.2008 03:39
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?

Verfasst: 29.12.2008 19:18
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?

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

Verfasst: 01.01.2009 16:08
von issjut
Hab das ganze jetzt nur mal überflogen, werde es aber die Tage mal versuchen. Danke erstmal!