PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche einschränken nach bestimmten Profilfelder


GregorS
06.06.2004, 10:18
Hallo!

Ich möchte eine angepasste Membersuche machen.
Derzeit werden in der erweiterten Suche alle Profilfelder angezeigt. Gibt es eine Möglichkeit das Template so anzupassen, das nur bestimmte Profilfelder angezeigt werden?

Was ich meine:
Derzeit wird mit der variable $customfields ALLE Profilefelder ausgegeben.
Toll wäre es eine Variable zu haben, die nur ein bestimmtes Profilfeld ausgibt um danach zu suchen zB: $profilefield[field3] (geht leider nicht)
Damit kann ich meine Suche so weit einschränken wie ich es will..

danke!


Gregor

pogo
06.06.2004, 12:16
Du kannst bei jedem Profilfeld angeben, ob es durchsuchbar sein soll oder nicht.

Profilfelder verwalten->XYZ Ändern->Kann nach Einträgen in diesem Feld in der Benutzerliste gesucht werden?

Setzt du es auf Nein, kann auch nicht danach gesucht werden.

GregorS
06.06.2004, 12:28
Du kannst bei jedem Profilfeld angeben, ob es durchsuchbar sein soll oder nicht.

Profilfelder verwalten->XYZ Ändern->Kann nach Einträgen in diesem Feld in der Benutzerliste gesucht werden?

Setzt du es auf Nein, kann auch nicht danach gesucht werden.

Das ist mir schon klar das das geht!

Ich möchte unabhängig von der Standard-Suche (auch erweiterte Suche) eine eigene Suche mit meinen eigenen Suchkritärien zusammenstellen. Dazu habe ich schon in der memberlist.php dementsprechend einen eigenen Bereich geschaffen der dann ein anderes Template verwendet. Jetzt benötige ich nur mehr die Anpassungen im Template selbst........
Somit kann ich dann eine eigene Suche per php-Aufruf generieren: http://www.domain.com/forum/memberlist.php?do=spezialsearch

thx

Gregor

GregorS
08.06.2004, 22:20
Hallo!

Hmm, verwunderlich, warum das in die Hacking-Diskussion verschoben worden ist, aber egal.

Ich weiss nicht ob ich verstanden worden bin, daher versuche ich es nochmals zu erklären.

Ich suche eine Möglichkeit mehrere Suchmasken zusammenzustellen, ohne das die anderen Suchoptionen darunter leiden.

zb.

suche1:
Benutzersuche nach Ort und Land

suche2:
Benutzersuche nach Land und Biografie

usw....

Normalerweise kann man eine Ausgabe eines Profilfeldes zB im Template MEMBERINFO mit $userinfo[fieldX] ausgeben. Gibt es die gleiche Möglichkeit auch "global" über sämtliche Benutzer nur nach einem oder mehr Profilfelder zu suchen??

danke!

Gregor

Mystics
08.06.2004, 23:12
Es gibt keine solche Variable.

Du kannst das, was du möchtest, nur durch Verändern (=Hacken) der memberlist.php erreichen.

Dazu müsstest du z.B. das entsprechend ändern: $profilefields = $DB_site->query("
SELECT *
FROM " . TABLE_PREFIX . "profilefield
WHERE searchable = 1
AND form = 0
" . iif(can_moderate(), '', 'AND hidden = 0') . "
ORDER BY displayorder
");
Zum Beispiel: if ($_REQUEST['special'] == 'special1')
{
$profilefields = $DB_site->query("
SELECT *
FROM " . TABLE_PREFIX . "profilefield
WHERE profilefieldid = X
AND form = 0
" . iif(can_moderate(), '', 'AND hidden = 0') . "
ORDER BY displayorder
");
}
else if ($_REQUEST['special'] == 'special2')
{
$profilefields = $DB_site->query("
SELECT *
FROM " . TABLE_PREFIX . "profilefield
WHERE profilefieldid = Y
AND form = 0
" . iif(can_moderate(), '', 'AND hidden = 0') . "
ORDER BY displayorder
");
}
else
{
$profilefields = $DB_site->query("
SELECT *
FROM " . TABLE_PREFIX . "profilefield
WHERE searchable = 1
AND form = 0
" . iif(can_moderate(), '', 'AND hidden = 0') . "
ORDER BY displayorder
");
}X und Y bei 'special1' und 'special2' wären dann die Profilfelder, die angezeigt werden sollen.

GregorS
08.06.2004, 23:18
Hallo!

Super, danke!

da kann ich schon was zaubern! ;)

hab es jetzt so gelöst:


if ($_REQUEST['do'] == 'spsearch')
{
if (!$vboptions['usememberlistadvsearch'])
{
eval(print_standard_error('error_nomemberlistsearch'));
}

$bgclass = 'alt1';
// get extra profile fields
$profilefields = $DB_site->query("
SELECT *
FROM " . TABLE_PREFIX . "profilefield
WHERE profilefieldid = 2
OR profilefieldid = 3
OR profilefieldid = 5
OR profilefieldid = 8
AND form = 0
" . iif(can_moderate(), '', 'AND hidden = 0') . "
ORDER BY displayorder
");


Somit habe ich Profilfeld 2,3,5 und 8 als Suchoption definiert :)


Vielen Dank für die Information!


Gregor