[gelöst] Pagetitle automatisch füllen

Gesperrt
derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

[gelöst] Pagetitle automatisch füllen

Beitrag von derSteffen » Fr 14. Sep 2012, 22:16

Hallo,

ich möchte gerne, wenn kein Seitentitel angeben wird, dass ein Standardtext angezeigt wird. Ich habe jetzt auch ein Modul gebastelt, welches im Content funktioniert und sogar bei verschieden langen Pagetiteln verschiedene Texte ausgbit, aber leider funktioniert das nicht mit TITLE-Tags

Code: Alles auswählen

<?php

$art = new Article($idart, $client, $lang);
$pagetitle = $art->getField("pagetitle");

if (strlen($pagetitle) < 15)
   {
echo $art->getField("pagetitle");
echo " - Meine toller Seitentitel extra lang";
} elseif (strlen($pagetitle) > 15 && strlen($pagetitle) < 25) {
echo $art->getField("pagetitle");
echo " - Meine toller Seitentitel";
} else {
echo $art->getField("pagetitle");
}
?>
Ich habe auch schon an der functions.con2.php rumgeschraubt aber so richtig weiß ich da auch gar nicht warum diesen Abschnitt dort überhaupt gibt.

Hat jemand von euch einen Tipp, um das Modul zum Laufen zu bekommen?

Vielen Dank

MfG Steffen
Zuletzt geändert von derSteffen am Mo 17. Sep 2012, 08:48, insgesamt 1-mal geändert.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Pagetitle automatisch füllen

Beitrag von Spider IT » Sa 15. Sep 2012, 09:54

Hallo Steffen,

du brauchst dafür nicht an Systemdateien "rumschrauben", das geht auch so.
Entweder nimmst du das Page_Title Modul aus dem Demomandanten der 4.8.x, oder du nimmst das Title Modul von mir (hier angehängt), welches etwas schlanker ist und sogar den Title des Artikels anhängt wenn dieser nicht der Startartikel ist.
Das Modul fügst du über einen Container im title-Tag des Layouts ein, dann funktioniert es wie gewünscht: nur wenn kein PageTitle vorhanden ist setzt das Modul einen ein.

Gruß
René
Dateianhänge
Title.zip
(826 Bytes) 171-mal heruntergeladen

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Pagetitle automatisch füllen

Beitrag von derSteffen » So 16. Sep 2012, 17:12

Hallo René,

ja das ist ja großartig!

Ich habe das noch mit meinen gewünschten Zusatztext erweitert!

Code: Alles auswählen

<?php
$separator = ' | ';
$titleerweiterung = ''.mi18n("Hier noch eine kleine Ergänzung für den Pagetitle").'';

# Get path to root
if (!isset($sitLocation)) {
    conCreateLocationString($idcat, $separator, $sitLocation, false, '', 1);
}
# Check if article ist start article
$sql = 'SELECT startidartlang
        FROM ' . $cfg['tab']['cat_lang'] . '
        WHERE ((idcat=' . $idcat . ')
           AND (idlang=' . $lang . '))';
$db->query($sql);
if ($db->next_record()) {
    if ($db->f('startidartlang') != $idartlang) {
        $oArt = new Article($idart, $client, $lang, $idartlang);
        $sitLocation .= ((strlen($sitLocation)) ? $separator : '') . $oArt->getField('title');
    }
}

$sql = 'SELECT name
        FROM ' . $cfg['tab']['clients'] . '
        WHERE (idclient=' . $client . ')';
$db->query($sql);
$db->next_record();
echo $db->f('name') . $separator . ((strlen($sitLocation)) ? $sitLocation : 'Home') . $separator . $titleerweiterung;
?>
Zwei Fragen habe ich aber noch.

Wo wird denn in dem Code entschieden ob das angezeigt wird oder der normale Pagetitle?

Und... Warum kann ich im Modul nicht die Headline ausgeben?

Wenn ich das obrigerste Modul mit

Code: Alles auswählen

echo $art->getField("pagetitle");
ergänze wird mir die Headline ausgegeben.

Wenn ich das bei dem anderen mit

Code: Alles auswählen

$headlinetext .= $oArt->getContent('htmlhead', 1); 
und die Ausgabe mit $headlinetext erweitere kommt da nichts raus. Muss ich dor noch die SQL-Abfrage erweitern?

Danke Dir

MfG Steffen

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Pagetitle automatisch füllen

Beitrag von Spider IT » Mo 17. Sep 2012, 07:55

derSteffen hat geschrieben:ja das ist ja großartig!
Danke :)
derSteffen hat geschrieben:Wo wird denn in dem Code entschieden ob das angezeigt wird oder der normale Pagetitle?
Nirgends, wenn ein Pagetitle eingegeben ist, wird dieser im Code anstelle des Containers eingetragen und das Modul hat seinen Platz verloren.
derSteffen hat geschrieben:Und... Warum kann ich im Modul nicht die Headline ausgeben?
Das sollte gehen, ich sehe da keine Probleme.
derSteffen hat geschrieben:Wenn ich das obrigerste Modul
Welches Modul meinst du?
derSteffen hat geschrieben:mit

Code: Alles auswählen

echo $art->getField("pagetitle");
ergänze wird mir die Headline ausgegeben.
getField() kann keine Headline ausgeben, das ist unmöglich.
Außerdem benutzt du hier $art, während in mein Modul $oArt benutzt wird.
derSteffen hat geschrieben:Wenn ich das bei dem anderen
Und welches meinst du jetzt?
derSteffen hat geschrieben:mit

Code: Alles auswählen

$headlinetext .= $oArt->getContent('htmlhead', 1);
und die Ausgabe mit $headlinetext erweitere kommt da nichts raus.
Genau das muss in meinem Modul funktionieren, aber natürlich erst nachdem $oArt gesetzt ist.
derSteffen hat geschrieben:Muss ich dor noch die SQL-Abfrage erweitern?
Nein, die hat nichts mit dem $oArt-Objekt zu tun, entscheidet nur ob es initialisiert wird.

Gruß
René

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Pagetitle automatisch füllen

Beitrag von derSteffen » Mo 17. Sep 2012, 08:27

Hallo René,

vielen Dank für Deine Antwort. Mit deinem Modul habe ich es gerade geschafft :D :

Code: Alles auswählen

<?php
$separator = ' | ';
$titleerweiterung = ''.mi18n("Meine Titelerweiterung mit wichtigen Wörtern drin").'';
$oArt = new Article($idart, $client, $lang, $idartlang);  
$headlinetext = $oArt->getContent('htmlhead', 1); 
$headlinetext = strip_tags($headlinetext);

# Get path to root
if (!isset($sitLocation)) {
    conCreateLocationString($idcat, $separator, $sitLocation, false, '', 1);
}
# Check if article ist start article
$sql = 'SELECT startidartlang
        FROM ' . $cfg['tab']['cat_lang'] . '
        WHERE ((idcat=' . $idcat . ')
           AND (idlang=' . $lang . '))';
$db->query($sql);
if ($db->next_record()) {
    if ($db->f('startidartlang') != $idartlang) {
        $oArt = new Article($idart, $client, $lang, $idartlang);        
        $sitLocation .= ((strlen($sitLocation)) ? $separator : '') . $oArt->getField('title');
// $headlinetext .= $oArt->getContent('CMS_HTMLHEAD', 1);
    }
}

$sql = 'SELECT name
        FROM ' . $cfg['tab']['clients'] . '
        WHERE (idclient=' . $client . ')';
$db->query($sql);
$db->next_record();
echo $headlinetext . $separator . $db->f('name') . $separator . ((strlen($sitLocation)) ? $sitLocation : 'Home') . $separator . $titleerweiterung;
?>
MfG Steffen

Gesperrt