Ergebnis 1 bis 5 von 5

Thema: Suche - Seitenurl herausfinden und Indexierung funktioniert nicht

  1. #1
    Contao-Nutzer
    Registriert seit
    15.01.2016.
    Beiträge
    20

    Standard Suche - Seitenurl herausfinden und Indexierung funktioniert nicht

    Hallo zusammen,

    ich bin gerade dabei eine Erweiterung für Contao zu schreiben und hänge nun am Suchindex. Für den Hook getSearchablePages habe ich die folgende Klasse erstellt:

    PHP-Code:
    class Bstv_archive extends \Frontend
    {    
        
    /**
         * Add items to the indexer
         *
         * @param array   $arrPages
         * @param integer $intRoot
         * @param boolean $blnIsSitemap
         *
         * @return array
         */
        
    public function getSearchablePages($arrPages$intRoot=0$blnIsSitemap=false$strLanguage=null)
        {
            
    //get years:
            
    $sql "SELECT * FROM tl_bstv_year order by year";
            
    $result $this->Database->prepare($sql)->execute();
            
            
    $objParent = \Contao\PageModel::findWithDetails(7);
            
    $domain = ($objParent->rootUseSSL 'https://' 'http://') . ($objParent->domain ?: \Environment::get('host')) . TL_PATH '/';
            
            
    // Walk through each year
            
    if ($result !== null)
            {
                while (
    $result->next())
                {
                    
    //print $this->generateFrontendUrl($objParent->row(), "/year/".$result->year."");
                    //$arrPages[] = "index.php";//$this->generateFrontendUrl($objPage->row(), "/year/".$result->year."");
                    
    $sql "SELECT * FROM tl_bstv_month JOIN tl_bstv_year ON tl_bstv_year.id = tl_bstv_month.pid WHERE `year` = '".$result->year."' order by month";
                    
    $result_month $this->Database->prepare($sql)->execute();
                    while (
    $result_month->next())
                    {
                        
    $arrPages[] = $domain $this->generateFrontendUrl(array("alias" => "archiv"), "/year/".$result->year."/month/".$result_month->month);
                    }
                }
            }

            return 
    $arrPages;
        }

    Die URLs werden richtig erzeugt und vom Indexer auch aufgerufen. Zumindest wird im Backend beim manuellen erzeugen des Indexes alles richtig angezeigt und wenn ich diese URL dann aufrufe, wird meine Webseite auch richtig angezeigt (inklusive dem Inhalt, den ich im ContentElement erzeuge):
    Nun habe ich allerdings folgende Probleme:
    1. Woher bekomme ich den Seiten-Alias, den ich im oberen Code manuell eingetragen habe: array("alias" => "archiv") ?
    2. Die Inhalte auf den Seiten werden nicht indexiert. In den Datenbanktabellen tl_search und tl_search_index tauchen die Inhalte der Seiten nicht auf. Und wenn ich nach den Inhalten suche, bekomme ich kein Ergebis.


    Wer kann mir dabei helfen?

    Edit: auch das PraentObject erzeuge ich ja mit der manuellen ID der Seite, auf der mein Inhaltselement liegt: "\Contao\PageModel::findWithDetails(7);" Also ich bräuchte wohl auch irgendwie die ID der Seite. Bzw. aus der ID kriege ich bestimmt auch den Alias irgendwie raus .

    MfG, Daniel
    Geändert von kizuzi (15.01.2016 um 20:19 Uhr)

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.335
    Partner-ID
    10107

    Standard

    ad 1.) Sieh' dir einfach die Implementation des News Moduls an: https://github.com/contao/core/blob/.../News.php#L257
    1. Get all news archives
    2. Walk through each archive
    3. Get the URL of the jumpTo page
    4. Generate the URL
    Wenn du in deinem Modul keine Equivalente Archivfunktion mit jumpTo Page hast, könntest du auch alternativ einfach durch alle Reader Module iterieren, also das wäre dann:
    1. Get all reader modules
    2. Walk through each reader module
    3. Get all pages where the reader module is included
    4. Walk through each page
    5. Generate the URL


    ad 2.) Stell' die Seite mal online, damit man sich den Output ansehen kann.
    Geändert von Spooky (17.01.2016 um 12:01 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    15.01.2016.
    Beiträge
    20

    Standard

    Hallo Spooky,

    Danke für deine Antwort. Eine Jump-To-Page habe ich nicht, da die Links zu den Seiten fest eingebaut sind im Template (Monate pro Jahr angeordnet).
    Ich habe das erste Problem nun gelöst indem ich mir die SeitenIDs und Aliase aus der Datenbank hole mit diesem SQL-Query:
    Code:
    SELECT a.title AS article, p.id as site_id, p.alias FROM tl_content c LEFT JOIN tl_article a ON c.pid=a.id LEFT JOIN tl_page p ON a.pid=p.id WHERE c.type='bstv_archive_archive' ORDER BY p.id
    Ich habe zwar die Webseite nun online gebracht aber zur Sicherheit noch mit htaccess geschützt. ich möchte ja nicht, dass Suchmaschinen diese Webseite indizieren:
    http://bstv.daniel-schlueter.eu/index.php/archiv.html

    Benutzername: contao
    Passwort: login

    MfG, Daniel

  4. #4
    Contao-Nutzer
    Registriert seit
    15.01.2016.
    Beiträge
    20

    Standard

    Hallo zusammen,

    ich habe echt keine Ahnung woran es liegt, dass der Indexer die Seite nicht indexieren kann.
    An der Tabelle liegt es nicht. Auch hier funktioniert es nicht: http://bstv.daniel-schlueter.eu/inde...h/1.html#month

    MfG, Daniel

  5. #5
    Contao-Nutzer
    Registriert seit
    15.01.2016.
    Beiträge
    20

    Standard

    Moin,

    habe nun nach etwas Detektivarbeit im Contaocode diese Datei(system/modules/core/config/config.php) gefunden, die für die Suche definiert, welche Seiten NICHT indexiert werden:
    PHP-Code:
    /**
     * Do not index a page if one of the following parameters is set
     */
    $GLOBALS['TL_NOINDEX_KEYS'] = array('id''file''token''day''month''year''page''PHPSESSID'); 
    Da meine Parameter "month" und "year" heißen, werden diese Seiten also nicht indexiert.
    Ich frage mich nun nur nach dem Sinn dieser Option und warum das nicht dokumentiert ist.

    MfG, Daniel

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

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