CMS Contao 4.9.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.7.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. Hier klicken zum Ein- / Ausblenden
<?php
    // PHP-Konfiguration optimieren
    @error_reporting(E_ALL ^ E_WARNING);
    @ini_set("max_execution_time", 300);
    @ini_set("memory_limit", "512M");
	
#############################################################################################################################################
																									##########   EDIT HERE ONLY   ###########
    // 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																											#
    $ignorieren = array("*.sql.gz", "*.tar.gz", "*.tgz", "kas_backup", "usage", "logs", "assets", "contao-manager", "var", "vendor");		#
																																			#
#############################################################################################################################################

    // 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($ignorieren);
    $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>";
?>

db_backup.php

Code eingefügt. Hier klicken zum Ein- / Ausblenden
<?php
    // PHP-Konfiguration optimieren
    @error_reporting(E_ALL ^ E_WARNING);
    @ini_set("max_execution_time", 300);
    @ini_set("memory_limit", "512M");
	
#############################################################################################################################################
																									##########   EDIT HERE ONLY   ###########
	$db_name = "0815xyz";																			#########################################
	$db_passwd = "subber-secret-pw";																										#
																																			#
	// 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";
?>

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. Hier klicken zum Ein- / Ausblenden
<header id="header">
        <div class="inner">
          <h1><a href="<?= $this->route('contao_backend') ?>" accesskey="h" id="home" title="<?= $this->home ?>">Contao</a></h1>

			// Eigene Adminlinks hinzufügen
			<?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 } ?>
			// Eigene Adminlinks ENDE
			
            <?= $this->headerMenu ?>
        </div>
      </header>

Achtung:

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

Zurück