Ich führe einfach mal meinen einsamem Thread weiter - vielleicht kann ich jmd. noch damit helfen.
Für das o.g. Problem hab ich mitlerweile folgende Hack Lösung erstellt. Vorteil davon ist, daß die DB nicht wie oben geändert werden muß.
Um im Backend die Spracheinstellung vornehmen zu können habe ich die Datei
/administrator/components/com_content/models|article.xml
bearbeitet und folgendes hinzugefügt:
PHP-Code:
<params group="advanced">
....
<param name="publish_lang" type="list" default="0" label="Publish Language " description="DETAILPUBLANG">
<option value="0">all</option>
<option value="1">de-DE</option>
<option value="2">en-GB</option>
</param>
...
</param>
Dies erzeugt eine Auswahlfeld bei den Parametern der Beiträge. Der eingestellte Wert wird in der DB im Feld _content.attribs automatisch gespeichert.
Fehlt jetzt nur noch eine modifizierte Abfrage.
für das Frontend wieder die Datei /components/com_content/models|frontpage.php hacken
PHP-Code:
function _buildContentWhere()
{
...
$language = JFactory::getLanguage();
$lang = $language->getTag();
switch($lang){
case 'de-DE':
$publish_lang_id=1;
break;
case 'en-GB':
$publish_lang_id=2;
break;
default:
$publish_lang_id=0;
}
$where .= ' AND (a.attribs NOT LIKE \'%publish_lang=%\' OR a.attribs LIKE \'%publish_lang=0%\' OR a.attribs LIKE \'%publish_lang='.$publish_lang_id.'%\')';
return $where;
}
}
Dies sorgt dafür, daß der Artikel nur angezeigt wenn:- der Parameter nicht gesetzt wurde.
- der Parameter 0 ist ... also für jede Sprache gültig ist.
- der Parameter den Tag der gewählten aktuellen Sprache besitzt.
Die drei String Vergleiche in der query erhöhen nicht gerade die Geschwindigkeit der query.
Dies sollte aber bei nicht all zu vielen Beiträgen (weniger als 100 - nur eine Schätzung) nicht ins Gewicht fallen.
Lesezeichen