Webseiten und ZubehörProgrammierung UmsetzungPflege Backups BetreuungJoomla-Spezialist

JoomlaSchnipsel

Unfertiges "Tutorial", aber der Code klappt schon mal so weit

Vorausssetzung: Mindestens 1 registierter Joomla-User.

Möglichkeit im Frontend das eigene Profil zu bearbeiten.

Aktiviertes Plugin Benutzer - Profile

Ein Feld für anzuzeigende Info unterhalb Benutzerprofilfelder zum Bearbeiten des Benutzerprofils aktivieren. Alle anderen deaktiviere ich erst mal für die Einrichtung und Tests. Können Sie nachträglich...

Plugin Benutzer Profile Optionales Feld fuer Info aktivieren

Die Benutzer können nun in ihrem Profil in Feld Über mich Infos eintragen. Im Bild ist das Backend, aber nur weil ich zu faul bin, das im Frontend zu simulieren:

Benutzer Profil Info eintragen

Ein Blick in die speichernde Datenbanktabelle #__user_profiles zeigt,

Plugin Benutzer Profile Datenbanktabelle user profiles

dass zum User mit ID 120 im Profilfeld aboutme die Info gespeichert wurde.

Nach dieser Anleitung bis inklusive Überschrift Modulstil anlegen, nicht weiter,

ghsvs.de/programmierer-schnipsel/joomla/114-modulstil-zum-includen-eigener-php-dateien-verwenden

lege ich mir die Grundstruktur an und benenne schließlich die Beispieldatei mein-erster-test.php in user-info.php um.

Zurück zur Anleitung und überall statt mein-erster-test das user-info verwenden.

Erster Test.

(Anmerkung nebenbei: Bzgl. der von mir verwendeten Positionen user-info-test und user-info unangenehmes Joomla-Verhalten in ISIS gefunden
http://www.joomla-bugs.de/forum/index.php/topic,685.0.html)

{loadposition user-info-test}

{loadposition user-info}

Unfertiges "Tutorial", aber der Code klappt schon mal so weit

Vorausssetzung: Mindestens 1 registierter Joomla-User.

Möglichkeit im Frontend das eigene Profil zu bearbeiten.

Aktiviertes Plugin Benutzer - Profile

Ein Feld für anzuzeigende Info unterhalb Benutzerprofilfelder zum Bearbeiten des Benutzerprofils aktivieren. Alle anderen deaktiviere ich erst mal für die Einrichtung und Tests. Können Sie nachträglich...

Plugin Benutzer Profile Optionales Feld fuer Info aktivieren
Plugin Benutzer Profile Optionales Feld fuer Info aktivieren

Die Benutzer können nun in ihrem Profil in Feld Über mich Infos eintragen. Im Bild ist das Backend, aber nur weil ich zu faul bin, das im Frontend zu simulieren:

Benutzer Profil Info eintragen
Benutzer Profil Info eintragen

Ein Blick in die speichernde Datenbanktabelle #__user_profiles zeigt,

Plugin Benutzer Profile Datenbanktabelle user profiles
Plugin Benutzer Profile Datenbanktabelle user profiles

dass zum User mit ID 120 im Profilfeld aboutme die Info gespeichert wurde.

Nach dieser Anleitung bis inklusive Überschrift Modulstil anlegen, nicht weiter,

ghsvs.de/programmierer-schnipsel/joomla/114-modulstil-zum-includen-eigener-php-dateien-verwenden

lege ich mir die Grundstruktur an und benenne schließlich die Beispieldatei mein-erster-test.php in user-info.php um.

Zurück zur Anleitung und überall statt mein-erster-test das user-info verwenden.

Erster Test.

(Anmerkung nebenbei: Bzgl. der von mir verwendeten Positionen user-info-test und user-info unangenehmes Joomla-Verhalten in ISIS gefunden
http://www.joomla-bugs.de/forum/index.php/topic,685.0.html)

Erster Test zu Beitrag "User-Infos aus Profil anzeigen"

Ich bin user-info-test.php

<?php
/* user-info-test.php */

defined('_JEXEC') or die;
echo '<p>Ich bin user-info-test.php</p>';

Verbesserungsvorschläge und Feature-Wünsche sind willkommen.

Alle nicht explizit als fertige Erweiterung markierten Skripte und Codes von www.ghsvs.de dienen als Ansätze / Ideen für eigene Ausarbeitung. GHSVS bzw. die jeweiligen Autoren übernehmen keinerlei Garantien beim Einsatz Ihrer kostenlosen Erweiterungen, Programme, Codes und Skripte, helfen aber gerne bei Rückfragen, soweit zeitlich möglich.

Modul zu Beitrag "User-Infos aus Profil anzeigen"

  1. Name: Richardt Rösepöse

    Über mich: Bin bis Dings außer Haus. War ja auch eh selten da. Wird keinem auffallen.

    Buchempfehlung: Lesebuch

    Telefon: 123456789

  2. Name: Re:Later

    Geboren am: 2015-09-15 22:00:00

    Buchempfehlung: Liese und die Lesenden

    Telefon: quack 54664-89879779-

    Bundesland: Senftlingen

<?php
/* user-info.php */

defined('_JEXEC') or die;

// Welche Felder im Frontend ausgeben?
// Um Feld zu deaktivieren Gatterzeichen vor Zeile setzen.
// Siehe deaktiviertes Bsp. postal_code
$fields = array(
 'address1',
 'address2',
 'city',
 'region',
 'country',
# 'postal_code',
 'phone',
 'website',
 'favoritebook',
 'aboutme',
 'dob', //Geb.
);

// Datenbankabfrage

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$selects = array(
 'p.profile_key',
 'p.profile_value',
 'u.name',
 'u.id',
);

$selects = implode(',', $db->qn($selects));
$query->select($selects)->from($db->qn('#__user_profiles', 'p'));

// Setzte RIGHT statt LEFT, falls auch Benutzer ohne Eintrag
// angezeigt werden sollen. Dann nur der Name.
$query->join('LEFT', $db->qn('#__users', 'u') . ' ON p.user_id = u.id');

// Nur aktivierte User.
$query->where('u.activation IN (' . $db->quote('') . ', ' . $db->quote('0') . ')');

// Keine geblockten User.
$query->where('u.block = 0');

// Ergebnisse holen.
$db->setQuery($query);
$results = $db->loadObjectList();

// Plugin-Sprachplatzhalter laden
JFactory::getLanguage()->load('plg_user_profile', JPATH_ADMINISTRATOR);

// Leider sind paar Sprachplatzhalter wegen abweichenden
// Unterstrichen extra anzugeben,
// !'name' muss mindestens in diesem Array drin bleiben!
$langStrings = array(
 'website' => 'PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL',
 'favoritebook' => 'PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL',
 'aboutme' => 'PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL',
 'name' => 'Name',
);

// Daten sammeln.
$collect = array();
foreach ($results as $key => $result)
{
 // Wir müssen nach ID sammeln, da Name auch doppelt sein kann.
 $id = $result->id;
 
 // Name als erstes ablegen. Der wird ggf.
 // falls oben RIGHT im DB-Join, immer ausgegeben.
 $collect[$id][$langStrings['name']] = $result->name;
 
 $value = trim(json_decode($result->profile_value));
 
 // Gar nix eingetragen? Dann kein weiteres Sammeln.
 if (!$value) continue;
 
 // Erst mal profile. aus Feldwerten des profile_key raus
 $label = str_replace('profile.', '', $result->profile_key);
 
 // Soll angezeigt werden?
 if (in_array($label, $fields))
 {
  // Ergibt bspw. Joomla-Sprachplatzhalter
  // PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL
  if (isset($langStrings[$label]))
  {
   $label = $langStrings[$label];
  }
  else
  {
   $label = 'PLG_USER_PROFILE_FIELD_' . $label . '_LABEL';
  }
  
  $collect[$id][$label] = $value;
 }
}

// Daten ausgeben
$html = array();
if (!count($collect))
{
 $html[] = '<p class="alert alert-info">Derzeit keine Daten hinterlegt.</p>';
}
else
{
 $html[] = '<ol>';
 foreach ($collect as $user)
 {
  $html[] = '<li>';
  foreach ($user as $label => $value)
  {
   $html[] = '<p>' . JText::_($label) . ': ';
   $html[] = $value . '</p>';
  }
  $html[] = '</li>';
 }
 $html[] = '</ol>';
}

echo implode("\n", $html);

Verbesserungsvorschläge und Feature-Wünsche sind willkommen.

Alle nicht explizit als fertige Erweiterung markierten Skripte und Codes von www.ghsvs.de dienen als Ansätze / Ideen für eigene Ausarbeitung. GHSVS bzw. die jeweiligen Autoren übernehmen keinerlei Garantien beim Einsatz Ihrer kostenlosen Erweiterungen, Programme, Codes und Skripte, helfen aber gerne bei Rückfragen, soweit zeitlich möglich.