Contao-Camp 2024
Ergebnis 1 bis 8 von 8

Thema: Alias Generierung in Erweiterung

  1. #1
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.136

    Standard Alias Generierung in Erweiterung

    Hallo,

    in der Seitenstruktur werden die Aliase mit Umlauten korrekt erstellt also Ä wird zu ae etc.

    In meiner Erweiterung allerding wird Ä nur zu a.

    So wird der generiert:

    PHP-Code:
    ...
    $varValue System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title.'-'.$dc->activeRecord->year$dc->activeRecord->id$aliasExists);
    ... 
    Eine Änderung bei den Alias-Einstellungen zeigt auch keine Veränderung.
    Liebe Grüße
    WebRoxx


  2. #2
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    Hallo

    Ohne jetzt voll den Durchblick zu haben, denke ich, dass der zweite Parameter bei dir entscheidend ist. Dieser kann eine page id oder ein array mit Optionen sein.

    Handelt es sich bei deinem Datensatz um eine Seite tl_page?

    Schau dir auch mal https://github.com/ausi/slug-generat...lugOptions.php und an. Diese Klasse übernimmt nämlich letztlich die Umwandlung.



    Lg Marko

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Hallo,

    in der Seitenstruktur werden die Aliase mit Umlauten korrekt erstellt also Ä wird zu ae etc.

    In meiner Erweiterung allerding wird Ä nur zu a.

    So wird der generiert:

    PHP-Code:
    ...
    $varValue System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title.'-'.$dc->activeRecord->year$dc->activeRecord->id$aliasExists);
    ... 
    Eine Änderung bei den Alias-Einstellungen zeigt auch keine Veränderung.
    Geändert von markocupic (17.02.2021 um 11:03 Uhr)
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  3. #3
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.136

    Standard

    Zitat Zitat von markocupic Beitrag anzeigen
    Hallo

    Ohne jetzt voll den Durchblick zu haben, denke ich, dass der zweite Parameter bei dir entscheidend ist. Dieser kann eine page id oder ein array mit Optionen sein.

    Handelt es sich bei deinem Datensatz um eine Seite tl_page?

    Schau dir auch mal https://github.com/ausi/slug-generat...lugOptions.php an. Diese Klasse übernimmt nämlich letztlich die Umwandlung.

    Lg Marko
    Hey,

    nein ist kein Datensatz in tl_page sondern eine einge DCA-Tabelle. Der zweite Parameter ist ja eine ID (die vom aktuellen Datensatz)
    Liebe Grüße
    WebRoxx


  4. #4
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    Probier mal das hier:

    Code:
    $slugOptions = [['locale' => 'de']];
    $varValue = System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title.'-'.$dc->activeRecord->year, $slugOptions, $aliasExists);
    Zitat Zitat von WebRoxx Beitrag anzeigen
    Hey,

    nein ist kein Datensatz in tl_page sondern eine einge DCA-Tabelle. Der zweite Parameter ist ja eine ID (die vom aktuellen Datensatz)
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  5. #5
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    So ist richtig... Da waren ein paar Klammern zu viel. ;-)

    $aliasExists kann null sein oder eine 'callable' (Funktion).
    Code:
    $slugOptions = ['locale' => 'de'];
    $varValue = System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title.'-'.$dc->activeRecord->year, $slugOptions, $aliasExists);
    Geändert von markocupic (17.02.2021 um 11:07 Uhr)
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  6. #6
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.136

    Standard

    Zitat Zitat von markocupic Beitrag anzeigen
    So ist richtig... Da waren ein paar Klammern zu viel. ;-)

    $aliasExists kann null sein oder eine 'callable' (Funktion).
    Code:
    $slugOptions = ['locale' => 'de'];
    $varValue = System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title.'-'.$dc->activeRecord->year, $slugOptions, $aliasExists);
    Ah okay da wird es korrekt erstellt. Danke. Da brauche ich ja eigentlich nur die Root-Einstellungen aus der tl_page auslesen und diese übergeben
    Liebe Grüße
    WebRoxx


  7. #7
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    Es reicht auch, wenn du die ID der root page durchgibst.

    Die $slugOptions können ein Array oder eben eine page id sein.

    Code:
    $pageId = 3;
    $slugOptions = array('locale' => 'de'); // fallback
    if (null !== ($objPage = PageModel::findByPk($pageId)))
    {
        $slugOptions = $objPage->id;
    }
    
    $varValue = System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title.'-'.$dc->activeRecord->year, $slugOptions, $aliasExists);
    Zitat Zitat von WebRoxx Beitrag anzeigen
    Ah okay da wird es korrekt erstellt. Danke. Da brauche ich ja eigentlich nur die Root-Einstellungen aus der tl_page auslesen und diese übergeben
    Geändert von markocupic (17.02.2021 um 11:23 Uhr)
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  8. #8
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.136

    Standard

    Zitat Zitat von markocupic Beitrag anzeigen
    Es reicht auch, wenn du die ID der root page durchgibst.

    Die $slugOptions können ein Array oder eben eine page id sein.

    Code:
    $pageId = 3;
    $slugOptions = array('locale' => 'de'); // fallback
    if (null !== ($objPage = PageModel::findByPk($pageId)))
    {
        $slugOptions = $objPage->id;
    }
    
    $varValue = System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title.'-'.$dc->activeRecord->year, $slugOptions, $aliasExists);

    okay, habs jetzt so ähnlcih nur direkt nach den typen root abgefragt
    PHP-Code:
                
                $slugOptions 
    = array('locale' => 'de'); // fallback
                
    if(null !== ($objPage PageModel::findBytype('root'))) {
                    
    $slugOptions $objPage->id;
                };
                
    $varValue System::getContainer()->get('contao.slug')->generate($dc->activeRecord->title.'-'.$dc->activeRecord->year$slugOptions$aliasExists); 
    also nicht das ich das jetzt brauche aber so funktioniert das ja nicht bei mehrsprachigen Seiten. ok meist ist dann ja eh eine Sprachzuordnung dabei dann kann man die ja auch übergeben ^^

    Danke für die Hilfe
    Liebe Grüße
    WebRoxx


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
  •