Ergebnis 1 bis 6 von 6

Thema: Seiten aus der Alias-Generierung ausschließen

  1. #1
    Contao-Fan Avatar von dhe
    Registriert seit
    25.10.2010.
    Ort
    Esslingen a.N.
    Beiträge
    657

    Standard Seiten aus der Alias-Generierung ausschließen

    Hallo an die Community,
    kennt jemand eine Möglichkeit, wie ich in meiner Seitenstruktur eine Seite dazu bringen kann, dass ihr Alias nicht weitervererbt wird?
    Mein Ziel ist es, mit Hilfe der Seitenstruktur ein Menü aufzubauen, allerdings sollen die Seiten nur die Aliase weiterverebt bekommen, die der Redakteur definiert.
    Ich habe einmal die Extension hofff/contao-trueurl, allerdings scheint die (zumindest bei mir) nicht wie gewünscht zu funktionieren da jedes mal, wenn ich auf "Seitenaliase generieren" klicke, wieder der komplette Pfad in den Alias gepackt wird (Für die Profis: auch wenn ich die Checkbox "Alias nicht vererben" auswähle, wird dennoch der komplette Pfad reingeschrieben.)

    Hat jemand eine Idee? eventuell vll so sogar jemand ein Snippet für die DCA?

    Grüße an alle.

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

    Standard

    In einem Projekt verwenden wir folgendes:
    PHP-Code:
    <?php

    $GLOBALS
    ['TL_DCA']['tl_page']['fields']['alias']['save_callback'][] = array('tl_page_custom''processAlias');

    class 
    tl_page_custom
    {
        public function 
    processAlias($varValueDataContainer $dc)
        {
            if( \
    Config::get('folderUrl') )
            {
                
    $arrFolders = \Database::getInstance()->prepare("SELECT alias FROM tl_page WHERE type = ?")->execute('m17Folder')->fetchEach('alias');
                foreach( 
    $arrFolders as $folder )
                {
                    if( 
    $folder )
                    {
                        
    $varValue str_replace$folder.'/'''$varValue );    
                    }        
                }
            }

            
    // if the alias starts with a slash, remove the slash
            
    if( stripos$varValue'/' ) === )
            {
                
    $varValue ltrim$varValue'/' );
            }

            return 
    $varValue;
        }
    }
    Damit werden Seiten vom Typ "m17Folder" beim speichern ausgeschlossen - bei Aliase generieren jedoch vermutlich nicht.

  3. #3
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Ich verwende für solche Zwecke die Folderpage Extension bin Terminal42. Diese sorgt auch dafür, dass der alias des Ordners leer ist und somit nicht in der URL auftaucht.

    https://github.com/terminal42/contao-folderpage

  4. #4
    Contao-Fan Avatar von dhe
    Registriert seit
    25.10.2010.
    Ort
    Esslingen a.N.
    Beiträge
    657

    Standard

    Zitat Zitat von webstar Beitrag anzeigen
    Ich verwende für solche Zwecke die Folderpage Extension bin Terminal42. Diese sorgt auch dafür, dass der alias des Ordners leer ist und somit nicht in der URL auftaucht.
    Der Nachteil von folderpage ist der Umstand, dass alle "Ordner" den Flag unsichtbar fest in der Klasse gesetzt bekommen und demnach nicht im Menü sichtbar sind (inkl. aller Unterseiten)

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

    Standard

    Zitat Zitat von dhe Beitrag anzeigen
    Der Nachteil von folderpage ist der Umstand, dass alle "Ordner" den Flag unsichtbar fest in der Klasse gesetzt bekommen und demnach nicht im Menü sichtbar sind (inkl. aller Unterseiten)
    In Contao 4 kannst du folgendes in die app/Resources/contao/dca/tl_page.php einfügen:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_page']['palettes']['folder'] = str_replace(',guests'',hide,guests'$GLOBALS['TL_DCA']['tl_page']['palettes']['folder']);
    $GLOBALS['TL_DCA']['tl_page']['config']['onsubmit_callback'][] = function(\Contao\DataContainer $dc)
    {
        if (
    null === $dc->activeRecord || 'folder' !== $dc->activeRecord->type) {
            return;
        }

        \
    Contao\System::getContainer()->get('database_connection')->update(
            
    'tl_page', ['hide' => $dc->activeRecord->hide], ['id' => $dc->id]
        );
    }; 
    und dann folgendes nav_default.html5 Template verwenden:
    PHP-Code:
    <ul class="<?= $this->level ?>">
      <?php foreach ($this->items as $item): ?>
        <?php if ('folder' == $item['type']): ?>
          <?php $item['class'].= ' folder'?>
          <li class="<?= $item['class'?>"><span class="<?= $item['class'?>"<?php if (!empty($item['subitems'])) echo ' aria-haspopup="true"'?> itemprop="name"><?= $item['link'?></span><?= $item['subitems'?></li>
        <?php elseif ($item['isActive']): ?>
          <li class="<?= $item['class'?>"><strong class="<?= $item['class'?>"<?php if (!empty($item['subitems'])) echo ' aria-haspopup="true"'?> itemprop="name"><?= $item['link'?></strong><?= $item['subitems'?></li>
        <?php else: ?>
          <li<?php if ($item['class']) echo ' class="' $item['class'] . '"'?>><a href="<?= $item['href'] ?: './' ?>" title="<?= $item['pageTitle'] ?: $item['title'?>"<?php if ($item['class']) echo ' class="' $item['class'] . '"'?><?php if ($item['accesskey']) echo ' accesskey="' $item['accesskey'] . '"'?><?php if ($item['tabindex']) echo ' tabindex="' $item['tabindex'] . '"'?><?php if ($item['nofollow']) echo ' rel="nofollow"'?><?= $item['target'?><?php if (!empty($item['subitems'])) echo ' aria-haspopup="true"'?> itemprop="url"><span itemprop="name"><?= $item['link'?></span></a><?= $item['subitems'?></li>
        <?php endif; ?>
      <?php endforeach; ?>
    </ul>

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

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
  •