Startseite | Mein Account | News | Presse | Forum | Impressum | Sitemap



Mein BVDMÜber unsUnsere MitgliederNewsMotorradtrainingBVDM aktivStreckensperrungenGefahrenmeldungForumLetzte BeiträgeRSS FeedAltes ForumGästebuchKontakt
Sie befinden sich hier:  Forum | Allgemeines | Small Talk und Offtopic | Forum Copy (homepagemodules.de)


Um im Forum zu schreiben, musst Du angemeldet sein!

Unbeantwortetes Thema

Forum Copy (homepagemodules.de)


Autor Nachricht
Verfasst am: 11. 10. 2009 [20:28]
waldi
Franz Waldmann
Dabei seit: 13.06.2007
Beiträge: 35
Liebe Zielgruppe,

ich habe das bisherige Forum, welches bei homepagemodules.de lief, kopiert und so eingebunden, dass Registrierung, Anmeldung und allerlei Links, die zur reinen Ansicht nicht benötigt werden, nicht mehr vorhanden sind. Vielleicht interessiert es ja den ein oder anderen, wie das von statten ging

Zuerst das gesamte alte Forum downloaden. Dazu gibt es bereits nützliche Tools im Web. So z.B. für Windows der Webseite Kopierer HTTrack mit dem komplette Webseites inkl. Links heruntergeladen werden können.

Jetzt hat man die Webseite zwar offline auf der Platte, die Links zur Registrierung etc, die man für eine statische Offline-Ansicht nicht benötigt, sind jedoch noch da. Da hilft ein kleines Java-Programm, dass ich quick&dirty geschrieben habe:

PHP
package de.bvdm.forum;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
 
/**
 * Klasse generiert aus dem alten Forum statische Seiten ohne Registeriung/Login etc Möglichkeit
 * 
 * @author Franz Waldmann
 * @since 11.10.2009
 */
public class GenerateStaticForum {
 
  private static final String PATH_IN = "/Users/waldi/Downloads/BVDM Forum/homepagemodules.de/";
  private static final String PATH_OUT = "/Users/waldi/Downloads/test/site/";
 
  public void doGenerate() {
 
    String htmlHead = "<head><title>Forum</title>\n<link rel=\"stylesheet\" type=\"text/css\"" +
                                 " href=\"style0-tglobal-1.css\">\n</head>\n";
    String bodyTag = "<body id=\"forum\" marginheight=\"0\" marginwidth=\"0\" leftmargin=\"0\""+
                                " rightmargin=\"0\" topmargin=\"0\" bottommargin=\"0\">\n";
    String tabStart = "<table cellpadding=0 cellspacing=0 border=0 width=\"95%\""+
                               " align=\"center\"><tr>\n";
 
    String lookupStart = "<td colspan=\"2\" class=\"tbhi\" valign=\"top\">";
    String lookupEnd = "</body>";
 
    File dir = new File(PATH_IN);
    String[] children = dir.list();
    for (String child : children) {
      if (child.endsWith(".html")) {
        try {
          FileInputStream inStream = new FileInputStream(PATH_IN + child);
          BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
          FileWriter writer = new FileWriter(PATH_OUT + child);
          boolean started = false;
          boolean everStarted = false;
          while (reader.ready()) {
            String line = reader.readLine();
            if (line.startsWith(lookupStart)) {
              started = true;
              everStarted = true;
              writer.write(htmlHead);
              writer.write(bodyTag);
              writer.write(tabStart);
            }
            if (line.equals(lookupEnd)) {
              started = false;
            }
            if (started) {
              line = line.replaceAll(">antworten</a>", "></a>");
              line = line.replaceAll(">Neues Thema erstellen</a>«", "></a>«");
              writer.write(line);
            }
          }
          writer.close();
          if (!everStarted) {
            copyFile(child);
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }
 
  private void copyFile(String name) {
    try {
      File inFile = new File(PATH_IN + name);
      File outFile = new File(PATH_OUT + name);
      InputStream in = new FileInputStream(inFile);
      OutputStream out = new FileOutputStream(outFile);
      byte[] buf = new byte[1024];
      int len;
      while ((len = in.read(buf)) > 0) {
        out.write(buf, 0, len);
      }
      in.close();
      out.close();
    } catch (Exception ex) {
      System.out.println(ex);
    }
  }
 
  public static void main(String[] args) {
    new GenerateStaticForum().doGenerate();
  }
 
}


Wenngleich oben "PHP" steht, handelt es sich um Java.

Nun noch die beiden Bilderverzeichnisse nach /Users/waldi/Downloads/ kopieren und fertig. Ausserdem können alle news*.html files, alle captcha*.gif files gelöscht werden. Das spart am Ende Bandbreite beim übertragen und ein wenig Plattenplatz auf dem Server. Die Pfade im Codebeispiel müsst Ihr natuerlich anpassen - eh klar.

Viel Spass beim Nachbauen.

cya, Franz



 
© BVDM e.V.