Hallo,
ich habe den realty_manager installiert und der funktioniert so weit auch.
Nun würde ich die Seite gerne zweisprachig machen, insbesondere auch die Immobiliensuche. Funktioniert so halbwegs.
Nur habe ich das Problem, dass im Suchformular bei dem Haustyp-Liste und der Städte-Liste leider die Werte in beiden Sprache angezeigt werden. Das macht natürlich keinen Sinn, denn das eine sind ja die Übersetzungen der deutschen Werte, sprich, es gibt jetzt alles doppelt ...
Wie man die Haustyp-Liste nur auf eine Sprache umstellen kann, hab ich irgendwie hinbekommen durch eine kleine Änderung im Quellcode.
Leider wird die Städteliste ganz anders erzeugt. Da hätte ich auch die passende Stelle für die Sprachabfrage gefunden, nur komme ich leider nicht an den Wert ran ...
In der Datei pi1/class.tx_realty_filterForm.php:
public function createDropDownItems($type, $selectedUid = 0) {
if (!in_array($type, array('city', 'district'))) {
throw new Exception('"' . $type . '" is not a valid type.');
}
$objectMapper =
tx_oelib_MapperRegistry::get('tx_realty_Mapper_RealtyObject');
$countFunction = 'countBy' . ucfirst($type);
$models = tx_oelib_MapperRegistry::
get('tx_realty_Mapper_' . ucfirst($type))->findAll('title ASC');
$options = '';
foreach ($models as $model) {
$numberOfMatches = $objectMapper->$countFunction($model);
if ($numberOfMatches == 0) {
continue;
}
$selected = ($selectedUid == $model->getUid())
? ' selected="selected"' : '';
$options .= '<option value="' . $model->getUid() . '"' .
$selected . '>' . htmlspecialchars($model->getTitle()) . ' (' .
$numberOfMatches . ') </option>' . LF;
}
return $options;
}
Hier könnte man doch die Variable $model noch nach der sys_language_uid abfragen. Da es keine passende Methode gibt (zumindest hab ich keine gefunden), hab ich es so versucht:
$model->getAsInteger('sys_language_uid')
hat leider nicht geklappt, es ging gar nichts mehr ...
Dann habe ich in der Datei Model/class.tx_realty_Model_City.php, wo ja auch die Methode getTitle() definiert wird, versucht noch eine Funktion getSprache() zu definieren:
...
public function getTitle() {
return $this->getAsString('title');
}
public function getSprache() {
return $this->getAsInteger('sys_language_uid');
}
...
Der Rückgabewert wäre hier der richtige, nur leider kann ich diese Funktion nicht aufrufen, und ich verstehe nicht warum ...
Wenn ich diese Methode aus der Datei oben aufrufen möchte, also mit $model->getSprache() (analog zu $model->getTitle()), funktioniert gar ncihts mehr. Ich schätze mal die Funktion wird nicht erkannt. Aber warum?
Vielleicht hat sich ja schon mal jemand damit beschäftigt?