Massenprojektierungs-Tutorial 2b - Adminbereich zur Verwaltung der Domains

Veröffentlicht am 22.10.2013, Beitrag von

 

Im letzten Tutorial habe ich euch gezeigt, wie man via PHP die jeweilige aufgerufene Domain auslesen und dort herum eine schicke Landingpage bauen kann. Dies wird die Standardseite aller noch nicht weiter eingerichteten, auf den Server zeigenden Domain sein. Möchte ich nun jedoch mehr mit der Domain machen, so komme ich um einen kleinen Adminbereich nicht herum.

 

Programmieren eines Adminbereichs

Ich werde dieses Thema ein wenig kürzer halten. Später könnt ihr euch den Adminbereich hier herunterladen und vielleicht selbst einmal ein wenig mit den PHP Befehlen spielen. Vieles kann man ganz nach seinen Wünschen anpassen.
Zu Beginn sollte man sich erst einmal fragen: Was soll der Adminbereich überhaupt können? Ganz klar: Konnektiere ich eine neue Domain auf meinen Server, so möchte ich ein wenig Individualität einbringen. Ich möchte zum Beispiel ein Haupt-Keyword vergeben, damit später auch passende Produkte angezeigt werden können. Ebenso wäre es vielleicht wünschenswert, ein wenig Longtailtraffic abzugreifen. Also sollen automatisch Werte von Google Suggest gezogen werden, und ich suche später aus, welche dieser Begriffe die Unterseiten meines Massenprojekts werden.
Gut wäre auch, wenn ich wenigstens für die Startseite die Möglichkeit hätte, eigenen Content einzupflegen.
Zu guter letzt sollen Dinge wie Meta Title und Description angelegt werden, am besten mit den jeweiligen Hauptkeywords der einzelnen Seiten.

Das ganze kann man natürlich noch weit umfangreicher gestalten. Für den Anfang, also für das Grundgerüst, wird das aber völlig ausreichen.

Schritt 1: Vorbereitungen

Template

Ich mag es, wenn der Adminbereich aufgeräumt und ein wenig stylisch ausschaut. Was liegt also näher, als bei Themeforest vorbeizuschauen und ein einfaches Theme auszuwählen? Richtig! Ich habe mich letzten Endes für "Equinox" entschieden. Mit 20 USD kann man nicht viel falsch machen.
Das Template splitte ich: header.tpl, footer.tpl, so dass ich dazwischen die jeweiligen Ausgaben meiner PHP Dateien einfügen kann. Das hat den Vorteil, dass man, wenn man zum Beispiel einmal im Header einen Menüpunkt ändern möchte, nicht zig .tpl Datein ändern muss, sondern nur die Header-Datei.

Massenprojektierung Adminbereich

Dateien

Als Template Engine habe ich mich für Smarty entschieden. Hiermit arbeite ich schon seit Jahren und das ist sehr leicht.

Des weiteren werden nun schon einmal die Standard PHP Dateien angelegt. Zuerst die

config.inc.php

Diese Datei lege ich ins Hauptverzeichnis, weil ja später auch das von uns bereits geschriebene Script (index.php) darauf zugreifen wird.Das Script wird sich mit der SQL Datenbank konnektieren. Außerdem werden die Pfade zu Smarty festgelegt:

<?

define('SMARTY_DIR', 'Smarty/libs/');
require(SMARTY_DIR.'Smarty.class.php');

/**
* Returns a database connection
*/
function getDatabaseConnection() {

$connection = mysql_connect("localhost", "dbuser", "dbpass") or die("Keine Verbindung zum Datenbank-Server möglich.");
mysql_select_db("massenprojektierung", $connection) or die("Datenbank nicht vorhanden.");

return $connection;

}
?>

Die confic.inc.php sowie die benötigten Smarty Dateien kannst du nun hochalden. Lege hierfür ein Verzeichnis "Admin" oder ähnlich an und lade alles darin hoch.

SQL Datenbank anlegen

Natürlich brauchen wir eine kleine Datenbank, um alles verwalten zu können. Lege eine Datenbank "massenprojektierung" an und weise sie einem SQL User zu.
Anschließend wird eine Tabelle namens "domains" angelegt und mit folgenden Feldern versehen (nicht alle benötigen wir zu Beginn, aber man kann sie ja schonmal anlegen):

  • id
    Die id dient später zur eindeutigen Identifizierung eine Reihe in der Tabelle. Jede id gibt es nur einmal und wächst automatisch mit jedem neuen Eintrag um 1. Die ID ist der Primärschlüssel der Tabelle.
  • domain
    Versteht sich von selbst, oder? Ich stelle allerdings ausserdem noch ein, dass es eine Domain nur ein einziges mal in dieser Tabelle geben darf (also UNIQUE).
  • added
    Ein Datumfeld, damit ich weiß, wann ich diese Domain eingetragen habe.
  • keywords
    Aus diesen (Longtail-)Keywords wird das Script später automatisch die Unterseiten des Massenprojekts erstellen.
  • description
    Das wird die Meta Description
  • title
    Wird der Meta Title
  • content
    Da kommt der individuelle Content rein, falls gewünscht.
  • hauptkey
  1. Eins der wichtigsten Einträge in dieser Tabelle. Das Hauptkey bestimmt, worum es auf dieser Seite geht.

Zusätzlich erstelle ich noch die Fehler visits, visitsmonth, keywordcount, ippop sowie googleindex. Hier kann man später Statistiken einblenden und den Verlauf der jeweiligen Seiten anschauen.

Hier das SQL Statement zur Erstellung dieser Felder:

CREATE TABLE IF NOT EXISTS `domains` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`domain` varchar(256) NOT NULL,
`visits` int(11) NOT NULL,
`visitsmonth` int(11) NOT NULL,
`keywordcount` int(11) NOT NULL,
`ippop` int(11) NOT NULL,
`added` datetime NOT NULL,
`keywords` text NOT NULL,
`description` text NOT NULL,
`title` text NOT NULL,
`content` text NOT NULL,
`googleindex` int(11) NOT NULL,
`hauptkey` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `domain` (`domain`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 ;

Gleichzeitig lege ich eine weitere Tabelle an, damit ich später Besucher und Referer je Domain auswerten kann:

CREATE TABLE IF NOT EXISTS `logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datum` datetime NOT NULL,
`agent` text NOT NULL,
`ipaddr` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;

Der Rest wird sich nun in diversen PHP Dateien ereignen. Hierfür lege ich noch eine index.php an.

Schritt 2: Die index.php des Adminbereichs - das Herzstück

In der index.php spielt sich fast alles ab. Hier kannst du durch den ganzen Adminbereich navigieren und Dinge anzeigen lassen und auswerten. Lediglich das Eintragen der Domain habe ich in eine andere Datei "outgesourced".
Ich werde jetzt nicht bis ins kleinste Detail in jede einzelne Zeile Code eingehen. Daher stelle ich dir bl0ß die einzelnen Funktionen vor, die ich bisher in der index.php eingebaut habe.
Eine Funktion wird aufgerufen, wenn eine "Action" passiert.
Beispiel: Rufst du deinen Adminbereich via deineIP/admin auf, so wird keine "Action" übergeben und das Script weiss: Ok, ich blende jetzt die Hauptseite, das Dashboard ein.
Hängst du aber eine Action dran, zum Beispiel deineIP/admin/?action=neuedomain, so wird das Script wissen, welche action gestartet wurde und welche Funktion aufgerufen werden soll.

Folgende "actions" wird es zu Beginn geben:

  • editdomain()
    Formular, um Details zur jeweiligen Domain zu editieren
  • editdomain2()
    Daten des abgeschickten Formulars werden eingelesen und die Tabellenzeile der jeweiligen Domain wird upgedated.
  • delete()
    Löschen einer Domain aus der Datenbank. Zuvor Sicherheitsabfrage, ob wirklich löschen.
  • delete2()
    Wenn Sicherheitsabfrage mit "Ja" beantwortet wurde, dann Domain löschen.
  • showdomains()
    Auflistung aller Domains in einer Tabelle

Darüberhinaus gibt es noch den Menüpunkt "Neue Domain". Hierfür haben wir die Datei [highlight color="#F95601"]adddomain.php[/highlight]. Diese beinhaltet mehrere Schritte zur Einrichtung einer Domain und die folgenden Funktionen:

  • adddomain()
    Schritt 1 - Domainname, Hauptkeyword sowie Content der Startseite kann eingegeben werden.
  • adddomain2()
    Daten werden in Datenbank gespeichert und anhand des Hauptkeywords wird nun Google Suggest durchlaufen. Anschließend werden alle Keywords, die durch Suggest ("Hauptkeyword", "Hauptkeyword a", "Hauptkeyword b", "Hauptkeyword c" etc.) ermittelt werden, aufgelistet. Bei Keywords, die du als Unterseite des Projekts sehen möchtest, aktivierst du die Checkbox.
  • adddomains3()
    Unterseiten werden in die SQL Datenbank in die jeweilige Tabellenzeile eingetragen. Anschließend werden noch ein allgemeiner Meta Title und Meta Description angelegt. Die Texte kannst du dort ändern. Natürlich kannst du diese beiden Felder auch via Formular eingeben lassen - das habe ich aber nicht eingebaut.
    Die Tabellenzeile der jeweiligen Domain wird nun mit allen Daten geupdated und die Einrichtung der Domain ist schon fertig.

Achja, ganz vergessen: Natürlich benötigen wir noch eine header.php sowie eine footer.php. Hier wird mittels ein paar Zeilen code lediglich die header.tpl oder die footer.tpl aufgerufen.

So, jetzt ist unser kleiner Adminbereich endlich fertig. Möchtest du das ganze einfach einmal selber testen, so kannst du dir das bisherige Script schon einmal herunterladen. Du musst lediglich alles hochladen, die confic.inc.php mit deinen SQL Daten anpassen und die .sql Datei mit phpMyAdmin in deine Tabelle importieren.

Achtung: Das Template gibt es leider nicht mehr bei Themeforest. Ich muss mal schauen, welche Alternative es hier gibt.

massenprojektierung php script


 

Kommentare

 

  1. Ronny

    23. Oktober 2013 at 14:23

    So habs grade mal ausprobiert. danke für die Vorarbeit. Ein paar Kleinigkeiten sind mir aufgefallen. Die css Formatierung des Adminbereiches haut noch nicht ganz hin (Schriften teilweise schlecht lesbar), aber das kann ja jeder selber anpassen. Bei der Auswahl der Suggest Subpages wäre ein „select all“ ganz nett.

    Das ist alles aber nur nebensächlich. was allerdings wichtig ist… fehlerhafte zeichencodierung… Adminbereich ist UTF8, in der Datenbank werden die daten aber mit Latin1 gespeichert, weshalb beim editieren der Domain die keywords (umlaute und co) fehlerhaft angezeigt werden. Abhilfe schafft das Ändern des Charset in der header.tpl von utf-8 auf iso8859-1. (template delete.tpl und delete2.tpl noch ändern damit die umlaute wieder ordentlich angezeigt werden.)
    Und wenn du Jetzt noch ne idee hast, warum domains nicht gelöscht werden, obwohl das script sagt, es wurde gelöscht, wäre ich happy

 

  1. Ronny

    23. Oktober 2013 at 14:35

    Nachtrag… Nachdem ich die Funktion delete2() erweitert hab, wurde mir auch der fehler angezeigt… falscher tabellenname ? also mal in der index.php Zeile 162 die mysql_query von DELETE FROM domain in DELETE FROM domains ändern und schon klappt das auch wieder mit dem Löschen. Kleine Ursache, große Wirkung ?

 

    • Ronny

      23. Oktober 2013 at 14:42

      Nachtrag 2… Mit meiner zeichensatzanpassung funktioniert zwar das Domains bearbeiten aber beim Anlegen gibts Probleme… also nochmal von vorn ^^

 

    •  

 

  1. Stefan

    18. November 2013 at 22:56

    Hi Jens, danke erstmal für deine auper Tutorials. Leider gibt es bei themeforest das Theme nicht mehr. Hast du vor das admin Script für ein anderes admin theme umzuschreiben? Oder läuft dein script auf einem anderen theme?

    Gruss Stefan

 

    • Jens

      18. November 2013 at 23:39

      Hi Stefan,
      danke, dass du mich darauf aufmerksam gemacht hast. Das ist natürlich schade, auch bei Google finde ich keine anderen Verweise. Ich schaue mal, was sich da am besten machen lässt.

      Gruß,
      Jens



Kommentar abgeben
Nach oben