(gelöst) FEUListing
(gelöst) FEUListing
Ich habe FEU Listing installiert und es auch versuchsweise anzeigen lassen. Mir gefällt es jedoch nicht, wie es die User anzeigt. Ich weiß zwar, wo das Template ist, um das zu ändern, aber ich weiß nicht, wie ich das dort formulieren muß, um die Useranzeige zu bekommen, die ich haben möchte. Kann mir da jemand weiterhelfen?
Ich möchte folgendes: nur den Benutzernamen ausgeben.
Schön wäre es noch, wenn man zu dem Benutzernamen einen Link machen könnte, wo man quasi eine PN schicken kann, also eine Email, ohne daß die Emailadresse des Benutzernamens für die anderen sichtbar ist. Sowas gibt es ja in Foren. Geht das hiermit auch zu erstellen?
Ich möchte folgendes: nur den Benutzernamen ausgeben.
Schön wäre es noch, wenn man zu dem Benutzernamen einen Link machen könnte, wo man quasi eine PN schicken kann, also eine Email, ohne daß die Emailadresse des Benutzernamens für die anderen sichtbar ist. Sowas gibt es ja in Foren. Geht das hiermit auch zu erstellen?
Last edited by Helmi on Sun Apr 27, 2008 6:35 pm, edited 1 time in total.
Re: FEUListing
Das aktuelle Standard-Template sieht so aus:Helmi wrote: Ich habe FEU Listing installiert und es auch versuchsweise anzeigen lassen. Mir gefällt es jedoch nicht, wie es die User anzeigt. Ich weiß zwar, wo das Template ist, um das zu ändern, aber ich weiß nicht, wie ich das dort formulieren muß, um die Useranzeige zu bekommen, die ich haben möchte. Kann mir da jemand weiterhelfen?
Ich möchte folgendes: nur den Benutzernamen ausgeben.
Code: Select all
<!-- Start FrontEndUserListing Display Template -->
<table width="100%" border="1">
{foreach from=$items item=entry}
<tr>
<td>{$entry.first_name} {$entry.last_name}<br>
<a href="mailto:{$entry.Email}">{$entry.last_name}</a><br></td>
<td>{$entry.home_phone}<br> {$entry.cell_phone}</td>
<td>{$entry.icq}</td>
<td>{$entry.ip}</td>
</tr>
{/foreach}
</table>
<!-- End FrontEndUserListing Display Template -->';
Nein, zumindest nicht auf einfache Weise.Helmi wrote: Schön wäre es noch, wenn man zu dem Benutzernamen einen Link machen könnte, wo man quasi eine PN schicken kann, also eine Email, ohne daß die Emailadresse des Benutzernamens für die anderen sichtbar ist. Sowas gibt es ja in Foren. Geht das hiermit auch zu erstellen?
Thomas
Re: FEUListing
In dieser Liste ist aber der Benutzername nicht mit drin. Das ist das Problem. Es zeigt Vor- und Nachnamen an, aber nicht den Nicknamen.
Re: FEUListing
Yepp, ich weiß zwar nicht warum daran keiner gedacht hat, aber das FeUserListing-Modul kann aktuell keine Benutzenamen ausgeben.Helmi wrote: In dieser Liste ist aber der Benutzername nicht mit drin. Das ist das Problem. Es zeigt Vor- und Nachnamen an, aber nicht den Nicknamen.
Ich habe dazu das Modul etwas modifiziert.
Das Problem liegt eigentlich nur in einer "simplen" Änderung der Datenbankabfrage.
Ich weiß nicht, ob meine Lösung perfekt ist, aber bei mir funktionierts.
Hier die Anleitung:
Öffne Datei modules/FrontEndUserListing/FrontEndUserListing.module.php.
In den Zeilen 273-290 steht folgendes:
Code: Select all
$entryarray = array();
$query = "SELECT p.*, b.groupid FROM "
.cms_db_prefix()."module_feusers_properties p, "
.cms_db_prefix()."module_feusers_belongs b, "
.cms_db_prefix()."module_feusers_groups g "
."WHERE b.userid = p.userid "
."AND b.groupid = g.id";
/* if (isset($grpid))
{
$query .= " AND g.id=" . $grpid;
}
*/ if (isset($grouplistNumbers))
{
$query .= " AND g.id in ($grouplistNumbers[0]";
foreach ($grouplistNumbers as $grpid) {
$query .= ",".$grpid;
}
$query .= ")";
}
Code: Select all
# added by NaN:
# My query (to get the username into the $data array; maybe there is some easier way; feel free for any sugestions):
$query2 = '';
$query = "SELECT ".cms_db_prefix()."module_feusers_users.username,
".cms_db_prefix()."module_feusers_belongs.userid,
".cms_db_prefix()."module_feusers_properties.title,
".cms_db_prefix()."module_feusers_properties.data,
".cms_db_prefix()."module_feusers_belongs.groupid,
".cms_db_prefix()."module_feusers_properties.id
FROM ".cms_db_prefix()."module_feusers_users
LEFT OUTER JOIN ".cms_db_prefix()."module_feusers_belongs
ON ".cms_db_prefix()."module_feusers_belongs.userid = ".cms_db_prefix()."module_feusers_users.id
AND (";
$i=0;
foreach ($grouplistNumbers as $grpid)
{
$i++;
$query2 .= cms_db_prefix()."module_feusers_belongs.groupid = '". $grpid ."'";
if($i<sizeof($grouplistNumbers))
$query2 .= " OR ";
}
$query .= $query2.") LEFT OUTER JOIN ".cms_db_prefix()."module_feusers_properties
ON ".cms_db_prefix()."module_feusers_properties.userid = ".cms_db_prefix()."module_feusers_belongs.userid
AND (".$query2.")";
if (isset($grouplistNumbers))
{
$query .= " AND ".cms_db_prefix()."module_feusers_belongs.groupid in ($grouplistNumbers[0]";
foreach ($grouplistNumbers as $grpid)
{
$query .= ",".$grpid;
}
$query .= ")";
}
$query .= "INNER JOIN ".cms_db_prefix()."module_feusers_grouppropmap ON ".cms_db_prefix()."module_feusers_grouppropmap.group_id = '". $grpid ."'
ORDER BY ".cms_db_prefix()."module_feusers_grouppropmap.sort_key";
Das Template sieht bei mir dann folgendermaßen aus:
Code: Select all
<table class="userlist">
<thead>
<tr>
<th>{$listheader.username}</th>
</tr>
</thead>
<tbody>
{foreach from=$items item=entry}
<tr class="row{$entry.rowclass}">
{foreach from=$entry item=prop key=key}
{if $key=='username'}
<td><a href="{$entry.detlink}">{$prop}</a></td>
{/if}
{/foreach}
</tr>
{/foreach}
</tbody>
</table>
Re: FEUListing
ich hab das so gemacht, aber es zeigt überhaupt nichts an.
Also, 1. habe ich die genannten Zeilen durch den neuen Code ersetzt
2. habe ich das ins Summary Template geschrieben:
{$listheader.username}
{foreach from=$items item=entry}
{foreach from=$entry item=prop key=key}
{if $key=='username'}
{$prop}
{/if}
{/foreach}
{/foreach}
Und 3. habe ich das Modul in einer Seite so aufgerufen:
{cms_module module=FrontEndUserListing group=Mitglied}
Es zeigt dann nur eine weiße Seite an, gar keine Ausgabe.
Also, 1. habe ich die genannten Zeilen durch den neuen Code ersetzt
2. habe ich das ins Summary Template geschrieben:
{$listheader.username}
{foreach from=$items item=entry}
{foreach from=$entry item=prop key=key}
{if $key=='username'}
{$prop}
{/if}
{/foreach}
{/foreach}
Und 3. habe ich das Modul in einer Seite so aufgerufen:
{cms_module module=FrontEndUserListing group=Mitglied}
Es zeigt dann nur eine weiße Seite an, gar keine Ausgabe.
Re: FEUListing
Hm,
eventuell hab ich da noch etwas anderes geändert.
Ich schau da nochmal nach.
Gibt es die User-Gruppe "Mitglied" überhaupt bzw. sind dort auch User drin?
eventuell hab ich da noch etwas anderes geändert.
Ich schau da nochmal nach.
Gibt es die User-Gruppe "Mitglied" überhaupt bzw. sind dort auch User drin?
Re: FEUListing
ja, die gibt es, und es sind auch User drin. Mit demselben Aufruf hatte ich vorher ja auch die ganze Liste aufgerufen. Nur zeigt es dann all die privaten Daten an wie realer Name, Emailadresse usw., und das will ich nicht. Es sollen nur die Benutzernamen angezeigt werden.
Re: FEUListing
Also das Einzige, was ich noch vergessen hatte war:
In der Zeile 268 (nach der foreach-Schleife) folgendes einfügen
$listheader['username'] = $feusers->lang('username');
Und in Zeile 308 (vor $this->debugarray($data, "Processed user data");) noch das hier
$rowclass=1;
foreach($data as $k=>$v)
{
$data[$k]['rowclass']=$rowclass;
$rowclass=($rowclass==2?1:2);
}
$this->smarty->assign('row',1);
Aber das dürfte eigentlich nicht der Grund dafür sein.
Sowas passiert meistens dann, wenn ein Modul fehlerhaft ist.
Da ich das Modul mit diesen Änderungen ohne Probleme im Einsatz habe, glaube ich nicht, dass es an meinen Änderungen liegt. Selbst wenn mein Code Fehler enthält, sollte ja wenigstens Deine Seite angezeigt werden. (schlimmstenfalls ohne User-Liste)
Evtl. die Datei nochmal hochladen.
Und den Zwischenspeicher löschen.
Ich habs gerade nochmal an einer "frischen" lokalen Version getestet.
Bei mir funktionierts.
Welche Version von FrontEndUserListing verwendest Du denn?
Und welche CMS Version?
In der Zeile 268 (nach der foreach-Schleife) folgendes einfügen
$listheader['username'] = $feusers->lang('username');
Und in Zeile 308 (vor $this->debugarray($data, "Processed user data");) noch das hier
$rowclass=1;
foreach($data as $k=>$v)
{
$data[$k]['rowclass']=$rowclass;
$rowclass=($rowclass==2?1:2);
}
$this->smarty->assign('row',1);
Aber das dürfte eigentlich nicht der Grund dafür sein.
Dann prüfe nochmal den Quellcode.Helmi wrote: Es zeigt dann nur eine weiße Seite an, gar keine Ausgabe.
Sowas passiert meistens dann, wenn ein Modul fehlerhaft ist.
Da ich das Modul mit diesen Änderungen ohne Probleme im Einsatz habe, glaube ich nicht, dass es an meinen Änderungen liegt. Selbst wenn mein Code Fehler enthält, sollte ja wenigstens Deine Seite angezeigt werden. (schlimmstenfalls ohne User-Liste)
Evtl. die Datei nochmal hochladen.
Und den Zwischenspeicher löschen.
Ich habs gerade nochmal an einer "frischen" lokalen Version getestet.
Bei mir funktionierts.
Welche Version von FrontEndUserListing verwendest Du denn?
Und welche CMS Version?
Re: FEUListing
ich habe die neue CMS-Version 1.2.4 und von FEUListing 0.4-beta-2.
Habe das Original nochmals neu installiert und fange die Schritte noch einmal von vorne an. Vielleicht klappt es ja dann...
Habe das Original nochmals neu installiert und fange die Schritte noch einmal von vorne an. Vielleicht klappt es ja dann...
Re: FEUListing
jetzt zeigt es an:
Warning: Invalid argument supplied for foreach()
Hab ich da irgendwo was falsch eingetragen?
PS: er meldet die Zeile 329 als Problem an, und die enthält:
foreach($data as $k=>$v)
Unter der Fehlermeldung heißt es:
Benutzername:
und dann folgen Bindestriche (genau die Anzahl der Mitglieder), aber keine Namen
Warning: Invalid argument supplied for foreach()
Hab ich da irgendwo was falsch eingetragen?
PS: er meldet die Zeile 329 als Problem an, und die enthält:
foreach($data as $k=>$v)
Unter der Fehlermeldung heißt es:
Benutzername:
und dann folgen Bindestriche (genau die Anzahl der Mitglieder), aber keine Namen
Last edited by Helmi on Sun Apr 27, 2008 3:31 pm, edited 1 time in total.
Re: FEUListing
Ah, schon wieder was vergessen. Ich sollte meine Änderungen besser kommentieren 
(Meine Zeilenangaben beziehen sich übrigens immer auf das Original-Script. Könnte sein, dass Du da außerdem etwas in die falsche Zeile eingefügt hast.)
In Zeile 520 (in der Funktion function SortUsers()) steht wieder eine foreach-Schleife. Dort einfach folgendes hinzufügen:
// create the user array from the raw data
foreach ($rawdata as $row)
{
$userid = $row['userid']; // user id of the current data bit
$users[$userid][$row['title']] = $row['data'];
$users[$userid]['username'] = $row['username']; # <- added by NaN
}
Falls da immer noch Fehler auftreten, probier mal das Script hier im Anhang.
(Dateiendung noch auf php ändern)

(Meine Zeilenangaben beziehen sich übrigens immer auf das Original-Script. Könnte sein, dass Du da außerdem etwas in die falsche Zeile eingefügt hast.)
In Zeile 520 (in der Funktion function SortUsers()) steht wieder eine foreach-Schleife. Dort einfach folgendes hinzufügen:
// create the user array from the raw data
foreach ($rawdata as $row)
{
$userid = $row['userid']; // user id of the current data bit
$users[$userid][$row['title']] = $row['data'];
$users[$userid]['username'] = $row['username']; # <- added by NaN
}
Falls da immer noch Fehler auftreten, probier mal das Script hier im Anhang.
(Dateiendung noch auf php ändern)
- Attachments
-
[The extension txt has been deactivated and can no longer be displayed.]
Re: FEUListing
Herzlichen Dank für Deine Mühe! Mit dem heruntergeladenen Script funktioniert es! Ich mußte nur im Template den Link auf die Detailseite noch rausnehmen, sonst hat es nämlich über den Link doch noch die realen Daten der User angezeigt.