Ergebnis 1 bis 3 von 3

Thema: Überschreiben des pageTitle über ein Frontend Module

  1. #1
    Contao-Nutzer Avatar von dako314
    Registriert seit
    04.05.2013.
    Ort
    Mannheim
    Beiträge
    120

    Computer Überschreiben des pageTitle über ein Frontend Module

    Hallo zusammen,

    ich würde gerne den Seitentitel über ein Frontend Modul überschreiben. Aktuell sieht mein Code ungefähr so aus:

    PHP-Code:
    #[AsFrontendModule('member', category: 'miscellaneous', template: 'mod_member_module', renderer: 'forward')]
    class MemberController extends AbstractFrontendModuleController
    {
        protected function 
    getResponse(Template $templateModuleModel $modelRequest $request): Response
        
    {
            if (isset(
    $_GET['auto_item']) && '' !== $_GET['auto_item']) {
                
    Input::setGet('auto_item'$_GET['auto_item']);
            }

            
    $member MemberModel::findOneBy(['showOnWebsite = 1''username = ?'], [Input::get('auto_item')]);

            if (!
    $member) {
                throw new 
    PageNotFoundException('User not found');
            }

            return 
    $template->getResponse();
        }

    Mein Seitentitel sieht folgendermaßen aus:
    {{page:ageTitle}} | {{page:rootPageTitle}}, z.B. "Mitglied | Root Titel"

    Mit Hilfe von folgendem Code konnte ich den zweiten Teil bereits überschreiben:

    PHP-Code:
    $page $this->getPageModel();

    $page->rootPageTitle "neuer titel";

    //alternativ geht das auch mit global $objPage; und $objPage->rootPageTitle = "neuer titel"; 
    Allerdings schaffe ich es nicht, den ersten Teil zu verändern. Ich habe einige Kombinationen ausprobiert und der Titel bleibt immer der gleiche.

    Weiß jemand, was ich machen muss, damit das funktioniert?

    VG
    Dako314

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

    Standard

    Dazu musst du dir über den ResponseContextAccessor den Response Context holen und darin den HtmlHeadBag ändern.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer Avatar von dako314
    Registriert seit
    04.05.2013.
    Ort
    Mannheim
    Beiträge
    120

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Dazu musst du dir über den ResponseContextAccessor den Response Context holen und darin den HtmlHeadBag ändern.
    Vielen Dank, das hat mir geholfen!

    Ich habe das so umgesetzt, falls das mal jemand hier braucht:

    Zunächst habe ich das Attribut hinzugefügt + den Constructor erstellt:

    PHP-Code:
    private ResponseContextAccessor $responseContextAccessor;

    public function 
    __construct(ResponseContextAccessor $responseContextAccessor)
    {
      
    $this->responseContextAccessor $responseContextAccessor;

    In meinem Fall musste ich in der services.yml noch das Argument mit hinzufügen:

    PHP-Code:
    App\Controller\FrontendModule\:
      
    resource: ../src/Controller/FrontendModule
      
    public: true
      arguments
    :
        - 
    '@contao.routing.response_context_accessor' 
    Dann konnte ich das folgendermaßen benutzen:

    PHP-Code:
    $htmlHeadBag $this->responseContextAccessor->getResponseContext()->get(HtmlHeadBag::class);
    $htmlHeadBag->setTitle("Mein neuer Title"); 

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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