JoomlaCamp 2018 Essen - 03.02.2017 in Essen

Seitentitel abrufen

    Seitentitel abrufen

    Moin,

    ich versuche die letzten Tage verzweifelt einen Seitentitel auszugeben, bekomme aber nur die Kategorietitel hin. Meine URL Struktur sieht wie folgt aus: domain/menüpunkt/kategorie/artikel Die Kategorien sind jeweils auch Menüpunkte, die Artikel selbst nicht. Ich versuche nun auf einer Artikelseite folgenden Code:

    Quellcode

    1. ​$doc = JFactory::getDocument();
    2. $title = $doc->getTitle();


    Dieser spuckt jedoch die Kategorie aus, ich möchte aber den Titel des Artikels. Kann mir da jemand weiterhelfen? Ich habe schon zig Codeschnipsel aus dem Netz ausprobiert, die meisten geben gar nichts aus in meinem Fall. Zu den Details kann man vielleicht noch erwähnen, dass ich JReviews benutze und die Ausgabe des Artikeltitels soll direkt in ein EasySocial Modul erfolgen. Dort habe ich folgenden Code:

    Quellcode

    1. ​if (!$params->get('story_event', true)) {
    2. return;
    3. }
    4. $in = FD::input();
    5. $title = $in->getString('event_title');
    6. $description = $in->getString('event_description');
    7. $categoryid = $in->getInt('event_category');
    8. $startDatetime = $in->getString('event_start');
    9. $endDatetime = $in->getString('event_end');
    10. $timezone = $in->getString('event_timezone');


    Dort will ich den $title nicht mehr vom User setzen lassen, sondern dieser soll automatisch relativ zur Seite erstellt werden, daher überhaupt erst der ganze Kram. Wenn ich hinter $title einfach etwas direkt in die PHP Datei reinschreibe, funktioniert es, einen allgemeinen Code aber kriege ich irgendwie nicht hin, daher hoffe ich, jemand kann mir weiterhelfen.
    ​Es ist der Browsertitel (später TITLE). In diesem Fall "zufällig" der Kategorietitel.


    Vielen Dank erstmal für Deine Antwort. Ich bin seit mehreren Tagen verzweifelt an diesem Problem und komme keinen Schritt weiter. Dank Dir habe ich es zumindest hinbekommen, dass der richtige Titel abgerufen wird.

    Der Browser zeigt ausschließlich den Page Title, wobei ich mittlerweile gestehen muss, dass es wohl eher der Article Title ist. Dein Code funktioniert an anderer Stelle und zeigt einwandfrei den Article Title an. Wenn ich den Code jedoch in das Modul einfüge, wird dieser anscheinend einfach ignoriert und ich verzweifel daran. Als würde sich die Datei dem Code völlig entziehen.

    Quellcode

    1. if (!$params->get('story_event', true)) {
    2. return;
    3. }
    4. $in = FD::input();
    5. $artikelTitel = '';
    6. $input = JFactory::getApplication()->input;
    7. // Befinden wir uns in einem article-view der Komponente com_content?
    8. if ($input->get('option') == 'com_content' && $input->get('view') == 'article')
    9. {
    10. // Dann ist die id die Artikel-ID
    11. if ( ($id = (int) $input->get('id')) )
    12. {
    13. // Also frage ich die Datenbank nach dem Titel.
    14. $db = JFactory::getDbo();
    15. $query = $db->getQuery(true);
    16. $query->select('title')->from('#__content')->where('id = ' . $id);
    17. $db->setQuery($query);
    18. $artikelTitel = $db->loadResult();
    19. }
    20. }
    21. $title = $artikelTitel;
    22. $description = $in->getString('event_description');
    23. $categoryid = $in->getInt('event_category');
    24. $startDatetime = $in->getString('event_start');
    25. $endDatetime = $in->getString('event_end');
    26. $timezone = $in->getString('event_timezone');
    Ich habe es noch weiterhin versucht und obwohl die Ausgabe des Artikeltitels auch im Modul funktioniert mit diesem Code:

    PHP-Quellcode

    1. <?php
    2. $option = JRequest::getCmd('option');
    3. $view = JRequest::getCmd('view');
    4. if ($option=="com_content" && $view=="article") {
    5. $ids = explode(':',JRequest::getString('id'));
    6. $article_id = $ids[0];
    7. $article =& JTable::getInstance("content");
    8. $article->load($article_id);
    9. echo $article->get("title");
    10. }
    11. ?>


    Also habe ich in der Datei, wo der Titel automatisch durch den Artikeltitel gesetzt werden soll, folgendes eingetragen:

    Quellcode

    1. $title = $article->get("title");


    Funktioniert nicht und ich verstehe ehrlich gesagt überhaupt nicht, warum das nicht funktioniert. Ich sitze seit nunmehr fünf Tage in jeder freien Minute daran und kriege es einfach nicht hin. ;( Es geht um diese Datei, wo in Zeile 158 der Titel festgelegt wird.

    goo.gl/hEKN2i

    Palatinum schrieb:

    Ich habe es noch weiterhin versucht und obwohl die Ausgabe des Artikeltitels auch im Modul funktioniert mit diesem Code

    Versteh jetzt nicht. Wenns funktioniert, warum dann noch mal einen anderen, nebenbei: veralteten (deprecated), PHP-Warning-werfenden und im Vergleich unperformanteren Code?

    Bin nicht sicher, aber schätze

    Quellcode

    1. $title = $article->get("title");

    muss sein

    Quellcode

    1. $title = $article->title;
    Joomla-Fachmann: ghsvs.de
    Du hast natürlich recht, ich habe das durcheinander gebracht. Aber leider gehen beide Ansätze nicht. Ich verstehe es einfach nicht und komme nicht weiter. Sollte das nicht eigentlich eine Kleinigkeit sein?

    Die Seite ist ein Artikel von JReviews und $title ist der Titel bei der Erstellung eines Events innerhalb eines EasySocial Moduls. Ich hatte befürchtet, dass ich schlussendlich doch einen Entwickler dafür brauche, was aber höchstwahrscheinlich aufgrund der Größe oder Kleine des Auftrags so gut wie unmöglich wird. :(

    Ich bin Dir sehr dankbar, dass Du es versucht hast, aber leider funktioniert es nicht.

    Palatinum schrieb:

    Die Seite ist ein Artikel von JReviews und $title ist der Titel bei der Erstellung eines Events innerhalb eines EasySocial Moduls.

    Das sind dann nat. ganz andere Voraussetzungen/Erweiterungen/Views/Datenbanktabellen, wenn es kein Joomla-Beitrag ist, der angezeigt wird und kommerzielle Erweiterungen verwendet werden, die sehr komplex bzgl. individueller Konfiguration sind. Kenne ich beide nicht.
    Am ehesten solltest du nach obiger Beschreibung im JReviews-Forum weiterkommen, (wenn die so was haben).
    Wenn du in einem Modul Details des angezeigten Komponenten-Views (hier JReviews) abfragen willst, ist wohl nur das Grundprinzip identisch.
    Joomla-Fachmann: ghsvs.de
    Die Anzeige des Artikeltitels funktioniert ja, nur das einfügen als Titel ins Formular im Modul leider nicht. Vom Modulhersteller habe ich auch einen Code erhalten, dieser funktioniert aber in der Kombination auch nicht.

    Quellcode

    1. $artikelTitel = '';
    2. $input = JFactory::getApplication()->input;
    3. if ($input->get('option') == 'com_content' && $input->get('view') == 'article')
    4. {
    5. if ( ($id = (int) $input->get('id')) )
    6. {
    7. $db = JFactory::getDbo();
    8. $query = $db->getQuery(true);
    9. $query->select('title')->from('#__content')->where('id = ' . $id);
    10. $db->setQuery($query);
    11. $artikelTitel = $db->loadResult();
    12. }
    13. }
    14. $title = $artikelTitel


    Am Anfang der Datei des Modulformulars funktioniert. Vom Entwickler habe ich folgenden Code erhalten:

    Quellcode

    1. $input = JFactory::getApplication()->input;
    2. $articleTitle = $input->get('params', array(), 'array');
    3. $title = $articleTitle['title'];


    Baue ich nun beides wie folgt zusammen, funktioniert es dennoch nicht, der Titel des Formulars nach dem Absenden ist leer:

    Quellcode

    1. public function onBeforeStorySave(&$template, &$stream, &$content)
    2. {
    3. $params = $this->getParams();
    4. if (!$params->get('story_event', true)) {
    5. return;
    6. }
    7. $in = FD::input();
    8. $artikelTitel = '';
    9. $input = JFactory::getApplication()->input;
    10. if ($input->get('option') == 'com_content' && $input->get('view') == 'article')
    11. {
    12. if ( ($id = (int) $input->get('id')) )
    13. {
    14. $db = JFactory::getDbo();
    15. $query = $db->getQuery(true);
    16. $query->select('title')->from('#__content')->where('id = ' . $id);
    17. $db->setQuery($query);
    18. $artikelTitel = $db->loadResult();
    19. }
    20. }
    21. $input = JFactory::getApplication()->input;
    22. $articleTitle = $input->get('params', array(), 'array');
    23. $title = $articleTitle['title'];
    24. $description = $in->getString('event_description');
    25. $categoryid = $in->getInt('event_category');
    26. $startDatetime = $in->getString('event_start');
    27. $endDatetime = $in->getString('event_end');
    28. $timezone = $in->getString('event_timezone');


    Ersetze ich aber

    Quellcode

    1. ​$title = $articleTitle['title'];


    durch

    Quellcode

    1. ​$title = BLABLA;


    erscheint nach dem Absenden des Formulars "BLABLA" an der korrekten Stelle.

forum.joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.