+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Startseite Beiträge Sprachabhängig

  1. #1
    Neu an Board
    Registriert seit
    23.08.2007
    Beiträge
    8
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Startseite Beiträge Sprachabhängig

    Hallo,

    ich verwende Joomla 1.5 jetzt schon etwas länger, habe bisher aber darauf verzichtet Module etc. zu programmieren.
    Was ich nun vorhabe müßte eigentlich mit einem einfachen Hack möglich sein:

    Meine Startseite hat mehre Beiträge. Jetzt möchte ich meine Seite mehrsprachig gestalten.
    Ich benutze Joomfish, mag aber nicht Silvermitglied werden, da 1.6 schon da ist.
    Da ich aber nicht alle Beiträge übersetzen mag bzw dies nicht sinnvoll ist dachte es müßte einfach möglich sein der Beitragstabelle ein weiteres Feld hinzuzufügen und die angezeigten Beiträge auf der Startseite nach der aktuuellen Sprache zu filter.


    Da ich mich im Joomla Core Code nicht so gut auskenne hier jetzt die Frage:

    In welcher Joomla-Datei wird die mysql query zum Aufrufen aller Beiträge der Startseite erzeugt bzw. wo wird die Anfrage an mysql übergeben.

    Meinem Verständnis nach könnte ich diese query für meine Belange modifizieren bzw ersetzen.


    Grüße und THX schon mal

  2. #2
    Neu an Board
    Registriert seit
    23.08.2007
    Beiträge
    8
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Also nach etwas suchen und rumprobieren, hab ich es selbst gefunden. Für alle die es interessiert:

    Die Beitrags query für die Frontpage befindet sich in: /components/com_content/models/frontpage.php

    Für meine o.g. Zweck habe ich folgendes verändert:
    1. joomla table _content um eine Spalte erweitert: publish_language als char(8) mit default NULL
    2. erweitern der where bedingung in der function _buildContentWhere()
      PHP-Code:
              if ($user->authorize('com_content''edit''content''all')) {
      ...
              } else {
      ...        }
              
                  
      $language JFactory::getLanguage();
                  
      $lang $language->getTag();  
                  
      //echo $lang;
                  
      $where .= ' AND (a.publish_lang IS NULL OR a.publish_lang LIKE \''.$lang.'\')'

    Damit werden alle Frontpage-Beiträge angezeigt die publish_lang=NULL sind oder der aktuelle Sprache entsprechen. Möchte man dies für alle Beiträge bzw Kategorien machen
    kann man den code äquivalent in /components/com_content/models/category.php ändern.


    Jetzt fehlt natürlich noch ein Möglichkeit dies im Backend einzustellen, da man bisher den Wert per phpmyadmin setzen muss...

    wie ich das ins backend einfüge muss ich noch herausfinden

    Als Plugin wäre das natürlich viel schöner - da ein Hack immer Nachteile bringt.

    Wenn also einer eine Idee oder es besser kann als ich - wäre super.

  3. #3
    Neu an Board
    Registriert seit
    23.08.2007
    Beiträge
    8
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    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.
    Geändert von flyingbull (28.01.2011 um 13:20 Uhr)

+ Antworten

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein