Ergebnis 1 bis 4 von 4

Thema: Teaser Images in Tagcloud Ergebisseite

  1. #1
    Contao-Nutzer
    Registriert seit
    27.09.2016.
    Beiträge
    2

    Standard Teaser Images in Tagcloud Ergebisseite

    Hi,
    ich habe da schon etwas im Forum und in den Handbüchern gesucht, habe aber leider nicht viel gefunden.
    Nachdem ich erfolglos versucht habe Code-Teile selbst zu verändern, dachte ich mir ich stelle mal die Frage hier rein.
    Vielleicht kann ja jemand weiterhelfen.

    Einige Infos über die Contao-Installation:
    Contao-Version: 3.5.12
    tags_articles - Erweiterung: https://github.com/hschottm/tags_articles
    tags Erweiterung: https://github.com/hschottm/tags
    teaser_images: https://contao.org/de/erweiterungsli...000003.de.html

    Zu meiner Frage:

    Ich habe die Artikel mit der Tag-Erweiterung mit Schlagwörtern versehen. Die Tag-Cloud als Modul eingebaut und habe ebenfalls die Ergebnis-Seite, wo die Artikel aufgelistet werden wenn ich einen Tag in der Cloud auswähle, hinbekommen.
    Was ich nun hinbekommen möchte sind die Teaser-Bilder in dieser Auflistung. Die werden durch eine Erweiterung "teaser_images" bei jedem Artikel angelegt.
    Habe aber in keinem der vorhandenen Module / Templates Zugriff auf die Images.

    Was ich noch versucht habe wie schon erwähnt: die Datei 'ModuleTaggedArticleList.php' zu erweitern.
    Und zwar gibt es eine Erweiterung "ce_article_list" die Zugriff auf die Images hat:

    soweit ich erkennen konnte ist folgender Code dafür zuständig:
    PHP-Code:
    $imageTemplate false;
    $addImage false;
                                    
    if (
    version_compare(VERSION'3''>='))
    {
        if (
    $objArticles->addImage && $objArticles->singleSRC != '')
        {
            
    $objModel = \FilesModel::findByPk($objArticles->singleSRC);
                                        
            if (
    $objModel !== null && is_file(TL_ROOT '/' $objModel->path))
            {
                
    $addImage true;
                
    $imageTemplate = new SubTemplate();

                
    $objArticles->singleSRC $objModel->path;
                
    $this->addImageToTemplate($imageTemplate$objArticles->row());
            }
        }
    }
    else
    {
        if (
    $objArticles->addImage && strlen($objArticles->singleSRC) && is_file(TL_ROOT '/' $objArticles->singleSRC))
        {
            
    $addImage true;
            
    $imageTemplate = new SubTemplate();

            
    $this->addImageToTemplate($imageTemplate$objArticles->row());
        }
    }

    $arrTeaserCssID deserialize($objArticles->teaserCssID); 
    Oben angeführte Zeilen habe ich dann in die Datei ModuleTaggedArticleList.php in die Funktion "getArticlesForPages" ab Zeile 152 hinzugefügt.
    PHP-Code:
    //new code beginn
    $imageTemplate false;
    $addImage false;

    if (
    version_compare(VERSION'3''>='))
    {
        if (
    $objArticles->addImage && $objArticles->singleSRC != '')
        {
            
    $objModel = \FilesModel::findByPk($objArticles->singleSRC);
                                        
            if (
    $objModel !== null && is_file(TL_ROOT '/' $objModel->path))
            {
                
    $addImage true;
                
    $imageTemplate = new SubTemplate();

                
    $objArticles->singleSRC $objModel->path;
                
    $this->addImageToTemplate($imageTemplate$objArticles->row());
            }
        }
    }
    else
    {
        if (
    $objArticles->addImage && strlen($objArticles->singleSRC) && is_file(TL_ROOT '/' $objArticles->singleSRC))
        {
            
    $addImage true;
            
    $imageTemplate = new SubTemplate();

            
    $this->addImageToTemplate($imageTemplate$objArticles->row());
        }
    }

    $arrTeaserCssID deserialize($objArticles->teaserCssID);
    //new code end
    array_push($this->arrArticles$objArticles->row());

    Hat leider nichts gebracht.

    Gibt es da einen Weg, eine Einstellung den ich übersehe?

    Bedanke mich schon im Voraus für Antworten.

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

    Standard

    Hast du im Template Zugriff auf die Artikel ID? Wenn ja kannst du dir die nötigen Infos ja aus der Datenbank holen.

  3. #3
    Contao-Nutzer
    Registriert seit
    27.09.2016.
    Beiträge
    2

    Standard

    Deine Antwort hat mich auf etwas gebracht, danke.

    Ich habe versucht den Code an falscher Stelle (kann ja nicht Daten manipulieren die das Object nicht hat) zu erweitern .

    Das hier in ModuleTaggedArticleList.php:
    PHP-Code:
    if ($this->show_in_column)
    {
        $objArticles = $this->Database->prepare("SELECT id, pid, title, alias, inColumn, cssID, teaser, start FROM tl_article WHERE inColumn = ? AND pid IN (" . $pids . ") " . (!BE_USER_LOGGED_IN ? " AND (start='' OR start<?) AND (stop='' OR stop>?) AND published=1" : "") . $order_by)
                                      ->execute($this->inColumn, $time, $time);
    }
    else
    {
        $objArticles = $this->Database->prepare("SELECT id, pid, title, alias, inColumn, cssID, teaser, start FROM tl_article WHERE pid IN (" . $pids . ") " . (!BE_USER_LOGGED_IN ? " AND (start='' OR start<?) AND (stop='' OR stop>?) AND published=1" : "") . $order_by)
                                      ->execute($time, $time);
    }
    if ($objArticles->numRows < 1)
    {
        return;
    }

    global $objPage;
    $format = $objPage->outputFormat;
    if (!empty($format))
    {
        $this->import('String');
    }

    while ($objArticles->next())
    {
        /* This code seems to be a useless "left over copy/paste" from an old version of system/modules/frontend/ModuleArticleList.php
        // Skip first article
        if (++$intCount == 1 && $this->skipFirst)
        {
            continue;
        }
        */

        $objArticles->cssID = deserialize($objArticles->cssID, true);
        // ??? $alias = strlen($objArticles->alias) ? $objArticles->alias : $objArticles->title;
        $objArticles->startDate = (intval($objArticles->start) > 0) ? $this->parseDate($GLOBALS['TL_CONFIG']['datimFormat'], intval($objArticles->start)) : '';
        $objArticles->teaser = $this->replaceInsertTags($objArticles->teaser);
        if (!empty($format))
        {
            if ($format == 'xhtml')
            {
                $objArticles->teaser = $this->String->toXhtml($objArticles->teaser);
            }
            else
            {
                $objArticles->teaser = $this->String->toHtml5($objArticles->teaser);
            }
        }
        array_push($this->arrArticles, $objArticles->row());
    }
    muss in:

    PHP-Code:
    if ($this->show_in_column)
    {
        // $objArticles = $this->Database->prepare("SELECT id, pid, title, alias, inColumn, cssID, teaser, start FROM tl_article WHERE inColumn = ? AND pid IN (" . $pids . ") " . (!BE_USER_LOGGED_IN ? " AND (start='' OR start<?) AND (stop='' OR stop>?) AND published=1" : "") . $order_by)
                                      // ->execute($this->inColumn, $time, $time);
        $objArticles = $this->Database->prepare("SELECT id, pid, title, alias, inColumn, cssID, teaser, teaserCssID, start, addImage, singleSRC, linkedimage, imageUrl FROM tl_article WHERE inColumn = ? AND pid IN (" . $pids . ") " . (!BE_USER_LOGGED_IN ? " AND (start='' OR start<?) AND (stop='' OR stop>?) AND published=1" : "") . $order_by)
                                      ->execute($this->inColumn, $time, $time);
    }
    else
    {
        // $objArticles = $this->Database->prepare("SELECT id, pid, title, alias, inColumn, cssID, teaser, start FROM tl_article WHERE pid IN (" . $pids . ") " . (!BE_USER_LOGGED_IN ? " AND (start='' OR start<?) AND (stop='' OR stop>?) AND published=1" : "") . $order_by)
                                      // ->execute($time, $time);
        $objArticles = $this->Database->prepare("SELECT id, pid, title, alias, inColumn, cssID, teaser, teaserCssID, start, addImage, singleSRC, linkedimage, imageUrl FROM tl_article WHERE pid IN (" . $pids . ") " . (!BE_USER_LOGGED_IN ? " AND (start='' OR start<?) AND (stop='' OR stop>?) AND published=1" : "") . $order_by)->execute($time, $time);
    }
    if ($objArticles->numRows < 1)
    {
        return;
    }

    global $objPage;
    $format = $objPage->outputFormat;
    if (!empty($format))
    {
        $this->import('String');
    }

    while ($objArticles->next())
    {
        /* This code seems to be a useless "left over copy/paste" from an old version of system/modules/frontend/ModuleArticleList.php
        // Skip first article
        if (++$intCount == 1 && $this->skipFirst)
        {
            continue;
        }
        */

        $objArticles->cssID = deserialize($objArticles->cssID, true);
        
        $objArticles->teaserCssID = deserialize($objArticles->teaserCssID, true);
        $objhelp = \FilesModel::findByPk($objArticles->singleSRC);
        $objArticles->singleSRC= $objhelp->path;
        // ??? $alias = strlen($objArticles->alias) ? $objArticles->alias : $objArticles->title;
        $objArticles->startDate = (intval($objArticles->start) > 0) ? $this->parseDate($GLOBALS['TL_CONFIG']['datimFormat'], intval($objArticles->start)) : '';
        $objArticles->teaser = $this->replaceInsertTags($objArticles->teaser);
        if (!empty($format))
        {
            if ($format == 'xhtml')
            {
                $objArticles->teaser = $this->String->toXhtml($objArticles->teaser);
            }
            else
            {
                $objArticles->teaser = $this->String->toHtml5($objArticles->teaser);
            }
        }
        
        array_push($this->arrArticles, $objArticles->row());
    }
    geändert werden.

    zu beachten: würde nur funktionieren wenn die im ersten Post angeführten Erweiterungen installiert sind.
    Ich schau mal ob ich den Code so erweitern kann das eine Abfrage gemacht wird ob die Erweiterungen installiert sind.

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

    Standard

    So hab ich das aber nicht gemeint. Hast du nun schon mal mit
    PHP-Code:
    $this->showTemplateVars() 
    überprüft, welche Daten du nun pro Tag zur Verfügung hast im Template?

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
  •