Hallo, wie kann ich im Backend unter Benutzer eine Reihe hinzufügen?
Würde gerne dort auch das land anzeigen lassen um schneller zwischen den Kunden zu sortieren.
Hallo, lasse mir im Backend unter Benutzer anstatt der Telefonnummer das Land anzeigen. Das funktioniert auch. Nur leider kann ich in der Spalte nicht suchen. Es werden keine Ergebnisse angezeigt obwohl das Land vorhanden ist. Kann mir jemand sagen, was ich noch ändern muss damit die Suche funktioniert?
Dazu müsste man schon wissen, was Du geändert hast. Ich gehe einfach mal davon aus, dass Du es in etwa so
<td valign="top" class="[{ $listclass}]"><div class="listitemfloating"><a href="Javascript:top.oxid.admin.editThis('[{ $listitem->oxuser__oxid->value }]');" class="[{ $listclass}]">[{ $listitem->oxuser__oxcountry->value }]</a></div></td>
in user_list.tpl eingetragen hast, was als Ausgabe des Landes in der Liste dann funktionieren dürfte. Die Suche findet allerdings in der Tabelle oxuser statt, weshalb die Eingabe dann in etwa so aussehen könnte:
<td valign="top" class="listfilter">
<div class="r1"><div class="b1">
<input class="listedit" type="text" size="15" maxlength="128" name="where[oxuser][oxcountryid]" value="[{ $where.oxuser.oxcountryid }]">
</div></div>
</td>
und die Sortierung in etwa so:
<td class="listheader"><a href="Javascript:top.oxid.admin.setSorting( document.search, 'oxuser', 'oxcountryid', 'asc');document.search.submit();" class="listheader">[{ oxmultilang ident="GENERAL_TELEPHONE" }]</a></td>
Nun muss die Abfrage und damit die Methode _prepareWhereQuery($aWhere, $sQueryFull){…} angepasst werden, weil mit obigem Eintrag nur
oxuser__oxcountryid
zur Verfügung steht.
Du kannst mal versuchen, die gesamte Methode _prepareWhereQuery in user_list.php mit Folgendem zu ersetzen:
public function _prepareWhereQuery($aWhere, $sQueryFull)
{
$aNameWhere = null;
if (isset($aWhere['oxuser.oxlname']) && ($sName = $aWhere['oxuser.oxlname'])) {
// check if this is search string (contains % sign at begining and end of string)
$blIsSearchValue = $this->_isSearchValue($sName);
$sName = $this->_processFilter($sName);
$aNameWhere['oxuser.oxfname'] = $aNameWhere['oxuser.oxlname'] = $sName;
// unsetting..
unset($aWhere['oxuser.oxlname']);
}
$sQL = null;
if(isset($aWhere['oxuser.oxcountryid'])){
$sQL = "oxuser JOIN oxcountry ON oxcountry.oxtitle LIKE CONCAT('".$aWhere['oxuser.oxcountryid']."') and oxcountry.oxid = oxuser.oxcountryid where 1";
unset($aWhere['oxuser.oxcountryid']);
}
$sQ = parent::_prepareWhereQuery($aWhere, $sQueryFull);
if ($aNameWhere) {
$aVal = explode(' ', $sName);
$sQ .= ' and (';
$sSqlBoolAction = '';
$myUtilsString = oxRegistry::get("oxUtilsString");
foreach ($aNameWhere as $sFieldName => $sValue) {
//for each search field using AND anction
foreach ($aVal as $sVal) {
$sQ .= " {$sSqlBoolAction} {$sFieldName} ";
//for search in same field for different values using AND
$sSqlBoolAction = ' or ';
$sQ .= $this->_buildFilter($sVal, $blIsSearchValue);
// trying to search spec chars in search value
// if found, add cleaned search value to search sql
$sUml = $myUtilsString->prepareStrForSearch($sVal);
if ($sUml) {
$sQ .= " or {$sFieldName} ";
$sQ .= $this->_buildFilter($sUml, $blIsSearchValue);
}
}
}
// end for AND action
$sQ .= ' ) ';
}
if($sQL)$sQ = str_replace( 'oxuser where 1', $sQL, $sQ);
return $sQ;
}
[{ oxmultilang ident="GENERAL_TELEPHONE" }]
wäre noch anzupassen…
Danke @foxido.de. Musste nur den Code in der user_list.php noch ändern und schon funktionierte es.
Gerne. Bei einem Update bitte daran denken, dass dies evtl. wieder überschrieben wird, oder obiges als Modul auslagern. 