Skip to content
This repository has been archived by the owner on Dec 31, 2023. It is now read-only.

Verwendung der Newsausgabe in einem Modul ermöglichen #5

Closed
skerbis opened this issue Oct 20, 2017 · 12 comments
Closed

Verwendung der Newsausgabe in einem Modul ermöglichen #5

skerbis opened this issue Oct 20, 2017 · 12 comments

Comments

@skerbis
Copy link
Member

skerbis commented Oct 20, 2017

Das aktuelle Beispiel setzt die Verwendung in einem Template voraus.

@javanita
Copy link
Member

um noch einen draufzusetzen, am besten Modul gleich mit der Installation anlegen

@georgkaser
Copy link
Member

Naja, der Grund für das Template ist eigentlich der Header Bereich. Ich habe ja in der Listen- und der Singleansicht verschiedene Meta Tags. D.h. da hilft mir ein Modul schon nicht weiter. Aber es spricht nichts dagegen, die beschriebene Ausgabe über ein Modul zu machen - dachte das erklärt sich eh von selbst ;) - Ich überlege mal, vielleicht kann man in der Einstellungsseite eine Modulinstallation einbauen...

@skerbis
Copy link
Member Author

skerbis commented Oct 20, 2017

Vielleicht falsch formuliert. Das Beispiel sollte Modul-Code zeigen.

@ansichtsache
Copy link
Member

hallo georg,
ich würde gerne eine übersicht der news über ein modul ausgeben. wenn ich aber diesen code (der ja über ein template ausgegeben funktioniert) in ein modul setze bekomme ich den error 'Call to a member function printListView() on null'

if ($news_id) {            // Artikel-Ansicht (kann hier ja entfallen)
            echo $newsmanager->printSingleView($article_post);
        } else {
            // Listenansicht
            echo $newsmanager->printListView(null, $this->getValue('article_id'), 3);
        }

hast du einen tipp für mich?
danke!

@georgkaser
Copy link
Member

Hast du ein Objekt erzeugt?
$newsmanager = NewsManager::create();

@ansichtsache
Copy link
Member

ansichtsache commented Mar 2, 2018 via email

@georgkaser
Copy link
Member

Okay, das geht erst bei der Github Version. Es geht auch so:
$newsmanager = new NewsManager();
oder wenn du auch die Kommentare haben möchtest, dann
$newsmanager = new NewsManagerWithComments();

@ansichtsache
Copy link
Member

ansichtsache commented Mar 2, 2018 via email

@ansichtsache
Copy link
Member

hallo georg, wenn du mir noch mal weiterhelfen könntest?
ich habe im NewsManager.php folgende funktion ergänzt:

/**
     * Generates a list view of the articles from a template (article-teaser-list-view.php)
     * @param NewsManagerArticle $newsArticle Article object
     * @return string markup of the article teaser list view
     */
    public function printTeaserListView($singleViewArticleId, $limit = 0)
    {
        $TeaserlistView_output = '';
        $teasernewslist = '';
        $suggestions = array('article-teaser-list-view');
        $posts = $this->getArticleObjectList($limit);
        foreach ($posts as $post) {
            if ($post instanceof NewsManagerArticle) {
                $teasernewslist .= $post->printArticleTeaserList($post, $newsArticle);
            }
        }
        $TeaserlistView_output .= $this->tpl->render($suggestions, array(
                     'teasernewslist' => $teasernewslist
            ));
        return '<ul>'.$TeaserlistView_output.'</ul>';
}

und im NewsManagerArticle.php diese:

public function printArticleTeaserList($post, $newsArticle)
    {
        $output = '';
        $suggestions = array('article-teaser-list');
        $output .= $this->tpl->render($suggestions, array(
            'title' => $post->getTitle(),
           'subtitle' => $this->getSubtitle(), 
            'url' => $this->getUrl()
                ));
        return $output;
    }

noch ein view article-teaser-list.php:

            <li><a href="<?=$url?>"><strong><?=$title?></strong></a><br />
             <?=$subtitle?></li>

und das ganze mit einem modul ausgeben:

<?php
// Ausgabe der Newsartikel
$newsmanager = '';
$newsmanager = new NewsManager();
// Listenansicht
echo $newsmanager->printTeaserListView(null, $this->getValue('article_id'), 2);
?>

das klappt soweit, nur das ich zwei hürden habe:

  1. das modul gibt auf meiner startseite eingebunden nur die letzte news aus, auf einer anderen seite werden alle online-news ausgegeben
  2. eine limitierung greift nicht. ich würde aber gerne bei einsatz des moduls immer die letzten 2 oder 3 news augeben. hast du noch einen tipp?
    danke und gruß
    tizian

@georgkaser
Copy link
Member

hmm, was mir aufgefallen ist: Du gibst bei deiner Ausgabe im Modul 3 Parameter an - bei deiner Funktionsdefinition sinds aber nur 2. Kann das richtig sein?

@ansichtsache
Copy link
Member

danke! das kommt von gefährlichem halbwissen …
mit dieser modulausgabe geht es:

<?php
// Ausgabe der Newsartikel
$newsmanager = '';
$newsmanager = new NewsManager();
// Listenansicht
echo $newsmanager->printTeaserListView($this->getValue('article_id'), 3);
?>

soll ich die ergänzungen in pullrequests verarbeiten?

@georgkaser
Copy link
Member

Super! Ja, gerne. Ich werde die dann (hoffentlich bald) einfließen lassen. Ein bisserl Geduld brauchts aber noch ;) Danke dir!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants