Contao-Camp 2024
Ergebnis 1 bis 17 von 17

Thema: Backend --> Eigener Menüpunkt

  1. #1
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    436

    Standard Backend --> Eigener Menüpunkt

    Hi,

    bei meiner 2.11.17 Installation hab ich mir im Backend selbst noch Links eingefügt (oberes Menü), die nur Admins zu Sehen bekommen.
    Hier im neuen 4.7.x hätte ich die gerne in der seitlichen Navigation drin, nur wie?

    HTML-Code:
    <?php if ($this->User->isAdmin): ?> <span class="backup_db"><a href="backup/db_backup.php" title="Datenbank Backup">DB Backup</a> &nbsp; :: &nbsp; </span> <?php endif; ?>
    <?php if ($this->User->isAdmin): ?> <span class="backup_ftp"><a href="backup/ftp_backup.php" title="Webspace Backup">FTP Backup</a> &nbsp; :: &nbsp; </span> <?php endif; ?>
    ToM

  2. #2
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    Für Erweiterungen, die ich im Menü anders anordnen will, benutze ich da die Datei
    app/Resources/contao/config/config.php:
    PHP-Code:
    <?php
    // Load icon in Contao 4.2 backend
    if ('BE' === TL_MODE) {
        
    $GLOBALS['TL_CSS'][] = 'files/backend/be.css';


    /**
     * Backend-Bereich BSV anlegen, wenn noch nicht vorhanden
     */
    if(!$GLOBALS['BE_MOD']['bsv']) 
    {
        
    $bsv = array(
            
    'bsv' => array()
        );
        
    array_insert($GLOBALS['BE_MOD'], 0$bsv);
    }

    $GLOBALS['BE_MOD']['bsv']['grandprix'] = array
    (
       
    'tables'           => array('tl_grandprix''tl_grandprix_tournaments'),
       
    'icon'             => 'system/modules/grandprix/assets/icons/icon.png',
    ); 

    if(
    $GLOBALS['BE_MOD']['content']['volunteeringlist'])
    {
        
    $GLOBALS['BE_MOD']['bsv']['volunteeringlist'] = $GLOBALS['BE_MOD']['content']['volunteeringlist'];
        unset(
    $GLOBALS['BE_MOD']['content']['volunteeringlist']);
    }

    if(
    $GLOBALS['BE_MOD']['content']['spielerregister'])
    {
        
    $GLOBALS['BE_MOD']['bsv']['spielerregister'] = $GLOBALS['BE_MOD']['content']['spielerregister'];
        unset(
    $GLOBALS['BE_MOD']['content']['spielerregister']);
    }

    if(
    $GLOBALS['BE_MOD']['content']['championslists'])
    {
        
    $GLOBALS['BE_MOD']['bsv']['championslists'] = $GLOBALS['BE_MOD']['content']['championslists'];
        unset(
    $GLOBALS['BE_MOD']['content']['championslists']);
    }
    Ich lege mir erst einen eigenen Bereich an, um danach ein paar Erweiterungen im Menü (im Inhalte-Bereich content) in diesen Bereich zu verschieben. Wahrscheinlich wird das Vorgehen bei Dir ähnlich sein. Eine der Erweiterungen (grandprix) definiere ich gleich für den bsv-Bereich, wobei der icon-Parameter keine Auswirkung mehr hat in C4, weil alles über das Backend-CSS läuft. Um meinem Bereich ein Icon zu geben (so ähnlich wäre das auch für die Menüpunkte möglich) steht in backend.css:
    HTML-Code:
    #tl_navigation .tl_level_1_group .group-bsv {
    	background             : url(bsv.svg) -2px -7px no-repeat;
    	background-size        : 25px;
    	background-color       : #4D4D4D;
    	color                  : yellow;
    	font-weight            : bold;
    }
    Die URL der Hintergrundgrafik muß dabei relativ zur CSS-Datei sein. Ich habe hier im CSS meinen Bereichstitel noch eingefärbt.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  3. #3
    Contao-Fan
    Registriert seit
    16.11.2012.
    Ort
    Freiburg
    Beiträge
    539

    Standard

    Wieso erstellst du die Einträge nicht gleich an der richtigen Position wenn du dein bundle bzw. Modul machst?
    Grüße
    Alex

  4. #4
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    436

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    [...]
    app/Resources/contao/config/config.php[...]
    Danke, das klingt etwas komplexer, wie erwartet. Bevor ich anfange, meine Links einzupflegen, eine Frage: Ist das updatesicher? Die Datei liegt ja schon arg im System drin...

    ToM

  5. #5
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.792

    Standard

    Ich weiß zwar nicht, wo Du Deinen obigen Code eingefügt hast. Aber das sieht mir nach externen Skripten aus, die Du in das Menü infiltrierst. Also keine eigenen oder fremden Module. Vielleicht gibt es ja für externe Links im Menü eine Erweiterung? Wenn Du nur Backend-Module umbiegen willst, dann verwende meinen Code. Der ist auch updatesicher, so wie früher die system/config/dcaconfig.php.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  6. #6
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    771
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Vielleicht gibt es ja für externe Links im Menü eine Erweiterung?
    Gibt es, contao-om-backend fällt mir da auf Anhieb ein. Damit lassen sich (u.a.) Links in der Tops- oder der Main-Navigation einfügen.
    Grüße, Stefko

  7. #7
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    436

    Standard

    Danke Euch beiden!
    Ich schau es mir an.

    ToM

  8. #8
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    436

    Standard

    @ Harley Rider:

    Schau mal, ich habs einfach hier in den Block integriert:

    HTML-Code:
      <?php $this->block('header'); ?>
        <?php if (!$this->isPopup): ?>
          <header id="header"<?php if ($this->pageOffset) echo ' class="down"'; ?>>
            <div class="inner">
              <h1><a href="<?= $this->route('contao_backend') ?>" accesskey="h" id="home" title="<?= $this->home ?>">Contao</a></h1>
              <nav aria-label="<?= $this->headerNavigation ?>">
                <ul id="tmenu">
                  <li><a href="<?= $this->route('contao_backend_alerts') ?>" class="icon-alert" title="<?= Contao\StringUtil::specialchars($this->systemMessages) ?>" onclick="Backend.openModalIframe({'title':'<?= str_replace("'", "\\'", Contao\StringUtil::specialchars($this->systemMessages)) ?>','url':this.href});return false"><?= $this->systemMessages ?><?php if ($this->systemErrorMessagesCount > 0) echo ' <sup>' . $this->systemErrorMessagesCount . '</sup>'; ?></a></li>
                  
                  
                  <?php $objUser = BackendUser::getInstance();
                  if ($objUser->authenticate() && $objUser->isAdmin) { ?>
                  <li><a href="_backup/db_backup.php" class="icon-db_bkp" title="Datenbank Backup">DB Backup</a></li>
                  <li><a href="_backup/ftp_backup.php" class="icon-ftp_bkp" title="Webspace Backup">FTP Backup</a></li>
                  <?php } ?>
    
                  
                  
                  <li><a href="<?= $this->route('contao_backend_preview') . $this->frontendFile ?>" class="icon-preview" title="<?= $this->previewTitle ?>" target="_blank" accesskey="f"><?= $this->preview ?></a></li>
                  <li class="submenu">
                    <h2><?= $this->username ?></h2>
                    <ul class="level_2">
                      <li class="info"><strong><?= $this->user->name ?></strong> <?= $this->user->email ?></li>
                      <li><a href="<?= $this->route('contao_backend', ['do'=>'login', 'ref'=>$this->ref]) ?>" class="icon-profile"><?= $this->profile ?></a></li>
                      <li><a href="<?= $this->route('contao_backend', ['do'=>'security', 'ref'=>$this->ref]) ?>" class="icon-security"><?= $this->security ?></a></li>
                      <li><a href="<?= $this->logoutLink ?>" class="icon-logout" accesskey="q"><?= $this->logout ?></a></li>
                    </ul>
                  </li>
                  <li class="burger"><button type="button" id="burger"><?= Contao\Image::getHtml('burger.svg') ?></button></li>
                </ul>
              </nav>
            </div>
          </header>
        <?php endif; ?>
      <?php $this->endblock(); ?>
    Ergebnis: Unbenannt5.PNG

    ToM

    Tante Edith sagt: jetzt auch mit Abfrage, sodass nur Admins den Link sehen können.
    Geändert von Nightwing (19.03.2019 um 11:21 Uhr)

  9. #9
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    436

    Standard

    Mit Version 4.9.x@RC hat sich im be_main Template einiges geändert, daher:

    HTML-Code:
          <header id="header">
            <div class="inner">
              <h1><a href="<?= $this->route('contao_backend') ?>" accesskey="h" id="home" title="<?= $this->home ?>">Contao</a></h1>
    
                <?php $objUser = BackendUser::getInstance();
                if ($objUser->authenticate() && $objUser->isAdmin) { ?>
                  <ul id="custmenu">
                    <li><a href="_backup/db_backup.php" class="icon-db_bkp" title="Datenbank Backup">DB Backup</a></li>
                    <li><a href="_backup/ftp_backup.php" class="icon-ftp_bkp" title="Webspace Backup">FTP Backup</a></li>
                  </ul>
                <?php } ?>
                
                <?= $this->headerMenu ?>
            </div>
          </header>
    Man beachte bitte die eigene CSS Klasse #custmenu!

    ToM

  10. #10
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard Rückfrage

    Hallo in die Runde!

    ich möchte den Thread nochmal aufwärmen - die ursprüngliche Frage finde ich sehr interessant - ich meinte, sie wurde noch nicht ausreichend beantwortet...

    Ich möchte beispielweise im Backend-Menü unter C4.9 einen Menüpunkt (genau gesprochen eine Menügruppe, wie z.B. 'content') ganz oben in das Array 'BE_MOD' einfügen, so dass mein Modul zuerst - noch vor 'content' steht. Mein Beweggrund ist nicht ein übermäßiges Geltungsbedürfnis sondern der Wunsch, dass der enstsprechende Redakteur resp. die Redakteurin, später diese Menügruppe immer zuerst vorfindet, um sich schnell zu orintieren (sie sollen dort nur Daten erfassen). Die klassischen Inhaltselemente sollen (vielleicht) danach kommen - der Rest ist ausgeblendet. In der Tat funktioniert mein Code aus der config.php aus 3.5 LTS in der config.php unter 4.9 nicht mehr. Ich möchte kein be_template ändern. Früher konnte man die Menüpunkte durch Zugriff auf das Array $GLOBALS['BE_MOD'] in der config.php beeinflussen.

    Mein Code unter 3.5 LTS sah so aus:

    Code:
    array_insert(
    $GLOBALS['BE_MOD'],0,
      array(
        'my_be_project' => array(
          'my_modul' => array(
            'tables' => array('tl_A','tl_B','tl_C'),
    ...
    Es scheint so, als gäbe es das array_insert in C4.9 nicht mehr (jedenfalls bleibt es wirkungslos und wirft auch keine Exception), aber auch array_push und array_unshift etc. haben keinen Einfluss mehr auf das Array $GLOBALS['BE_MOD'] in meiner aktuellen config.php (C4.9).

    Ich habe auch noch eine Vermutung, dass es im C4.9 möglw. ein Problem der Ladereihenfolge des Autoloaders ist. Möglw. wird mein Bundle vor allen anderen Bundles geladen und diese überschreiben dann meine Konfiguration. Wäre das denkbar? Gibt es in der Plugin.php in der Methode getBundles()auch die komplexe Möglichkeit, mein Bundle nach ContaoCore und zugleich noch nach Bundle z.B. Calendar und zugleich vor Bundle News zu laden? (ich habe die Plugin.php nicht geändert, sie lädt - wie vorgeschrieben: BundleConfig::create('myname\MyProjectsBundle\MyNa meProjectsBundle')->setLoadAfter(['Contao\CoreBundle\ContaoCoreBundle']),)

    Kann mir da jmd. vielleicht nochmals mit Tipps helfen?

    Viele Grüße
    vom Theo

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

    Standard

    array_insert gibt es nach wie vor (auch in Zukunft für Contao 4.x, nur deprecated ab Contao 4.10).

    Nähere Informationen wie man eigene Backend Module macht findest du hier: https://docs.contao.org/dev/framework/back-end-modules/

    Du kannst auch eigene Backend Controller machen: https://docs.contao.org/dev/guides/back-end-routes/

    Oder über das contao.backend_menu_build Event das Backend Menü beliebig bearbeiten.

  12. #12
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard

    Danke Spookie!

    1. array_insert OK!
    2. Mein Modul habe ich soweit fertig. Ich möchte nur das Menü ändern...
    3. Backend-Controller OK - Danke!
    4. contao.backend_menu_build - werde ich gleich mal ausprobieren...

    Aber wie sieht es mit meiner eigentlichen Frage aus? Ist die von mir und von den Anderen Fragestellern beschriebene Methode ungültig/unmöglich in C4.9? Warum lässt sich die Reihenfolge in $GLOBALS['BE_MOD'] nicht ändern?

    Kannst Du (od. jmd. anders) möglw. noch was dazu sagen?

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

    Standard

    Zitat Zitat von theobald Beitrag anzeigen
    Warum lässt sich die Reihenfolge in $GLOBALS['BE_MOD'] nicht ändern?
    Hast du auf Contao 4.9.4 aktualisiert?

  14. #14
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard

    also bei mir steht: Version 4.9.4 (08.07.2020, 15:40)

    aber ich denke, der Fehler liegt irgendwo bei mir... ich habe noch keine umfangreiche Erfahrung in C4, jedoch langer C3.5LTS gemacht, jetzt habe ich gerade Marko Cupic's Bundle-Creator ausprobiert und der generiert mir ein Bundle ratz-fatz, welches auch läuft.

    Das Bundle habe ich jetzt für mich weiter angepasst.

    (aber by the way https://docs.contao.org/dev/guides/back-end-routes/ läuft bei mir auch nicht)... ich muss also noch suchen...

  15. #15
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard

    ok - jetzt gehts - genaueres habe ich hier geschrieben...

    Also mein Menu-Listener funktioniert jetzt, aber er fügt mit $tree->getChild('content') unter 'Inhalte' ein.

    Gibt es Docs zu $tree, also genauer gesagt zu MenuEvent::getTree()
    oder
    gibt es ein getRoot(), damit ich vor 'Inhalte' ein Menü einfügen kann...
    oder
    muss man in den Hades des Quellcodes hinabsteigen?

    LG
    Theo
    Geändert von theobald (07.08.2020 um 14:43 Uhr)

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

    Standard

    Zitat Zitat von theobald Beitrag anzeigen
    Gibt es Docs zu $tree, also genauer gesagt zu MenuEvent::getTree()
    oder
    gibt es ein getRoot(), damit ich vor 'Inhalte' ein Menü einfügen kann...
    oder
    muss man in den Hades des Quellcodes hinabsteigen?
    https://symfony.com/doc/master/bundl...dle/index.html

  17. #17
    Contao-Nutzer
    Registriert seit
    13.07.2013.
    Ort
    Nordsachsen
    Beiträge
    130

    Standard

    naja - ich bin gerade am Verzweifeln... das klappt alles nich... sorry

    Hat jmd. möglw. noch eine Idee, wie man die Reihenfolge der Menüpunkte am Backend ändern kann??
    Geändert von theobald (08.08.2020 um 12:29 Uhr)

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
  •