CMS Contao 4.11.x

Hier findest Du einige von mir geänderte Templates, die ich unter anderem auf dieser Seite verwende. Viele dieser Templates habe ich schon in Version 2.11.17 genutzt, allerdings poste ich nur noch die aktuelleren ab Version 4.9.x, die anderen sind einfach zu alt... Einige Ideen und Anregungen hab ich dem Contao Community Forum entnommen. Viel Hilfe habe ich auch vom Kellerkind erhalten, an dieser Stelle nochmals vielen Dank dafür! Manch Eintrag ist von Version 4.7.x / 4.8.x und mit dem Update auf 4.9.x weggefallen, allerdings lass ich es (noch) drin, da es noch jung ist...

Datenbank & FTP Backup bei all-inkl + Admin Link im Backend

Ganz Praktisch finde ich den Service von meinem Webhoster all-inkl, denn er bietet zwei kleine Scripts an, mit dem man seine Datenbank und den Webspace sichern kann. Hier poste ich die von mir leicht modifizierten Scripts und gleich die nötige Änderung im Backend Template, um die Links anzuzeigen. Sicherheitshalber setzt man einen .htaccess Verzeichnis / Zugriffsschutz auf das Verzeichnis, in dem die Backupdateien liegen.

Zuerst erstelle ich im Contao Verzeichnis web ein neues Verzeichnis _backup. Die Scriptdateien nun im neuen Verzeichnis _backup als ftp_backup.php/ db_backup.php speichern:

ftp_backup.php

Code eingefügt.
<?php
    // PHP-Konfiguration optimieren
    @error_reporting(E_ALL ^ E_WARNING);
    @ini_set("max_execution_time", 300);
    @ini_set("memory_limit", "512M");
	
    // Zu sicherndes Unterverzeichnis. Bleibt leer, wenn gesamter Account gesichert werden soll.
	$verzeichnis = "/_hp/";
	// Verzeichnis, wohin gesichert werden soll. Pfad gilt ab Script.
	$targetdir = "data/";

    // Auszuschließende Ressourcen		
    $ignore_data = array(	"*.sql.gz",
							"*.tar.gz",
							"*.tgz",
							"kas_backup",
							"usage",
							"logs",
							"assets",
							"contao-manager/.htaccess",
							"contao-manager/composer.json~",
							"contao-manager/composer.lock~",
							"contao-manager/contao-manager-old.phar.php",
							"contao-manager/packages",
							"contao-manager/cache",
							"contao-manager/config.json",
							"system/cache",
							"system/themes",
							"system/tmp",
							"system/initialize.php",
							"system/modules",
							"var",
							"vendor",
							"web/bundles",
							"web/files",
							"web/system",
							"web/app.php",
							"web/index.php",
							"web/preview.php"	);

    // PEAR-Klasse einbinden und Archiv erstellen
    $pfad = preg_replace('/(\/www\/htdocs\/\w+\/).*/', '$1', realpath(__FILE__));
    include "Archive/Tar.php";
	$targetdir = "data/";
    $archivname = $targetdir . "ftp_dump_".preg_replace('/.+\/(.+)\/$/', '$1', $pfad).date('_Y-m-d_H-i-s').".tar.gz";
    $archiv = new Archive_Tar($archivname, true);
    $archiv->setIgnoreList($ignore_data);
    $archiv->createModify($pfad.$verzeichnis, "", $pfad);
	$link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
	$link = str_replace(basename(__FILE__),$archivname,$link);
    // echo "Backup fertig <a href='" . $link . "'>" . $archivname . "</a>";
    echo "Backup fertig.";
?>

db_backup.php

Code eingefügt.
<?php
    // PHP-Konfiguration optimieren
    @error_reporting(E_ALL ^ E_WARNING);
    @ini_set("max_execution_time", 300);
    @ini_set("memory_limit", "512M");
	
    // Datenbank Zugangsdaten		
	$db_name = "d02f58d2";
	$db_passwd = "sdgfgfsd213213fsdg";

	// Verzeichnis, wohin gesichert werden soll. Pfad gilt ab Script.
	$targetdir = "data/";
	$sql_file = $targetdir . "sql_dump_" . $db_name . "_" . date('Y-m-d_H-i-s') . ".sql";

	exec("mysqldump -u $db_name -p'$db_passwd' --allow-keywords --add-drop-table --complete-insert --quote-names $db_name > $sql_file");
	exec("gzip $sql_file");
	$datei = $sql_file . ".gz";
	$link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
	$link = str_replace(basename(__FILE__),$datei,$link);
    // echo "Backup fertig <a href='" . $link . "'>" . $datei . "</a";
    echo "Backup fertig.";
?>

Wenn man bei all-inkl die Plus Tarife hat, kann man die inkludierten Cronjobs nutzen, daher hab ich die Dateien leicht abgewandelt, sodass die generierten Files im data Verzeichnis landen. Somit kann man auch auf das Verzeichnis den Cronjob setzen, der alle alten Dateien ganz automagisch löscht.

Man muss in den Scripts natürlich noch den Webspace und den Namen / Passwort der Datenbank angeben.

Hier noch das geänderte Template be_main.html5, der Übersichtlichkeit halber habe ich etwas mehr Code gepostet...

be_main.html5

Code eingefügt.
<?php $this->block('header'); ?>
    <?php if (!$this->isPopup): ?>
      <header id="header">
        <div class="inner">
          <h1>
            <a href="<?= $this->route('contao_backend') ?>" accesskey="h" id="home" title="<?= $this->home ?>">
              <span class="app-title">Contao</span>
              <?php if ($this->badgeTitle): ?>
                <span class="badge-title"><?= $this->badgeTitle ?></span>
              <?php endif; ?>
            </a>
          </h1>
		  
		  
		  
		  <?php $objUser = BackendUser::getInstance();
		    if ($objUser->authenticate() && $objUser->isAdmin) { ?>
			  <ul id="custom_menu">
				<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>
    <?php endif; ?>
  <?php $this->endblock(); ?>

Achtung:

Bitte die Templates im Backend unter Templates auswählen und speichern und dann dort editieren! Ansonsten sind die Änderungen nicht updatesicher.

Zurück