- Affected Version
- WoltLab Suite 5.3
Hallo Woltlab-Gemeinde,
bezüglich ein von mir neu geplantes Projekt benötige ich eine Such- / Filterfunktion. Diese ist bereits auch als Grundgerüst per Template auf der Seite includiert worden. Lediglich bedarf es dies noch anzupassen, dass alle benötigten Funktionen auch funktionieren. Da es sich hierbei aber um eine komplexe Such- / Filterfunktion handelt benötige ich dazu von euch einen Gedankenanstoß, Lösungsvorschläge oder Ansätze um eines gleichen zu bewerkstelligen. Doch dazu erst einmal vorab ein Screenshot wie es bisher aussieht:
Wie zu erkennen befinden sich mehrere Suchkriterien in unterschiedlichen Formularen. Optimal wäre es natürlich wenn diese übergreifend mit einen Absende-Button abgefragt werden könnten bzw. ggfls. sogar bereits bei der Eingabe etwaige Ergebnisse entsprechend aussortiert werden würden. Bzgl. letzteren denk ich aber das dies wahrscheinlich nicht möglich sein wird. Die Funktion "Zeige" wurde schlicht mit verlinkten Buttons auf eine bereits ausgeführte Suche bewerkstelligt und funktioniert. Genauso sieht dies beim Benutzernamen aus, wo bereits mit der Eingabe von min. 3 Buchstaben entsprechende Mitglieder aufgeführt werden. Der Filter (auf-/absteigend) ist ebenfalls funktionstüchtig. Bleibt lediglich die Suchfunktion nach Land und dem Alter (von / bis) übrig, welche bisher leider nicht funktioniert. Alles im allen wäre es mir natürlich lieber, wenn sämtliches in einen Formular abgesendet werden könnte um so spezifischer Mitglieder suchen zu können.
Der bisherige Quellcode des Templates
Anmerkung: Der Quellcode ist, wie bereits o.g. natürlich nicht vollständig funktionstüchtig!
<div class="gridLayout row">
<div class="gridBox col-md-3">
<h2 class="gridBoxTitle">Zeige</h2>
<div class="gridBoxContent">
<nav>
<ol class="gridBoxMenu">
{* Filter: Geschlechtsauswahl *}
<a rel="nofollow" href="index.php?members-list/3/" class="button">Männer</a>
<a rel="nofollow" href="index.php?members-list/4/" class="button">Frauen</a>
<a rel="nofollow" href="index.php?members-list" class="button">Alle</a>
</ol>
</nav>
</div>
</div>
</div>
<br>
<div class="gridLayout row">
<div class="gridBox col-md-3">
<h2 class="gridBoxTitle">Benutzername</h2>
<div class="gridBoxContent">
<nav>
<ol class="gridBoxMenu">
{* Filter: Benutzername *}
{assign var=encodedLetter value=$letter|rawurlencode}
<section class="jsOnly box">
<form method="post" action="{link controller='UserSearch'}{/link}" style="width: 150px; float: left;">
<input type="text" id="searchUsername" name="username" class="long" placeholder="{lang}wcf.user.username{/lang}">
{@SECURITY_TOKEN_INPUT_TAG}
</form>
</section>
</ol>
</nav>
</div>
</div>
<div class="gridBox col-md-3">
<h2 class="gridBoxTitle">Land</h2>
<div class="gridBoxContent">
<nav>
<ol class="gridBoxMenu">
<section class="jsOnly box">
<select id="countryFlags_country" name="values[countryFlags_country]">
<option value="">(Keine Auswahl)</option>
<option value="noselection" selected="">(Keine Auswahl)</option>
<option value="Abkhazia">Abchasien</option>
<option value="Afghanistan">Afghanistan</option>
<option value="Aland">Aland</option>
<option value="Albania">Albanien</option>
{* ... (gekürzt) ... *}
</select>
</section>
</ol>
</nav>
</div>
</div>
<div class="gridBox col-md-3">
<h2 class="gridBoxTitle">Alter</h2>
<div class="gridBoxContent">
<nav>
<ol class="gridBoxMenu">
{* Filter: Alter *}
<input type="number" id="{$option->optionName}" name="values[{$option->optionName}][ageFrom]" value="{@$valueAgeFrom}" placeholder="{lang}wcf.user.birthday.age.from{/lang}" min="0" max="120" class="tiny">
<input type="number" id="{$option->optionName}_age_to" name="values[{$option->optionName}][ageTo]" value="{@$valueAgeTo}" placeholder="{lang}wcf.user.birthday.age.to{/lang}" min="0" max="120" class="tiny">
<script data-relocate="true">
$(function() {
$('#{$option->optionName}').parents('dl:eq(0)').find('> dt > label').text('{jslang}wcf.user.birthday.age{/jslang}');
});
</script>
</ol>
</nav>
</div>
</div>
<div class="gridBox col-md-3">
<h2 class="gridBoxTitle">Filter</h2>
<div class="gridBoxContent">
<nav>
<ol class="gridBoxMenu">
{* Filter: Auf-/Absteigend *}
<form method="post" action="{if $searchID}{link controller='MembersList' id=$searchID}{/link}{else}{link controller='MembersList'}{/link}{/if}">
<div class="boxContent">
<dl>
<dt></dt>
<dd>
<select name="sortOrder">
<option value="ASC"{if $sortOrder == 'ASC'} selected{/if}>{lang}wcf.global.sortOrder.ascending{/lang}</option>
<option value="DESC"{if $sortOrder == 'DESC'} selected{/if}>{lang}wcf.global.sortOrder.descending{/lang}</option>
</select>
</dd>
</dl>
</div>
<div class="formSubmit" style="text-align: center;">
<input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s">
<input type="hidden" name="letter" value="{$letter}">
</div>
</form>
</ol>
</nav>
</div>
</div>
</div>
Display More
Mir ist bewusst, dass hier das ein oder andere Formular im Quellcode fehlt und so natürlich auch nicht funktionieren kann. Dies obliegt schlicht daran, dass mit dazu die Abfragemöglichkeiten (action=???, etc.) nicht bekannt sind um entsprechend das Land bzw. Alter (von / bis) mittels abzufragen. Geschweige denn wie es möglich wäre all jenes in einen Formular zu verschachteln. Da Land und Alter in den Profilfeldern hinterlegt werden (müssen), wird es m.E. doch auch möglich sein mit der intrigierten Suchfunktion auch entsprechend nach eines gleichen suchen zu können. Für jegliche Hilfe bin ich bereits vorab schon sehr dankbar!
Meine Frage(n)
- Ist es Umsetzbar nach Land und Alter (von / bis) zu mittels der Suchfunktion zu suchen?
- Gäbe es eine Möglichkeit all dieses auch innerhalb eines Formulars zu bewerkstelligen?
Gruss,
Andreas