Kontakt aufnehmen

Breadcrumb im Backend (CMS)

Derzeit können wir im Dashboard unseres CMS nur noch die Inhalte des aktuellen Ordners sehen. Über die neue Breadcrumb ist es möglich auch diese zu begutachten. Wenn Unterordner vorhanden sind, sieht man einen Breadcrumb-Pfeil. Beim Überfahren dieses Pfeils sieht man die Unterordner und kann seinen gewünschten Unterordner auswählen.

Für diese Funktion mussten einige Änderungen erfolgen, von denen ich hier ein paar erkläre. Und zwar wurde die Breadcrumb bisher immer über die Klasse sys erstellt. Wir möchten diese neue Funktion aber nur beim Dashboard haben. Deswegen wurde die Methode in die abstrakte Klasse editor verbaut. Im Dashboard lässt sie sich dann überschreiben.

Zu erst müssen wir in der /system/sys.php die neue displayBreadcrumb Funktion die gleich in die Page-Klasse kommt aufrufen:

  static function displayBreadcrumb($separator,$class,$idpraefix){
    global $currentpage;
    $currentpage->displayBreadcrumb($separator,$class,$idpraefix);
  }

In der system/classes/page.php wird wiederum die gleichnamige Funktion des Editors aufgerufen:

  function displayBreadcrumb($separator,$class,$idpraefix){
    $this->editor->displayBreadcrumb($separator,$class,$idpraefix);
  }

In der abstrakten Klasse /system/classes/editor.php wird dann die Standard-Funktion aus der alten sys-Klasse ausgeführt:

    function displayBreadcrumb($separator,$class,$idpraefix){
      $i = 1;
      $breadcrumb = $this->page->getBreadcrumb();
      $host = getSetting("global","global","host");
      while($i <= count($breadcrumb)){
        echo "<a href="".$host.$breadcrumb[$i-1][0].".html" class="".$class.""
              id="".$idpraefix.$i."">".$breadcrumb[$i-1][1]."</a>";
        if($i < count($breadcrumb)){
          echo $separator;
        }
        $i++;
      }
    }

Und jetzt kommt der letzte wichtige Schritt: Das Überschreiben dieser Funktion in der /system/classes/dashboard.php:

    function displayBreadcrumb($separator,$class,$idpraefix){
      $host = getSetting("global","global","host");
      ?>
        <script type="text/javascript" src="<?PHP echo $host; ?>/system/skins/backenddefault/breadcrumb.js"></script>
        <ul id="breadcrumb_dropdown">
          <li>
            <?PHP
              $i = 1;
              $breadcrumb = $this->page->getBreadcrumb();
              while($i <= count($breadcrumb)){
                echo "<a style='display:inline' href="".$host.$breadcrumb[$i-1][0].".html" class="".$class.""
                      id="".$idpraefix.$i."">".$breadcrumb[$i-1][1]."</a>";
                if($i < count($breadcrumb)){
                  echo $separator;
                }
                $i++;
              }
              if($_GET['dir']){
                $first = true;
                $fulldir = "";
                foreach(explode('/',$_GET['dir']) as $dir){
                  if(!$first){
                    echo $separator." ";
                    $fulldir .= "/".$dir;
                  }
                  else{
                    $first = false;
                    $fulldir .= $dir;
                  }
                  echo "<a style='display:inline' href='".$host.$this->page->alias.".html?dir=".$fulldir."'>".$dir."</a>";
                }
              }
              $subFolders = FileServer::getFolders(getSetting("global","global","root")."content/articles/".$_GET['dir']);
              $host = getSetting("global","global","host");
              if($subFolders){
            ?>
          </li>
          <li>
            <a href="#" onmouseover="openFolders()" onmouseout="closeFoldersTime()">-&gt; </a>
            <div id="subfolders" onmouseover="cancelClosingFolders()" onmouseout="closeFoldersTime()">
              <?PHP
                foreach($subFolders as $folder){
                  echo "<a href='".$host.$this->page->alias.".html?dir=".$_GET['dir']."/".$folder."'>".$folder."</a>";
                }
              ?>
            </div>
          </li>
        </ul>
      <?PHP
      }
    }

Außerdem wurden noch einige CSS- und Javascriptänderungen durchgeführt. Welche genau steht im r10.

Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Cookie-Einstellungen

Helfen Sie dabei, uns noch besser zu machen. Wir nutzen Cookies und ähnliche Technologien, um die Website auf Ihre Bedürfnisse anzupassen. Zur Datenschutzerklärung

Auswahl speichern