Beiträge zu “Movabletype”

Liquid Exception Unknown operator

Bei der Migration von Movabletype nach Jekyll gab es einige Dokument die nicht umgewandelt worden sind. Ein Dokument erzeugte den Fehler

Liquid Exception: Unknown operator is in _posts/2014-10-09-virtuelle_host_dateien_mit_ansible_verwalten.markdown

Das Problem ist: In diesem Beitrag sind Variablen für Jinja enthalten die Liqid als Variablen interpretiert und die aber nicht definiert sind.

Dieser Beitrag brachte die Lösung.

Man muss die betroffenen Texte mit einem

raw endraw

in geschweiften Klammern mit Prozentzeichen einfassen. Dann werden die “Variablen” ignoriert.

10.5.15
Weitere Beiträge zu: Jekyll,   Movabletype  

Migration des Blogs auf Jekyll abgeschlossen

Heute war es soweit. Die seit längerer Zeit andauernden Arbeiten an der Migration dieses Blogs von Movabletype auf Jekyll sind abgeschlossen.

Zuerst habe ich eine kleinere Webseite umgestellt und dabei die meisten Anpassungen in der Gestaltung erstellt.

Bei der Umstellung dieses Blogs waren vor allem die “Massagen” in den Blogeinträgen recht aufwendig. Diese inhaltlichen Änderungen betrafen vor allem die Links auf Bilder und die interne Verlinkung auf Seiten.

Die interne Verlinkung hätte man lassen können aber da ich eh schon dran war… (Die URL des Blogs hat sich über die Jahre in verschiedenen Schritten von http://hagen-bauer.de/blog auf https://www.hagen-bauer.de)

Bei den Bildern waren Anpassungen notwendig weil ich zum einen über die Jahre meine Organisation der Bilder geändert habe und zum anderen die Bilder in Verzeichnissen im Root Directory des Blogs abgelegt waren. Bei Jekyll Sites ist es sinnvoller alle Bilder in ein Verzeichnis abzulegen. Diese “Massage” war mit sed recht sinnvoll durchzuführen

  sed -i -f ../sed-mig *

Das Input für sed sah dann so aus (ja, Regex Freaks könnten das noch schöner machen)

s#/blog/assets_c#/images/assets_c#g
s#hagen-bauer.de/assets_c#hagen-bauer.de/images/assets_c#g
s#/blog/201002/201002-#/images/2010/201002-#g
s#/blog/201003/201003-#/images/2010/201003-#g
s#/blog/201004/201004-#/images/2010/201004-#g
s#/blog/201005/201005-#/images/2010/201005-#g
s#/blog/201006/201006-#/images/2010/201006-#g
...
....
s#/2014/201401-#/images/2014/201401-#g
s#/2014/201402-#/images/2014/201402-#g
s#/2014/201410-#/images/2014/201410-#g
s#](/2014/201403-#](/images/2014/201403-#g
s#](/2014/201404-#](/images/2014/201404-#g
s#](/2014/201405-#](/images/2014/201405-#g

Um die Fehler zu finden habe ich mit Jekyll eine Seite erstellt in der alle Einträge dargestellt wurden und mit Firebug konnte man dann in der Console schön die fehlenden Links finden.

Leider habe ich keine Möglichkeit gefunden in Jekyll die URL aus dem exportierten Basename zu bauen. Jekyll hat immer den Dateinahmen verwendet. mit einem

rename 's/_/-/g' _posts/*

konnte man das schnell fixen.

Was hat nicht geklappt?

In meinem alten Blog hatte ich in der rechte Spalte eine Tag Cloud die auf jeder Seite des Blogs angezeigt wurde. Ich konnte diese Tag Cloud zwar erstellen, nur leider hat diese Cloud die Build Zeit von 40 Sekunden auf 45 Minuten !!! hochgeschraubt. Deswegen gibt es die Tag Cloud nur noch auf einer Seite.

Die Jahres und Monatsarchive konnte ich (noch) nicht so schön umsetzen. Es gäbe zwar Möglichkeiten aber am Ende wollte ich mir die Arbeit sparen da ich eh nicht glaube das sie viel genutzt werden.

Was soll noch kommen?

Aktuell wird die Seite lokal gehalten und erstellt und dann mir rsync auf den Webserver gespielt. Später möchte ich den Build Prozess auf den Server verlagern.

Die Suche ist erst mal mit DuckDuckGo erstellt. Hier würde ich gerne einen Suchindex anbinden.

9.5.15
Weitere Beiträge zu: Jekyll   Movabletype  

MovableType: Security Update notwendig

Wird Zeit das ich von MT wegkomme. Gibt wieder ein Security Update

We are releasing Movable Type 6.0.8 and 5.2.13 as mandatory security updates. These updates resolved security-related issue discovered in all previous versions of Movable Type 6 and Movable Type 5. We strongly recommend upgrading to the newest version.

alternat-txt

15.4.15
Weitere Beiträge zu: Movabletype  

Auf dem Weg von Movabletype hin zu Jekyll

Dieser Blog wird seit Beginn mit der Software Movabletype verwaltet. Ende 2009 standen für mich im wesentlichen nur Wordpress oder Movabletype zur Auswahl. MT war damals der altgediente Platzhirsch und Wordpress der aufsteigende Stern am Bloggerhimmel. Ich hatte mich damals zu MT entschieden weil Wordpress zum damaligen Zeitpunkt mit ständigen schwer installierbaren Sicherheitsupdates zu kämpfen hatten wohin gegen MT als stabil, robust aber etwas kniffelig bei der Installation galt.

In der Zwischenzeit hat sich Wordpress als Gewinner etabliert, Movabletype hat sich von der freien Bloggergemeinde verabschiedet und versucht sein Glück in der Unternehmenswelt. Die aktuelle Version steht nur noch als entgeltpflichtige Software zur Verfügung. Auch wenn ich bereit wäre für eine Lizenz zu bezahlen stehen die dortigen Preisvorstellung für mich außer Frage. Inzwischen sind auch die Supportforen mehr oder weniger abgeschaltet und die Informationsverbreitung über Sicherheitsupdates ist mehr oder weniger zufällig.

Also Zeit sich nach etwas neuen um zuschauen.

Betrachte ich mein aktuelles Schreibverhalten dann kann ich festhalten, dass ich alle meine Texte mit Markdown in einem Editor vorschreibe und dann nur noch mit Cut&Paste in das CMS einpflege. Die Kommentarfunktion habe ich komplett abgeschaltet da 99% der echten Diskussion in Facebook stattfindet und ich 99,9% der Kommentare als Spamkommentare löschen muss.

Zusätzlich bin ich eh auf der Suche nach Möglichkeiten “Programme” so weit wie möglich zu reduzieren da sich meine Bereitschaft zur Pflege von PHP / Perl / MySQL Anwendungen gegen null bewegt.

Jekyll

Da kam mir ein Hinweis auf Jekyll gerade recht. Jekyll ist einfach gesprochen eine Software die aus leicht strukturierten Markdown Texten einen Blog baut.

Der wesentliche Unterschied zu klassischen CMS Werkzeugen ist folgender. Wordpress und ähnliche Software erstellt das HTML dynamisch zu dem Zeitpunkt wenn der Besucher auf die Seite kommt. Es werden also dynamisch die Seiten erstellt. Der Vorteil ist das man sehr dynamische Seiten bauen kann. Der Nachteil ist das diese Programme auch Fehler und vor allem sicherheitsrelevante Fehler haben können. Jekyll hingegen erstellt die HTML Struktur nur bei Änderungen und erzeugt einen komplett statischen HTML Baum. Der Vorteil - es ist extrem schnell da nur statischer Text ausgeliefert wird und vor allem immer sicher da es kein Programm gibt das von außen angreifbar ist. Als wesentlicher Nachteil ist zu nennen das Dynamik wie Volltextsuche oder Kommentare so einfach nicht möglich sind.

Bei den Nachteilen stört mich momentan nur die Suche etwas. Dafür werde ich zu Beginn einfach die Suchengine DuckDuckGo verwenden.

Neben einigen anderen Gründen (über die man viel lesen kann) erhoffe und erwarte ich aus der Integration von jekyll in github eine hohe Zukunftsicherheit. Und wenn nicht. Statische Html Seiten kann man in Null Komma Nichts überall hin migrieren.

Die nächsten Schritte werden sein

  1. Aufbau eines lokalen Testservers
  2. Migration meiner Blogs die ich auf Movabletype betreibe
11.4.15
Weitere Beiträge zu: Movabletype   Jekyll  

Movabletype Security Update Verfügbar

Aus den News von heute.

Movable Type versions 6.0.6, 5.2.11 and 5.18 were released as mandatory security updates. These updates resolve a vulnerability discovered in Movable Type’s XML-RPC interface (CVE-2014-9057). All users should upgrade to this latest release immediately.

10.12.14
Weitere Beiträge zu: Movabletype  

URL Shortener in den Heise Socialsharing Buttons verwenden

Ich verwende die von Heise entwickelten 2 Klick Lösung für die Einbindung von Social Sharing Buttons. Normalerweise berechnet diese Javascript Library die URL aus der URL des Browsers oder der URL die mit dem Tag “Canoncical” versehen ist.

Es gäbe jetzt die Möglichkeit einfach die Short URL mit einem Tag Canocial zu versehen aber gemäß dieser Erklärung hat sorgt dies dann dafür das diese URL als Haupt-URL verwendet wird. Das möchte ich eigentlich nicht. Um hier mit möglichst wenig Anpassungen durch die Tür zu kommen habe ich einfach “rel=canonical” durch “rel=shorturl” ausgetauscht

  function getURI() {
      var uri = document.location.href;
    var canonical = $("link[rel=shorturl]").attr("href");

und im Blogsystem einen solchen Link verwendet

<link rel="shorturl" href="<mt:entrypermalink bitlyfy="1">" />

Dann bekommt man auch diesen verkürzten Link angeboten:

alternat-txt

22.8.14
Weitere Beiträge zu: youlrs   Movabletype  

Ein Movabletype Plugin für YOURLS

Ich beitreibe einen eigenen URL Shortener namens YOURLS.

Ich wollte nun für mein Blogsystem ein Plugin erstellen, das mir in jedem Beitrag auch automatisch eine Short URL für diesen Beitrag erstellt und anzeigt. Auf movabletips.com habe ich ein Plugin für Bitlyfy gefunden. Wenn man dieses Plugin installiert und die Datei Plugin.pm wie am Ende beschrieben ändert kann man die gekürzten URLs in seine Blogbeiträge bekommen. In der Konfiguration des Plugins gibt man statt dem Username für Bitlyfy den Servernamen des eigenen YOURLS-Servers ein.

Wer jetzt noch möchte kann die ganze Namensgebung von Bitlyfy Plugin auf Yourls Plugin umstellen aber das habe ich mir gespart

package Bitlyfy::Plugin;
use strict;
use LWP::UserAgent;
use URI::Escape;
sub bitlyfy {
            my ($str, $val, $ctx  ) = @_;
            if ($val){
            my $ua = new LWP::UserAgent;
            $ua->agent('Examplebot/0.9');
            my $mt = MT->instance;
            my $plugin = MT->component("Bitlyfy");
            my $key = $plugin->get_config_value('bitly_key');
            my $yourlsurl='http://your.server.com/yourls-api.php?signature='. $key . '&format=simple&action=shorturl&url=' . uri_escape($str);
            my $plugin = MT->component("Bitlyfy");
            my $req = HTTP::Request->new(GET => $yourlsurl);
            my $res = $ua->request($req);
            if ($res->is_success) {
                        return $res->content;
            }
       }
   }
   1; # Every module must return true
27.7.14
Weitere Beiträge zu: youlrs   Movabletype  

Syntax Highlighting auf Webseiten

Die Javascript Library highlight.js ist recht nützlich wenn man auf seiner Webseite häufig Befehlszeilen, Programmcode oder SQL Befehle einfügt. Sind diese Zeile mit dem einem bestimmten Tag markiert wird für die gängigen Sprachen automatisch eine entsprechende farbliche Markierung der Schlüsselwörter vorgenommen

Ganz nett. Macht manche Zeilen lesbarer.

alternat-txt

16.5.14
Weitere Beiträge zu: Movabletype  

Movabletype: Security Update notwendig

Also die Kommunikation von Movabletype wird immer unterirdischer. Das letzte Security Update wurde wenigstens noch unter den News bei Movabletype erwähnt. Es gab zwar keine korrekten Downloadlink aber wenigsten konnte man über einen RSS Feed oder das Newsplugin im User Dashboard darüber informiert werden.

Vor drei Tagen ist anscheinend ein Update herausgeben worden über das man nur informiert wurde wenn man auf die Webseite ging.

Wahrscheinlich hilft es nur ein RSS Abo auf den Github Feed zu legen um zu erfahren das es eine neue Version gibt.

Finished Update

14.4.14
Weitere Beiträge zu: Movabletype  

Bootstrap Suchmenü bei einer Eingabe vergrössern

Wenn man in einem Bootstrap Suchfeld die Klasse so erweitert

<form class="navbar-form pull-right" method="post" action="/search/">
      <input class="form-control mac-style" name="search" value="" placeholder="Suchen" type="text">
</form>

Und die CSS erweitert

.mac-style {
    width: 200px;
    -webkit-transition: width 1s ease-in-out;
    -moz-transition:width 1s ease-in-out;
    -o-transition: width 1s ease-in-out;
    transition: width 1s ease-in-out;
}
.mac-style:focus{
    width: 460px;
}

dann verlängert sich das Suchfeld automatisch wenn man einen Begriff eingibt.

23.2.14
Weitere Beiträge zu: Movabletype   Bootstrap  

Keine englischen Kommentare mehr mit modsecurity

Gestern habe ich innerhalb von 10 Stunden über 200 Spam Kommentare in meinem Blog auf Basis von Movabletype bekommen. Alle mit englischen Texten.

Jetzt ist Schluß damit. Ab sofort werden alle englischen Kommentare mit modsecurity abgewiesen.

Zuerst eine kleine Datei die gänge Wörter enthält die in den englischen Kommentar auftauchen

vi /etc/apache2/security/activated_rules/local-spamfilter.txt
your
you
Outlet
saving
You
Your
with
really

Hierbei habe ich versucht Begriffe zu wählen die in deutschen Wörtern nicht vorkommen.

Dann die Regel für modsecurity

vi modsecurity_crs_48_local_exceptions.conf
<Location "/cgi-bin/mt/mt-comments.cgi">
SecRule ARGS "@pmFromFile /etc/apache2/security/activated_rules/local-spamfilter.txt" "t:lowercase,deny,msg:'Blog spam blocked',id:'2960990',tag:'Custom Rule'"
</Location>

Und tschüss

8.2.14
Weitere Beiträge zu: ModSecurity   Movabletype  

Movabletype mit Solr indexieren

An dieser Stelle hatte ich beschrieben, wie man die Suchmaschine Solr mithilfe des Webcrawler Nutch füttern kann. Das funktioniert auch recht einfach - hat nur einige Nachteile. Zum einen bekommt man auch einige Seiten mit in den Index die man eigentlich nicht haben möchte (z.B. Monatsarchive) zum anderen ist es nicht ganz so einfach an die Metadaten heran zu kommen.

Wenn man direkt auf die SQL Datenbank zugreifen kann bietet Solr auch die Möglichkeit diese Daten direkt aus der Datenbank auszulesen. Das ist zum einen schneller und man hat direkt die Rohdaten.

Dieses Dokument beschreibt die Schritte zum Einbinden meines Blogs auf Basis Movabletype.

Die Installation habe ich in den folgenden Schritten hinbekommen

- Installation des Datenbanktreibers
- Erstellen einer "Schnittstellenkonfigurationsbeschreibung
- Definition der Felder in Solr
- Wie soll das in Solr importiert werden

Datenbanktreiber installieren

Download der Treiber von hier, auspacken und an die richtige Stelle verschieben

cd /solr-4.6.0
mkdir mysqldriver
mysqldriver/
mv /tmp/mysql-connector-java-5.1.28.tar.gz .
tar xzvf mysql-connector-java-5.1.28.tar.gz
mv mysql-connector-java-5.1.28/mysql-connector-java-5.1.28-bin.jar example/lib/
rm -r mysql-connector-java-5.1.28
rm mysql-connector-java-5.1.28.tar.gz

Jetzt müssen wir Solr noch sagen von welcher Stelle der Treiber (und noch einen anderen den wir später brauchen) einbinden soll.

cd /example/solr/hagen-bauer/
vi conf/solrconfig.xml
    <lib dir="../../../dist/" regex="solr-dataimporthandler-.*\.jar" />
    <lib dir="./lib" />

Schnittstellenbeschreibung erstellen.

Wir erstellen für den Blog eine Konfigurationsdatei

vi conf/blog-data-config.xml

    <dataConfig>
        <dataSource name="mysql" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/mt" user="mt_admin" password="geheim" batchSize="-1" />
        <document name="content">       
        <entity name="entries" transformer="TemplateTransformer, HTMLStripTransformer"
                    query="  select entry_id,entry_title,entry_basename, entry_text  from mt_entry where entry_blog_id=4 and entry_status=2; ">
            <field column="ENTRY_ID" name="entry_id" />
            <field column="ENTRY_TITLE" name="entry_title" />
            <field column="ENTRY_BASENAME" template="/archive/${entries.entry_id}.html" />
            <field column="ENTRY_TEXT" name="entry_text" stripHTML="true" />
                <entity name="emtymetadata"
                    query="SELECT tag_name FROM mt_objecttag, mt_entry, mt_tag WHERE objecttag_object_id = entry_id AND ENTRY_ID = '${entries.entry_id}' AND objecttag_tag_id = tag_id ">
                        <field column="tag_name" name="entry_tags"/>
                </entity>
        </entity>
        </document>
    </dataConfig>

Was soll uns das sagen:

  • Datenquelle mit den Informationen zu der Datenbank
  • eine Entity Definition die Dokumente anlegt und den Inhalt dazu mit einem bestimmten SQL Query aus der Datenbank hohlt.
  • Welche Felder möchte ich haben?
  • Für ein Bestimmtes Feld möchte ich noch etwas Text hinzufügen damit ich die URL bekomme.
  • Eine weitere SQL Abfrage die mir aus anderen Tabellen die Tags hohlt
    (Offen: leider klappt das mit dem stripHTML noch nicht)

Felddefinition in Solr

Felder werden in Solr in einer bestimmten Datei definiert.

edit schemal.xml
<uniqueKey>entry_id</uniqueKey>
<field name="entry_id" type="string" indexed="true" stored="true" required="true"/>
<field name="entry_title" type="text_de" indexed="true" stored="true" required="true"/>
<field name="entry_basename" type="string" indexed="true" stored="true" required="true"/>
<field name="entry_text" type="text_de" indexed="true" stored="true" required="true"/>
<field name="entry_tags" type="string" indexed="true" stored="true" required="false" multiValued="true"/>
<field name="text" type="string" indexed="true" stored="true" required="false"/>
<field name="alltext" type="text_de" indexed="true" stored="false" multiValued="true"/>
<copyField source="entry_*" dest="alltext"/>

Importroutine für Solr Admin

Damit der Import aus der administrativen Oberfläche oder per URL angestossen werden kann brauchen wir noch folgende Definition:

vi solrconfig.xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
<lst name="defaults">
<str name="config">/root/suchen/solr-4.6.0/example/solr/hagen-bauer/conf/blog-data-config.xml</str>
</lst>
</requestHandler>

Geht man jetzt mit einerm Browser zu dieser Seite

http://yourserver:8983/solr/#/hagen-bauer-de/dataimport//dataimport

könnte ein erfolgreicher Import so aussehen:

201401-solr-import-blog-data.png

Und unter der Addresse

http://yourserver:8983/solr/#/hagen-bauer-de/query

kann man dann auch suchen:

201401-solr-import-blog-data2.png

4.1.14
Weitere Beiträge zu: solr   Movabletype  

Movabletype: Security Update notwendig

Es gibt ein neues Update für Movabletype. Wie lange ich dieses Blog Software noch verwende ist unklar. Seit kurzem gibt es nur noch eine recht kostpielige Version.

Und die Qualität der Webseite ist ziemlich unterirdisch. Das fängt schon damit an das die Benachrichtigung über dieses Update noch nicht mal einen korrekten Link auf den Download Bereich enthält. Nach etwa Suchen habe ich es dann auf Github gefunden.

Hier das schon dokumentierte aber leicht angepasste Prozedere

Zuerst das Backup

mkdir please-rename-to-target-version
cd please-rename-to-target-version
mysqldump --user=mt_admin --password=passsword mt | gzip > datenbanken-vor-update.sql.gz
cp -r /var/www/mt/ .
cd ..

Dann das Update

  • Werde der richtige Benutzer
su - mt-user
  • Ab ins MT Verzeichnis
cd /var/www/mt/cgi-bin
  • Download der neuen Version
wget https://codeload.github.com/movabletype/movabletype/zip/mt5.2.9
  • Auspacken
unzip mt5.2.9
  • Den alten Link löschen
rm mt
  • Den neuen Link setzten
ln -s movabletype-mt5.2.9 mt
  • ins neue Verzeichnis
cd mt
  • die alte Konfiguration und Themes kopieren
cp /var/www/mt/cgi-bin/MT-5.2.6/mt-config.cgi .
cp -r /var/www/mt/cgi-bin/MT-5.2.6/mt-static/themes/* mt-static/themes
  • Und den Admin im Browser aufrufen
201312-mt-update.png
  • Löschen von unnötigen Dateien
rm mt-config.cgi-original
rm mt-check.cgi
rm mt-wizard.cgi
rm mt-upgrade.cgi
Dann noch den CKEditor wieder einspielen
cd /var/www/mt/cgi-bin/mt/plugins
wget https://github.com/movabletype/mt-plugin-ckeditor/archive/master.zip
unzip master.zip
cd mt-plugin-ckeditor-master mv plugins/CKEditor .. mv mt-static/plugins/CKEditor/ /var/www/mt/html/mt-static/plugins/
1.12.13
Weitere Beiträge zu: Movabletype  

Movabletype: Bootstrap Umstellung auf Version 3

Der Update von V2.x auf V3 ist leider nicht nur ein einfaches Einspielen von neuen Datein sondern diese neue Version ist mit starken Veränderungen verbunden.

In  meinem einfachen Fall dieses Blogs waren es vor allem die Grid Anweisungen, Formulare für die Suche/Kommentare und die Buttons.

Um die neuen zu verändernden Elemente schnell zu finden hat mir dieses Tool etwas geholfen. Ich wollte möglichst schnell erstmal die neue Version bekommen und werde später versuchen die Neuerungen zu nutzen.

Ich habe die Veränderungen im "laufenden Betrieb" vorgenommen. Folgende Reihenfolge habe ich gewählt

  • Seiten
  • Einträge
  • Monatsarchive
  • Hauptindex 

Es ist noch nicht alles fertig und ich schätze das mit der notwendingen minimalen Einarbeitung das ganze ca 2 Stunden gedauert hat.

http://code.divshot.com/bootstrap3_upgrader/
6.11.13
Weitere Beiträge zu: Movabletype   Bootstrap  

MovableType Update mit mobilem Admin Interface

Es gibt ein Update für Movabletype. Einige neue Funktionen aber wirklich schön ist ein Template für mobile Geräte.

201306-movabletype-mobile-admin1.png

201306-movabletype-mobile-admin2.png

10.6.13
Weitere Beiträge zu: Movabletype  

MovableType: Multiupload von Bildern

Das Hochladen von mehreren Bildern für einen Beitrag oder eine Bildergallerie in Movabletype ist etwas nervig. Man kann immer nur einzelne Bilder hochladen. Dieses Plugin hilft hier. Die Installation geschieht nach dem einfachen Dreisatz

cd /var/www/mt/cgi-bin/mt/plugins/
wget https://github.com/alfasado/mt-plugin-multi-uploader/archive/master.zip
unzip master.zip
cd mt-plugin-multi-uploader-master/
mv plugins/MultiUploader/ ..
mv mt-static/plugins/MultiUploader/ /var/www/mt/html/mt-static/plugins/
cd ..

201303-mt-multiupload.png

 

 

 

4.3.13
Weitere Beiträge zu: Movabletype  

MovableType: Sprache eines Blogs ändern

Leider weiß ich nicht wie es dazu gekommen ist aber ein bestimmter Blog auf meinem MT Server lies sich nicht davon abbringen die Template Namen in deutscher Sprache darzustellen.

Das war eigentlich auch kein Problem bis ich auf die Idee gekommen bin ein neues Template zu verwenden das intern englische Namen verwendet hat. Die wurden immer übersetzt und das funktionierte dann nicht.

Keine Ahnung warum. Am Ende war ich erfolgreich in dem in der internen Datenbank direkt mit einem SQL Befehl die Language ID auf Englisch umgestellt habe. Der Hinweis kam von hier

Zuerst wie komme ich an die blog_id?

select blog_id,blog_language,blog_name  from mt_blog;

---------+---------------+----------------------------------------+
| blog_id | blog_language | blog_name                              |
+---------+---------------+----------------------------------------+
|       1 | en_US         | Site                                   |
|       4 | de            | hagen-bauer.de                         |
|      21 | de            | xxxxx    |
+---------+---------------+----------------------------------------+
11 rows in set (0.00 sec)

Dann die Sprache umstellen:

update mt_blog set blog_language='en-us' where blog_id=21;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Dann noch das Template noch mal drüber bügeln und schon hatte ich endlich auch die englischen Templatenamen.

5.11.12
Weitere Beiträge zu: Movabletype  

MovableType: Bildergalerie in einen Eintrag einfügen

Ich wollte in einigen Dokumenten eines Blogs eine Bildergalerie ermöglichen. Hier ein Beispiel.

Die Galerie von hier laden und  auf den Web Server legen. Dann einen neuen Entry erstellen, in den Quelltext Modus gehen und die Bilder hochladen. Dann diesen Text mit den richtigen Links auf die hochgeladenen Bilder einfügen.

Etwas Text vorab
<p>
    <link href="http://www.yourwebserver.com/galleria/themes/classic/galleria.classic.css" rel="stylesheet" type="text/css" />
</p>
<p>
    <link href="http://www.yourwebserver.com/local-style.css" rel="stylesheet" />
    <script src="http://www.yourwebserver.com/javascript/jquery.js"></script><script src="http://www.yourwebserver.com/galleria/galleria-1.2.7.min.js"></script></p>
<div id="galleria">
    <img src="http://yourwebserver.com/tarn01.jpg" />
    <img src="http://yourwebserver.com/tarn02.jpg" />
    <img src="http://yourwebserver.com/tarn03.jpg" />
    <img src="http://yourwebserver.com/tarn04.jpg" />
</div>
<script type="text/javascript">
$('#galleria').galleria({
width: 700,
height: 467
});
</script><script>
            Galleria.loadTheme('http://www.yourwebserver.com/galleria/themes/classic/galleria.classic.min.js');
            Galleria.run('#galleria');
</script>

Den Hintergrund für die Galerie habe ich in der Datei local-style.css von Schwarz auf Grau geändert

.galleria-container {
    background: none repeat scroll 0 0 #E6E6E6;
}
 

30.9.12
Weitere Beiträge zu: Movabletype  

Spambotabwehr mit Modsecurity

Auf Basis dieser schönen Erklärung habe ich versucht meine bisheriges Captcha Modul abzuschalten und die Spambot Bekämpfung mittels einer Regel für Modsecurity zu implementieren. Zwar habe ich bisher mit dem Captcha Modul keine schlechten Erfahrungen gemacht aber es ist sehr rechenintensiv und auch nicht immer gut zu lesen.

Die Idee ist simple. Spambots füllen alle Felder aus die sich Ihnen in einem Kommentarformular bieten. Also führen wir ein Feld ein das wir mittels CSS Anweisungen verstecken. Normale Benutzer sehen dieses Feld nicht und füllen es auch nicht aus. Spambots "sehen" das Feld und füllen es aus. Dann müssen wir nur noch eine Regel einfügen das alle Kommentare die dieses Feld ausgefüllt haben abgewiesen werden.

Die Resultate sind ermutigend. Ungefähr 20 Kommentare in etwas über einer Woche in drei Schüben. Alle mit demselben Autorennamen. Wenn der noch öfters kommt bekommt der eine eigene Regel. Im Schnitt wurden in zehn Tagen ungefähr 6 Kommentare pro Tag abgewiesen. An einem Tag wurden als Ausreißer 140 Kommentare abgewiesen.

Also in dem Template für die Kommentare wird folgendes Elemente eingefügt. (Geht alles noch natürlich noch "schöner")

 <style type="text/css">
             div .Check456 {display:none;}
</style>

  <div class="Check456">
      <input name="Check456" type="text">
</div>

Damit wird ein neues Feld eingefügt welches aber nicht sichtbar ist. Bots sehen das Feld und füllen es aus. Jetzt die custom rule in  Modsecurity
 

SecRule ARGS:Check456 "(\S+)" "auditlog,deny,log,msg:'Denied user creation by a bot'"


Dann passiert folgendes (manuel getestet mit einem sichtbaren Feld):

--15fd2321-A--
[10/Aug/2012:22:34:53 +0200] UCVwbT5LiwwAAHWcWUQAAAAE 127.0.0.1 3622 62.75.139.12 80
--15fd2321-B--
POST /cgi-bin/mt/mt-comments.cgi HTTP/1.1
Host: www.hagen-bauer.de
......
--15fd2321-C--
static=1&entry_id=916&__lang=de&parent_id=&armor=8b5a52fcb91lkjlj668348267b92b7dd&preview=&sid=&Check456=ksjflksafasfd&author=Hagen+Bauer&email=Hagen.Bauer%40caserio.de&url=&text=ljfdljsafdaslfd&token=98pWeJoiJuLLBCWRbeEfOptc1Yb2cFG601iiPp8U&captcha_code=
--15fd2321-F--
HTTP/1.1 403 Forbidden
Content-Length: 228
Keep-Alive: timeout=7, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

--15fd2321-E--
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /cgi-bin/mt/mt-comments.cgi
on this server.</p>
</body></html>

 

26.8.12
Weitere Beiträge zu: ModSecurity   Movabletype  

MovableType mit Heise 2 Klick Lösung.

heise-2-klick.jpegAuch wenn ich selbst die Buttons wenig nutze wollte ich den Lesern auf dem Blog eine aus meiner Sicht Datenschutzakzeptable Lösung anbieten und die 2 Klick Lösung von Heise einbauen. Auf diese Weise kann ein Leser der sich dazu entscheidet die Buttons von Facebook und Co drücken währen ein andere Nutzer nicht schon beim Betreten des Blogs diese direkt Facebook mitteilt. 

Auf diese Weise konnte ich dies einrichten.
Auspacken des Codes von hier in das Stammverzeichnis des Blogs (bei mir /socialshareprivacy) kopieren. Das notwendige jquery Plugins ist schon durch die bootstrap Installation vorhanden. Ansonsten müsste das ebenfalls noch auf dem Web Server abgelegt werden

In das Modultemplate Header folgende Zeilen in den html header einfügen

<link href="<$mt:BlogURL$>socialshareprivacy/socialshareprivacy.css" rel="stylesheet">
<script src="<$mt:BlogURL$>bootstrap/js/jquery.min.js"></script>
<script type="text/javascript" src="<$mt:BlogURL$>socialshareprivacy/jquery.socialshareprivacy.js"></script>
  .....
</head>

Wichtig. Es muss anscheinend auch das Javascript in den Header. Normalerweise füge ich JS erst am Ende ein, aber wenn man dies hier macht dann klappt es nicht.

Ziel war es das Modul so zu installieren das es mehrfach auf einer Seite aufgerufen werden kann. Das hat leider nicht so richtig geklappt also habe ich erstmal ein Template Modul "SocialSharePrivacy" erstellt das ich in die das "Entry" Template eingefügt habe.

<div id="social-<$mt:EntryID$>"></div>
<script type="text/javascript">
    jQuery(document).ready(function($)
    {
      if($('#social-<$mt:EntryID$>').length > 0)
      {
        $('#social-<$mt:EntryID$>').socialSharePrivacy(
           {
           services :
             {
                   facebook : {'perma_option'  : 'on'},
                   twitter : { 'perma_option' : 'on' },
                   gplus : {'perma_option' : 'on'  }
              }
           },
        { uri : "<$mt:EntryPermalink$>"}
         );
      }
    });
  </script>

Jetzt werden noch Änderungen in der socialshareprivacy.css und der jquery.socialshareprivacy.js notwendig. Die relativen Pfade auf die Images müssen in absolute umgewandelt werden.

    socialshareprivacy/images/socialshareprivacy_on_off.png
    /socialshareprivacy/images/socialshareprivacy_on_off.png


Vielleicht bekomme ich es noch später hier diese Plugin auch mehrfach in den Index Archiven einzubauen

3.6.12
Weitere Beiträge zu: Movabletype  

MovableType: Jährliche Kategorisierung der Monatsarchive

Nach fast 3 Jahren Blogging wurde die Liste der Monatsarchive recht lang. Ich wollte diese Liste etwas kürzer gestalten und nach Jahren sortieren. Ausgehend von dieser Beschreibung konnte ich dies realisieren

201205-monats-archive-blog.pngZuerst ein neues Widget  erstellen :"Yearly Sidebar Archives":

<div class="widget-archive-yearly widget-archive widget">    
<h3 class="widget-header"> Archive</h3>  
 <div class="widget-content">     
    <mt:ArchiveList type="Yearly" sort_order="descend">      
       <mt:ArchiveListHeader>        
            <ul>      </mt:ArchiveListHeader>       
                     <li class="widget-list-item">
                       <b><$mt:ArchiveDate format="%Y"$></b>
                         <br />       
                         <mt:ArchiveList type="Monthly" sort_order="ascend">    
                         <span><a href="<$MTArchiveLink$>">
                            <$mt:ArchiveDate format="%b"$>  (<$mt:ArchiveCount$>)</a>
                         &nbsp;&nbsp;</span>       
                         </mt:ArchiveList>        
                      </li>      
                     <mt:ArchiveListFooter>   
             </ul>    
       </mt:ArchiveListFooter>
    </mt:ArchiveList>
  </div>
</div>

Dann die folgenden Änderung in der "Archive Widget Group":

<mt:IfArchiveTypeEnabled archive_type="Monthly">
    <$mt:include widget="Yearly Sidebar Archives"$>
</mt:IfArchiveTypeEnabled>

 

26.5.12
Weitere Beiträge zu: Movabletype  

MovableType: Schöne URLs für die Suche

MT verwendet für die Suche nach Freitext und Tags eine recht unschöne URL.

Suche nach Tags

 /cgi-bin/mt/mt-search.cgi?IncludeBlogs=16&tag=Tag&limit=20

Suche nache Text

/cgi-bin/mt/mt-search.cgi?search=Suchbegriff&IncludeBlogs=16&limit=20

Ausgehend von dieser Beschreibung habe ich ich dieses mit Apache rewrite rules und Anpassungen im Template realisieren können.

So ist es besser:

/tag/Suchtag
/search/Suchtext

Anpassungen für die Tags:

Apache Umleitungen in htaccess

In die .htaccess im Root Verzeichniss des Blogs folgenden Regel einfügen

RewriteRule ^tag/(.*)$ /cgi-bin/mt/mt-search.cgi?blog_id=4&tag=$1&limit=10
Template änderungen

An den Stellen an denen der Tag Link auftaucht muß dieser String

<$mt:TagSearchLink encode_js="1"$>

durch dies ersetzt werden

<$mt:BlogURL$>tag/<$mt:TagName normalize="1"$>

Bei mir waren das die Tag Cloug und Tag Entry der Beiträge

Suche:

Apache Umleitungen in htaccess:
RewriteRule ^search/(.*)$ /cgi-bin/mt/mt-search.cgi?search=$1&IncludeBlogs=4&limit=10

Template:

In meinem Template (auf Basis von Bootstrap) mußte ich die Suchmaske anpassen:

 <form class="navbar-search pull-right" method="post" action="/search/">
        <input type="text" name="search" value="" placeholder="Suchen" />
  </form>

Pagination für die Text und die Tag Suche

Jetzt funktioniert zwar die Suche aber leider tauchen die normalen Such Url noch in der Seitennavigation der Suchergebnisse auf.
Im Template "Search Results" muß die vorhandene Regel gegen diese ausgetauscht werden.

<mt:IfStraightSearch>
  <$mt:SetVar name="url-cmd" value="search"$>
</mt:IfStraightSearch>
<mt:IfTagSearch>
  <$mt:SetVar name="url-cmd" value="tag"$>
</mt:IfTagSearch>
<$mt:CurrentPage setvar="aktuelle_seite"$>
<div class="pagination">
  <mt:IfPreviousResults>
    <li> <a href="<$mt:BlogURL$>tag/<$mt:SearchString$>&page=<$mt:var op="--" name="aktuelle_seite"$>">«</a></li>
  </mt:IfPreviousResults>
  <mt:PagerBlock>
    <mt:IfCurrentPage>
     <li class="active"> <a href="<$mt:BlogURL$>tag/<$mt:SearchString$>&page=<$mt:Var name="__value__"$>"><$mt:Var name="__value__"$></a></li>
    <mt:Else>
     <li><a href="<$mt:BlogURL$>tag/<$mt:SearchString$>&page=<$mt:Var name="__value__"$>"><$mt:Var name="__value__"$></a></li>
    </mt:IfCurrentPage>
    <mt:Unless name="__last__"></mt:Unless>
  </mt:PagerBlock>
  <mt:IfMoreResults>
    <li><a href="<$mt:BlogURL$>tag/<$mt:SearchString$>&page=<$mt:var op="++" name="aktuelle_seite"$>">»</a></li>   
  </mt:IfMoreResults>
  </div>

 

 

 

20.5.12
Weitere Beiträge zu: Movabletype  

Movabletype: Paginierung von Bootstrap verwenden

Movabletype verwendet eine sehr "rustikale" Anzeige wenn man zwischen den Seiten bei Kategorien und Suchergebnissen navigiert. Ich habe die Gestaltung des Bootstrap Frameworks durch folgenden einfache Änderungen eingefügt,

201205-mt-pager-before-bootstrap.png201205-mt-pager-after-bootstrap.png

Kategorien und Monatsarchive

Entry Listing Template: Ersetze

<div class="content-nav">
    <mt:ArchivePrevious>
    <a href="<$mt:ArchiveLink$>">&laquo; <$mt:ArchiveTitle$></a> |
    </mt:ArchivePrevious>
    <a href="<$mt:Link template="main_index"$>">Hauptseite</a> |
    <a href="<$mt:Link template="archive_index"$>">Archive</a>
    <mt:ArchiveNext>
    | <a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle$> &raquo;</a>
    </mt:ArchiveNext>
</div>

Durch

<div class="pager">
    <mt:ArchivePrevious>
    <a href="<$mt:ArchiveLink$>"> <$mt:ArchiveTitle$></a>
    </mt:ArchivePrevious>
    <a href="<$mt:Link template="main_index"$>">Hauptseite</a>
    <a href="<$mt:Link template="archive_index"$>">Archive</a>
    <mt:ArchiveNext>
    <a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle$></a>
    </mt:ArchiveNext>
</div>

Suchergebnissse

Im System Template "Search results" ersetze:

 <div class="content-nav">
        <mt:IfPreviousResults>
         <a href="<$mt:PreviousLink$>" rel="prev" onclick="return swapContent(-1);">&lt; Previous</a>&nbsp;&nbsp;
        </mt:IfPreviousResults>
        <mt:PagerBlock>
          <mt:IfCurrentPage>
              <$mt:Var name="__value__"$>
          <mt:Else>
              <a href="<$mt:PagerLink$>"><$mt:Var name="__value__"$></a>
          </mt:IfCurrentPage>
          <mt:Unless name="__last__">&nbsp;</mt:Unless>
        </mt:PagerBlock>
        <mt:IfMoreResults>&nbsp;&nbsp;<a href="<$mt:NextLink$>" rel="next" onclick="return swapContent();">Next &gt;</a></mt:IfMoreResults>
    </div>

Durch

<div class="pagination">
        <mt:IfPreviousResults>
    <li> <a href="<$mt:PreviousLink$>" rel="prev" onclick="return swapContent(-1);">«</a></li>
         </mt:IfPreviousResults>
         <mt:PagerBlock>
            <mt:IfCurrentPage>
             <li class="active"> <a href="<$mt:PagerLink$>"><$mt:Var name="__value__"$> </a></li>
              <mt:Else>
             <li> <a href="<$mt:PagerLink$>"><$mt:Var name="__value__"$></a> </li>
            </mt:IfCurrentPage>
            <mt:Unless name="__last__"></mt:Unless>
          </mt:PagerBlock>
          <mt:IfMoreResults>
    <li>  <a href="<$mt:NextLink$>" rel="next" onclick="return swapContent();">»</a></li>
          </mt:IfMoreResults>
    </div>


 

18.5.12
Weitere Beiträge zu: Bootstrap   Movabletype  

MovableType mit Twitter Bootstrap

Durch einen Hinweis von Stephan Wissel bin ich auf Bootstrap von Twitter gestossen. Bootstrap ist en Open Source Framework von Twitter für eine schnelle und elegante Entwicklung von Webseiten mit HTML5, CSS und JavaScript. For Starters wollte ich damit mal meinen eigenen Blog gestalten. Es enthält ziemlich viel was ich alles noch nicht genutzt habe aber auf jeden Fall bekommt man damit eine einfache schnelle Möglichkeit ein Layout zu gestalten das mit verschiedenen Auflösungen vom PC und mobilen Geräten gut gelesen werden kann.

Ein paar Sachen fehlen noch aber "das wichtigste" geht schon.

201204-bootstrap-movabletype.png

12.4.12
Weitere Beiträge zu: Bootstrap   Movabletype  

MovableType: Unbedingt updaten

Update mit Security fixes. Allerdings etwas umfangreicher als normal

2012-mt-update-513.png

22.2.12
Weitere Beiträge zu: Movabletype  

MovableType wird 10 Jahre alt

An der einen oder anderen Stelle hat diese Blogsystem zwar eine recht hohe Lernkurve aber ich bin immer noch sehr zufrieden das ich mich vor 2 Jahren für movabletype entschieden habe.

HappyBirthday.png

8.10.11
Weitere Beiträge zu: Movabletype  

MovableType: Die gesamte Website aktualisieren wenn sich ein Eintrag ändert

MovableType bietet ja die Möglichkeit verschiedene Blogs unter den Schirm einer sogenannten Website zu publizieren. Damit sich alle Indizes auch aktualisieren wenn ein Eintrag erstellt worden ist muß man allerdings zuerst das Multiblog Plugin einrichten.

201109-movabletype-multiblog.png

13.9.11
Weitere Beiträge zu: Movabletype  

MovableType: Mobiles Suchtemplate für Tags

Movabletype verwendet bei den Tags die normale Suche. Für das mobile Template muss also ein eigenes Template erstellt werden welches die Suchergebnisse im gewünschten mobilen Layout anzeigt. Dokumentiert ist das hier. Eigentlich werden Templates ja im Webfrontend erstellt und verwaltet aber so eine Erweiterung scheint nur im Filesystem durchgeführt werden zu können. :-( Seis drum.

Angelehnt an meine andere Änderungen hier habe ich folgendes Template erstellt.

cd cgi-bin/mt/search_templates
vi results_moble.tmpl

<$mt:Include module="Mobile Header"$>
<div data-role="page" id="Search Result">
                <div data-role="header">
                        <h1><MT_TRANS phrase="Entries from [_1] tagged with '[_2]'" params="<$MTBlogName encode_html="1"$>%%<$MTSearchString encode_html="1"$>"></h1>
                        <a href="<$mt:BlogURL$>m/index.html" data-role="button" data-icon="home" class="ui-btn-left">Home</a>
                </div>
                <div data-role="content">
                        <ul data-role="listview" data-inset="true">
                                 <MTSearchResults>
                                        <li><a href="<$mt:BlogURL$>m/<$mt:EntryDate format="%Y/%m"$>/<$MTEntryBasename separator="-"$>.html"><h3><$MTEntryTitle$></h3><p>Veröffentlicht am: <$MTEntryDate format="%A %d %B %Y"$></p></a></li>
                                 </MTSearchResults>
                        </ul>
                 </div>
<$mt:Include module="Mobile Footer"$>

Dieses Template muss noch in mt-config.cgi registriert werden

vi cgi-bin/mt/mt-config.cgi

     SearchAltTemplate feed results_feed.tmpl
     SearchAltTemplate mobile results_mobile.tmpl

und kann jetzt für Suchen verwendet werden. Ich habe dies in einem Vorlagenmodule "mobile tags" so gelöst

<mt:EntryIfTagged>
<div class="entry-tags">
    <h4>Beiträge zu den Themen<span class="delimiter">:</span></h4>
    <ul>
        <li><mt:EntryTags glue='<span class="delimiter">,</span></li> <li>'><a href="javascript:void(0)" onclick="location.href='<$mt:TagSearchLink encode_js="1">&Template=mobile';return false;" rel="tag"><$mt:TagName$></a></mt:EntryTags></li>
    </ul>
</div>
</mt:EntryIfTagged>

und dann in der Vorlage für Mobile Einträge durch ein

<$mt:Include module="Mobile Tags"$>

vor den Kommentaren eingebettet.

 

 

6.8.11
Weitere Beiträge zu: Movabletype  

MovableType: Umleitung für mobile Geräte

An dieser Stelle hatte ich beschrieben wir man ein eigenes Template für mobile Geräte erstellt. Im wesentlichen werden mit so einem Template alle Seiten noch einmal in einem speziellen Verzeichnis mit angepasstem Layout abgelegt.

Nun muss man nur noch sicherstellen, daß ein mobiles Gerät nicht das normale html geliefert bekommt,  sondern das aus dem "mobilen Verzeichnis"

Mit dem Apache Module mod_rewrite kann man dies bewerkstelligen. Einfach in dem Blog Verzeichnis eine Datei namens .htaccess erstellen und folgenden Text einfügen

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/m/.*$ [NC]
RewriteCond %{REQUEST_URI} !png|jpg|JPG|PNG|gif [NC]
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC]
RewriteRule ^(.*)$ /m/$1 [L,R=302]

Das sagt nichts anderes als das

  1. Alle Aufrufe ignoriert werden die schon /m enthalten (also schon auf mein mobiles Verzeichnis zeigen)
  2. alle Aufrufe auf Bilder nicht geändert werden. (die habe ich ja nur einmal)
  3. die Aufrufe ausgewählt werden die auf ein mobiles Gerät deuten (http_user_agent)
  4. und in die restlichen Aufrufe füge ein /m/ ein.
1.8.11
Weitere Beiträge zu: Movabletype  

MovableType: Ein Template für mobile Geräte

An dieser Stelle habe ich meine Vorlagen für die Indexseiten sowie die Artikel und Seiten dokumentiert.

Zuerst habe ich zwei Vorlagenbausteine erstellt die ich in den beiden Index und Archivvorlagen wiederverwende.

Vorlage Mobile Header: Hier ist auch der Punkt an dem man sein eigenes Layout und eigene Farben einbringen kann. Bei mir passen die Farben aus dem Default CSS File zufällig recht gut mit meinem normalen Layout. Ist das nicht der Fall gilt es die CSS Datei anzupassen und auf die eigeneDatei zu verweisen.

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<$MTPublishCharset$>" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title><$MTBlogName$></title>
<link rel="stylesheet"  href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" />
<script src="http://code.jquery.com/jquery-1.6.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
<meta name="robots" content="noindex" />
</head>
<body>
Vorlage "Mobile Footer". Die Fußzeile "steht" am unteren Rand des Bildschirms und enthält Links auf die Seiten die ich in meinem Blog auf der rechte Seite bereitstelle.
<div data-role="footer" data-position="fixed">
<div data-role="navbar" data-type="horizontal">
<ul>
<li><a href="<$MTBlogURL$>m/nistkasten/meisen-cam.html" data-role="button">Meisen-Cam</a></li>
<li><a href="<$MTBlogURL$>m/2010/06/wir-speichern-nicht.html" data-role="button">Wir speichern nicht</a></li>
<li><a href="<$MTBlogURL$>m/2010/04/Ein-kleines-Zeichen-fuer-Solidarit%C3%A4t-mit-unseren-Soldaten.html" data-role="button">Gelbes Band</a></li>
</ul> <ul>
<li><a href="<$MTBlogURL$>m/mobile-archive-monthly.html" data-role="button">Monatsarchiv</a></li>
<li><a href="<$MTBlogURL$>m/index.html" data-role="button">Home</a></li>
<li><a href="<$MTBlogURL$>m/im.html" data-role="button">Impressum</a></li>
</ul> </div> </div> </div> </body> </html>
Die Vorlage "Mobile Index" erstellt die "Hauptindex" Seite für den Blog der mobilen Geräten angezeigt werden soll. Unter den Vorlagen Optionen habe ich für die Ausgabedatei "m/index.html" angegeben
<$mt:Include module="Mobile Header"$>
<div data-role="page" id="Archive">
<div data-role="header">
<h1><$MTBlogName$></h1>
</div>
<div data-role="content">
<ul data-role="listview" data-inset="true">
<MTEntries lastn="15" strip_linefeeds="1"><li><a href="<$mt:BlogURL$>m/<$mt:EntryDate format="%Y/%m"$>/<$MTEntryBasename separator="-"$>.html"><h3><$MTEntryTitle$></h3><p>Veröffentlicht am: <$MTEntryDate format="%A %d %B %Y"$></p></a></li></MTEntries>
</ul> </div>
<$mt:Include module="Mobile Footer"$>
Mobiles Monatsarchiv:Da ich kaum Kategorien verwende brauche ich jetzt nur noch eine Vorlage für die Monatsarchive. Die Ausgabedatei ist "m/mobile-archive-monthly.html"
 
<$mt:Include module="Mobile Header"$>
<div data-role="page" id="Blog">
 <div data-role="header">
<h1><$MTBlogName$></h1>
<a href="<$mt:BlogURL$>m/index.html" data-role="button" data-icon="home" class="ui-btn-left">Home</a>
</div>
<MTArchiveList archive_type="Monthly">
 <div data-role="collapsible" data-collapsed="true">
 <h3><$MTArchiveTitle$></h3>
 <ul data-role="listview" data-inset="true">
 <MTEntries lastn="9999" strip_linefeeds="1"><li><a href="<$mt:BlogURL$>m/<$mt:EntryDate format="%Y/%m"$>/<$MTEntryBasename separator="-"$>.html"><h3><$MTEntryTitle$></h3><p>Veröffentlicht am: <$MTEntryDate format="%A %d %B %Y"$></p></a></li></MTEntries>
 </ul>
 </div>
 </MTArchiveList>
<$mt:Include module="Mobile Footer"$>
 
Einzelne Artikel werden über die Vorlage "Mobile Entry" erstellt   (Archivverknüpfung : "m/%y/%m/%-f")
<$mt:Include module="Mobile Header"$>
<div data-role="page" id="Blog">
<div data-role="header">
<h1><$mt:EntryTitle encode_html="1"$></h1>
<a href="<$mt:BlogURL$>m/index.html" data-role="button" data-icon="home">Home</a>
</div>
<div data-role="controlgroup" data-type="horizontal">
<MTEntryNext><a data-role="button" data-icon="arrow-u"href="<$mt:BlogURL$>m/<$mt:EntryDate format="%Y/%m"$>/<$MTEntryBasename separator="-"$>.html">Nächster Beitrag</a></MTEntryNext>
<MTEntryPrevious><a data-role="button" data-icon="arrow-d" href="<$mt:BlogURL$>m/<$mt:EntryDate format="%Y/%m"$>/<$MTEntryBasename separator="-"$>.html">Vorheriger Beitrag</a></MTEntryPrevious>
</div>
<$MTEntryBody$>
<$MTEntryMore$>   
<span class="byline">
<abbr class="published" title="<$mt:EntryDate format_name="iso8601"$>"><$mt:EntryDate format="%x %X"$></abbr>
</span>
<mt:If tag="EntryCommentCount">
<div data-role="collapsible" data-collapsed="true">
<h3><$mt:EntryCommentCount singular="Kommentar" plural="Kommentare" none="Keine Kommentare"$></h3>
<mt:Comments><p>
<blockquote><$mt:CommentBody$></blockquote>
<cite><$mt:CommentDate$> von <$mt:CommentAuthorLink$></cite></p>
</mt:Comments>
</div>
</mt:If>
<$mt:Include module="Mobile Footer"$>
Und die Seiten über die Vorlage "Mobile Page"   (Archivverknüpfung "m/%-c/%-f")
<$mt:Include module="Mobile Header"$>
<div data-role="page" id="Blog">
<div data-role="header">
<h1><$mt:PageTitle encode_html="1"$></h1>
<a href="<$mt:BlogURL$>m/index.html" data-role="button" data-icon="home">Home</a>
</div>
<$mt:PageBody$>
<$mt:Include module="Mobile Footer"$>

 

26.7.11
Weitere Beiträge zu: Movabletype  

MovableType: Erstellung eines Templates für mobile Geräte

Als frischer Besitzer eines Android Gerätes wird einem sehr schnell klar, daß man mit den Standardtemplates für PC Bildschirme auf einem kleinen Touchscreen nicht so richtig punkten kann. Deshalb war für mein eigenen Blog auch ein Template gefordert, welches mehr auf solche Geräte ausgerichtet ist. Leider gibt es davon nicht viele. Das eine oder andere Plugin ist wohl verfügbar aber so richtig bin ich damit nicht klar gekommen.

An dieser Stelle habe ich einen Ansatz gefunden der für mich verständlich schien. Er basiert auf einem Touchscreen optimierten Frameworks JQuery Mobile.

Der generelle Ansatz ist wie folgt. Für die Seiten (Einzelne Artikel oder Pages) und für die Indexseiten (wie Homepage, Monatliche Archive) wird eine eigene Vorlage erstellt. Alle Veröffentlichungen werden in einem Unterverzeichnis abgespeichert (bei mir "/m") so das es im Blog dann jeden Artikel zweimal gibt. Einmal für mobile Geräte und einmal für normale Bildschirme. Was bei mir in der aktuellen Version noch fehlt ist eine Lösung für Suche / Kommentare schreiben und Tags. Aber vielleicht kommt das noch später.

Über eine "Weiche" in der Konfiguration des Webservers werden mobile Webbrowser auf das mobile Verzeichnis umgeleitet. Zur Erkennung werden hierbei spezielle Kennungen im sogenannten User-Agent verwendet.

So sieht das ganze in meiner Version 1 aus. In den nächsten Tage werde ich in einzelnen Beiträgen die unterschiedlichen Templates noch beschreiben.
201107-movabletype-mobile-template-1.png201107-movabletype-mobile-template-2.png

201107-movabletype-mobile-template-3.png
 

24.7.11
Weitere Beiträge zu: Movabletype  

MovableType: Verschieben einer Site auf eine andere MT Installation

Aus historischen Gründen hatte ich auf einem Server zwei Instanzen der gleichen MovableType Installation. Um die Updates zu vereinfachen wollte ich die kleinere Site aus der einen MT Installation in die andere überführen. Mit folgenden Schritte ist mir das gelungen.

Im alten Adminbereich zuerst ein Backup durchführen und dies im neuen Adminbereich restaurieren. Nach dem Import musste ich feststellen das meine Umlaute verloren gegangen sind. Da es nur eine kleine Web Site mit wenigen Seiten war habe ich mich entschlossen diesen Fehler manuell zu korrigieren anstatt das Problem richtig zu fixen. Später fiehl mir ein, daß mein Quell MT ein deutsches war während das Ziel MT ein englischen war. Vielleicht lag es daran.

Für meine neue Site habe ich in meinem Ziel MT eine neues Root HTML Verzeichniss angelegt. Diese Verzeichniss habe ich dann in der Apache Konfiguration eingetragen und den Apache neugestartet.

Dann kam die mühselige Arbeit des Ändern der Umlaute. Dies musste ich in einigen Seiten, einigen Blog Einträgen, einem Widget namens ""Recent Entries Expanded" und auch für einige Bilder machen.

Blieb noch das Theme. Zuerst habe ich im neuen html Root Verzeichniss einen Link auf MT-static angelegt und sichergestellt, das die Apache Konfiguration auch ein FollowSymLink enthält. Dann einfach das Themeverzeichniss aus der alten MT Installation rüberkopiert und fertig war die Laube.

Jetzt fehlt nur das das Abschalten der Konfiguration für meinen alten MT Admin teil und später lösche ich noch das Verzeichns aus /var/www

Vielleicht helfen diese Notizen ja jemandem.

21.6.11
Weitere Beiträge zu: Movabletype  

MovableType: Unbedingt updaten

Hoffentlich wird das nicht zur Routine.

 All users must upgrade to this latest release immediately.

Das zweite Sicherheitsupdate innerhalb von 2 Wochen. Damit der Schnitt des letzten Jahres von 2 pro Jahr gehalten wird darf dieses Jahr aber jetzt keiner mehr kommen

201106-mt-4361.jpg

Jetzt wird es aber wirklich langsam Zeit diesen alten MT 4 auf 5 zu heben

201106-mt-5011.jpg

9.6.11
Weitere Beiträge zu: Movabletype  

MovableType: Blog Url ändern

Als ich meinen Blog angelegt habe hielt ich es für eine gute Idee nicht direkt die Root Url
www.hagen-bauer.de
zu nehmen sondern
www.hagen-bauer.de/blog
Warum auch immer. Heute soll das anders sein ohne das jedoch die alten Links auf meinem Blog verloren gehen. Das Stichwort hierzu heißt "Permanent redirect" . Insgesamt geht das recht einfach mit folgenden Schritten

1. Apache Config umstellen. In
 /etc/apache2/sites-enabled/site-name

den Pfad ändern und Apache reloaden
2. Redirect einrichten. In dem neuen html Verzeichnis die Datei .htaccess anlegen mit folgendem Inhalt
Redirect 301 /blog /
3. Im Movabletype die Systemeinstellungen ändern
201105-permanent-redirect.png4.  Zum Schluss müssen wir noch einen Link setzen.
Das mt-static Verzeichniss ist ja jetzt nicht mehr in der html root
 ln -s ../mt-static/ .

(Achtung in der Apache Konfiguration muß natürlich FollowSymlink gesetzt sein)
Und dann neu publizieren
1.6.11
Weitere Beiträge zu: Movabletype  

MovableType: CKEditor um einen eigenen Style erweitern

Hat man in Movabletype den Standarteditor durch den CKEdiktor ausgetauscht stehen einem dort dann unter anderem die Funktion von Styles zur Verfügung. Vordefinierte Absatzformatvorlagen die man in seinen Texten verwenden kann.

201105-ckeditor-stil-hinzufuegen.jpgIn meinem Fall wollte ich einen Style einfügen, den ich bei der Dokumentation von Befehleingaben in Linuxterminalfenstern verwenden kann - das klassische Grün auf Schwarz in Courier.

cd /home/hbauer
ls -l

Die normale Dokumentation des CKEditors reicht in diesem Fall durch die Integration in MT nicht ganz aus. Am Ende ist es aber recht simple. Einfach in

html/mt-static/plugins/CKEditor/ckeditor/plugins/styles/styles/default.js

folgende Zeile hinter "Blue'}} einfügen

{name:'Blue Title',element:'h3',styles:{color:'Blue'}},

{name:'Terminal', element:'p',styles : { 'color' : '#63FF00', 'background' : 'none repeat scroll 0 0 #000000','margin':'2px', 'padding' : '8px','font-family': 'courier new,courier,monospace'}},

Damit die Styles aber überhaupt angezeigt wurden musste ich vorher noch in einer Configdatei eine Zeile auskommentieren

vi html/mt-static/plugins/CKEditor/lib/default/config.js
//CKEDITOR.config.stylesCombo_stylesSet = 'movabletype:' + StaticURI + '/plugins/CKEditor/style/config.js';

22.5.11
Weitere Beiträge zu: Movabletype  

MovableType: Captcha Code "verschwindet" (nicht mehr)

Wegen eines erhöhtem Spamaufkommens habe ich mich entschlossen den Captcha code bei Kommentaren einzuschalten. Bisher hat mod_security die Spams abgehalten. Das scheint jetzt nicht mehr zu klappen.

Nach dem Einschalten hatte ich allerdings das Phänomen das ich das Bild sah, dies dann aber wieder verschwand. An dieser Stelle habe ich die Lösung gefunden. In dem Formular für Kommentar habe ich die fett geschriebenen Element eingefügt.

<div id="comments-open-captcha">
<script type="text/javascript">mtCaptchaVisible = true;</script>
<$MTCaptchaFields$></div>

Jetzt klappt es.

4.1.11
Weitere Beiträge zu: Movabletype  

MovableType mit FastCGI unter Debian

Wenn man MovableType unter FastCGI laufen läst soll man spürbare Geschwindigkeitsvorteile erkennen können. Nach dem ich das bei mir installiert habe kann ich gefühlsmäßig sagen das das erkennbar ist. Sowohl Suchen als auch der Adminbereich ist deutlich schneller bei geringerer Serverbelastung. Folgende Schritte habe ich durchgeführt damit das geht. Zuerst das richtige Modul für den Apache WebServer installiert und dann MovableType für die Nutzung von FastCGI eingerichtet. Dann klappte es nicht was ich aber durch die Nachinstallation eines weiteren Paketes beheben konnte. Eine recht schnelle Sache.

Installation Apache Modul

apt-get install libapache2-mod-fastcgi
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  libapache2-mod-fastcgi
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 66.2kB of archives.
After this operation, 279kB of additional disk space will be used.
Get:1 http://ftp2.de.debian.org lenny/non-free libapache2-mod-fastcgi 2.4.6-1 [66.2kB]
Fetched 66.2kB in 0s (591kB/s)           
Selecting previously deselected package libapache2-mod-fastcgi.
(Reading database ... 28922 files and directories currently installed.)
Unpacking libapache2-mod-fastcgi (from .../libapache2-mod-fastcgi_2.4.6-1_i386.deb) ...
Setting up libapache2-mod-fastcgi (2.4.6-1) ...
Enabling module fastcgi.
Run '/etc/init.d/apache2 restart' to activate new configuration!

Konfiguration von MovableType

Wenn man sich sicher ist das alle Anwendungen mit Fastcgi laufen kann man pauschal für alle cgi script die Nutzung von fastcgi einstellen. Da ich mit nicht sicher bin mache ich das erstmal nur für die MovableType CGI Scripts. Zuerst verlinkt / kopiert man die wichtigen Scripte auf einen anderer Namen

cd /var/www/mt/cgi-bin/mt

ln -s mt.cgi mt.fcgi
ln -s mt-comments.cgi mt-comments.fcgi
ln -s mt-tb.cgi mt-tb.fcgi
ln -s mt-search.cgi mt-search.fcgi
ln -s mt-cp.cgi mt-cp.fcgi

Dann ändert man die Konfigurationsdatei mt-config.cgi

AdminScript mt.fcgi
CommentScript mt-comments.fcgi
TrackbackScript mt-tb.fcgi
SearchScript mt-search.fcgi
ViewScript mt-view.fcgi


Auf den ersten Versuch bekam nach dem Aufruf des Adminbereiches eine Fehlermeldung und im Logfile fand ich dann folgende Meldungen

FastCGI: (dynamic) server "/var/www/mt/cgi-bin/mt/mt-search.fcgi" (pid 3341) terminated by calling exit with status '0'

Nach der installation von libfcgi-perl sah das besser aus

apt-get install libfcgi-perl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  libfcgi-perl
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.
Need to get 37.7kB of archives.
After this operation, 86.0kB of additional disk space will be used.
Get:1 http://ftp2.de.debian.org lenny/main libfcgi-perl 0.67-2.1+b1 [37.7kB]
Fetched 37.7kB in 0s (197kB/s)
Selecting previously deselected package libfcgi-perl.
(Reading database ... 28934 files and directories currently installed.)
Unpacking libfcgi-perl (from .../libfcgi-perl_0.67-2.1+b1_i386.deb) ...
Processing triggers for man-db ...
Setting up libfcgi-perl (0.67-2.1+b1) ...

 FastCGI: (dynamic) server "/var/www/hb-mt/cgi-bin/mt/mt-search.fcgi" restarted (pid 3415)

30.12.10
Weitere Beiträge zu: FastCGI   Movabletype  

MovableType: Upgrade von 5.02 auf 5.04

mt-logo-white-tagline.gifEs gibt ein Update 5.04 für Movabletype. Da es Sicherheitspatches enthält ist ein Update fällig. Das zweite in diesem Jahr. Der Ablauf ist wie schon für das Update auf 5.02 beschrieben und dauerte bei mir 20 Minuten.

Im Zuge der Neuinstallation der Plugins wurde auch der CKEditor auf die neueste Version gesetzt.

Scheint alles zu funktionieren.

8.12.10
Weitere Beiträge zu: Movabletype  

MovableType: Ähnliche Beiträge anzeigen

Ziel sollte es sein, das unter einem Artikel Titel von und Links zu Artikeln mit denselben Tags angezeigt werden (Related Articlel) Hier im Wiki habe ich was gefunden und minimal angepasst. Insbesondere weil das Original aus dem Wiki nicht funkte, wenn nur ein Tag vergeben worden ist.

Zuerst ein neues Vorlagenmodul erstellen. Ich hatte es "related-entries" genannt. Den Code aus dem Wiki habe ich etwas angepasst und eingefügt.

 

<mt:EntryID setvar="current_entry">
   <mt:SetVarBlock name="related_tags"><mt:EntryTags include_private="1" glue=" OR "><mt:TagName></mt:EntryTags></mt:SetVarBlock>
     
   <mt:SetVarBlock name="list_items">
      <mt:Entries tags="$related_tags" unique="1">
          <mt:Unless tag="EntryID" eq="$current_entry">
                  <li><a href="<mt:EntryPermalink />"><mt:EntryTitle /></a></li><$mt:Var name="items_found" value="1"$>
          </mt:Unless>
       </mt:Entries>
    </mt:SetVarBlock>
    <mt:If name="items_found">
      <h3>Ähnliche Beiträge</h3>
      <ul>
         <$mt:Var name="list_items"$>
      </ul>
   </mt:If>

 

In der Vorlage "Entry" habe ich dann dies neue Modul vor die Kommentare gesetzt.

<$mt:Include module="TrackBacks"$>
<$mt:Include module="related-entries"$>
<$mt:Include module="Comments"$>

8.10.10
Weitere Beiträge zu: Movabletype  

MovableType: Installation CKEditor

Der Editor der mit Movabletype mitgeliefert ist ja nicht schlecht aber eigentlich sollte man direkt auf den CKEditor wechseln. Hier kann man ein Plugin für Movabletype finden

201005-movabletype-ckeditor.png

Die Installation ist denkbar einfach. In das Pluginverzeichniss wechseln. Plugin runterladen, auspacken und dann zwei Verzeichisse verschieben. (Ach ja - Aufräumen nicht vergessen)

cd /var/www/mt/cgi-bin/mt/plugins
wget https://github.com/movabletype/mt-plugin-ckeditor/archive/master.zip
cd mt-plugin-ckeditor-master
mv plugins/CKEditor ..
mv mt-static/plugins/CKEditor/ /var/www/mt/html/mt-static/plugins/
cd ..

18.5.10
Weitere Beiträge zu: Movabletype  

MovableType: Upgrade auf 5.02

Moveable Type 5.02 ist erschienen und damit steht ein Update an. Zuerst das Backup von der Datenbank und vom  Filesystem und dann wird die neue Version eingespielt.

Backup

Ich lege in meinem Homedirectory ein Backupverzeichniss an, in dem ich das Datenbank Backup und das komplette Verzeichniss sichere.

mkdir mt-update
cd mt-update/
mysqldump --user=mt_admin --password=********* mt | gzip > datenbanken-vor-update.sql.gz
cp -r /var/www/mt/
.

Installation der neuen Version

Zuerst wechsele ich in die rolle meines Web Server Users. Dann gehe ich in das Verzeichniss wo sich die Programmanteile von MT befinden. Und los gehts. Runterladen, aktualisieren des Links auf MT, Reinkopieren der alten Konfiguration und Löschen von ein paar Installationsdateien

su - www-data
cd /var/www/mt/cgi-bin
http://www.movabletype.com/downloads/blogger/MT-5.02-en.zip
unzip MT-5.02-en.zip    
rm mt
ln -s MT-5.02-en mt
cd mt
cp /var/www/mt/cgi-bin/MT-5.01-de/mt-config.cgi .
cp /var/www/mt/cgi-bin/MT-5.01-de/mt-static/themes/* mt-static/themes -r

Und jetzt mit dem Broswer auf den Adminbereich gehen

201005-mt-upgrade-1.png

201005-mt-upgrade-3.png


rm mt-config.cgi-original
rm mt-check.cgi
rm mt-wizard.cgi
rm
mt-upgrade.cgi

Das war es. Dann muss man nur noch Plugins neu installieren. Und das ist bei mir nur der CKEditor

16.5.10
Weitere Beiträge zu: Movabletype  

MovableType: Selektive Darstellung der Zusammenfassung statt dem ganzen Artikel

Ich wollte auf meiner Startseite nicht immer den gesamten Text angezeigt bekommen sondern manchmal nur eine Zusammenfassung. Insbesondere längere technische Beiträge machen die Darstellung des Blogs schwer lesbar. Meine Idee war, daß ich für diese Fälle  das Feld Zusammenfassung in MT nutze. Durch folgende Änderung im Template konnte ich das erreichen.

In der Vorlage "Entry Summary" steht normalerweise dies:

<mt:If tag="EntryBody">
        <div class="asset-body">
            <$mt:EntryBody$>
        </div>
</mt:If>

Jetzt könnte man einfach "EntryBody" durch "EntryExcerpt" ersetzten und MovableType würde auch die ersten x Wörter nehmen und darstellen. Aber dann würde das ja immer passieren.

Mit diesen Anweisung bekam ich das gewünschte

<mt:If tag="EntryBody">
 
<div class="asset-body">
    <mt:EntryExcerpt no_generate="1" setvar="excerpt">
    <mt:If name="excerpt">
       <mt:EntryExcerpt>
         <a href="<$MTEntryPermalink$>#more">weiter...</a>
    <mt:Else>
        <mt:EntryBody>
    </mt:If>
  </div>
</mt:If>

Der Umweg über die extra Variable war notwendig das "EnryExcerpt" automatische eine Zusammenfassung erstellen wenn diese nicht vorhanden ist. (also nie leer ist :-()

13.4.10
Weitere Beiträge zu: Movabletype  

MovableType: Einfaches Widget mit Bild erstellen

Ich wollte ein kleines Bild auf die rechte Seite in meinen Blog bekommen. (Das mit der gelben Schleife) Wie immer wird es andere Wege geben aber so habe ich es gelöst.

Ich habe das existierendes Widget für "Creative Commons" geclont, einen neuen Namen gegeben und den Text leicht angepasst.

<div class="widget-creative-commons widget">
   <div class="widget-content">
      <a href="zieladdresse"><img alt="alternativen text" src="link-auf-das-bild" /></a>
   </div>
</div>

Dann noch das Widget der Widget Gruppe "Blog Activity" hinzugefügt und neu veröffentlicht. Das wars.

11.4.10
Weitere Beiträge zu: Movabletype  

MovableType: Ältere Beiträge auf die Startseite

Im Standard meines MovableType Themes werden auf der Startseite immer eine definierbare Anzahl von ganzen Beiträge angezeigt. In einigen Blogs habe ich die Idee gefunden nach diesen Beiträgen noch eine kurze Liste von Links zu den älteren Artikel anzuzeigen. Hier die Erklärung wie ich das in meinem Blog realisiert habe.

Ausgangspunkt ist die Vorlage "Main Index". Dort habe ich folgende Anweisung vor die Fusszeile gestellt.

<h3 class="widget-header">Weitere Beiträge</h3>
   <mt:Entries offset="10">
       <div class=weitere-beitraege>
         <a href="<MTEntryLink>"><MTEntryTitle></a> </br>
       </div>
</mt:Entries>
<mt:Entries offset="20">
    <div class=weitere-beitraege>
      <a href="<MTEntryLink>"><MTEntryTitle></a> </br>
    </div>
</mt:Entries>

Die erste Zeile gibt die Überschrift und dann kommen jeweils 2 Blöcke von <mt:Entries..> Durch den "offset" sagt man bei welchem Artikel gestartet werden muss. Mein Blog hat die Einstellung das immer 10 Artikel angezeigt werden. Also muss bei der Titellinkliste nach 10 gestartet werden. Da auch für diesen Schleife von mt:Entries wieder die Einstellung "10 Beiträge" gilt mache ich das noch einmal bei 20 um damit auf insgesamt 20 ältere Beitrage als reiner "Titel mit Verlinkung" zu kommen.

Und dran noch die Formatierung in der blog.css.

.weitere-beitraege {
    position: relative;
    margin: 1px 0 3px;
}

18.3.10
Weitere Beiträge zu: Movabletype  

MovableType: Meta Keyword und Beschreibung hinzufügen

Es gibt zwar immer wieder unterschiedliche Aussagen inwieweit sich die Nutzung von Metainformationen sich auf die Ergebnisse von  Suchmaschinen auswirkt. Aber da der Aufwand sich in Grenzen hält, ist es nicht schlecht es auf jeden Fall einzubeziehen. Das Template das ich verwende sieht keine solchen Metainformationen vor. So kann man sie hinzufügen:

In der Vorlage für "Entry" hinter

<mt:SetVarBlock name="html_head">

folgendes einfügen. (Ihr dürft auch meinen Namen gegen Euren tauschen ;-))

<meta name="keywords" content="<mt:EntryTags glue=", "><$mt:TagName$></mt:EntryTags>" />
<meta name="description" content="<$MTEntryBody words="30"$>" />
<meta name="author" content="Hagen Bauer"/>

Damit werden als Keywords die Tags eines Eintrages verwendet und die Beschreibung wird aus den ersten 30 Worten berechnet. Das kann man auch in der Vorlage "Main Index" machen. Dort habe ich die Schlüsselwörter allerdings manuell eingetragen.

3.3.10
Weitere Beiträge zu: Movabletype  

MovableType: ModSecurity blockiert RSS Reader NetNewswire

Einer meiner Leser hat sich beklagt das er keinerlei Änderungen mehr in seinem RSS Reader NetNewsWire mehr bekommen würde. Es stellte Sich heraus das ModSecurity hier einen sogenannten FalsePositive (Fehlarlarm) erzeugt.

Im Log von ModSecurity findet man dann

.... 'Request Missing an Accept Header'  ...

Durch folgende Regel in der modsecurity_crs_15_customrules.conf kann man diese Regel für einen bestimmten Bereich ausschalten

<Location "/blog/atom.xml">
   SecRuleRemoveByID 960015
</Location>

2.3.10
Weitere Beiträge zu: Movabletype   ModSecurity  

MovableType: automatische Veröffentlichung

Ich bin ja mit MovableType nicht unzufrieden aber die Lernkurve ist an manchen Stellen schon recht hoch. Und in manchen Fällen die Doku recht mau. Anyway: ich hatte mich immer gewundert warum meine Artikel, die ich zu einem bestimmten Zeitpunkt veröffentlichen wollte, nicht veröffentlicht wurden.

Die einfache Lösung: Ohne das auf dem Server eine Script läuft geht es auch gar nicht. Das Script ist im MT Ordner

tools/run-periodic-tasks

Jetzt wieder mein naiver Ansatz. Ok. dann rufe ich es halt maneull auf. Sollte bei perl scripten auch nicht das Problem sein. Ergebnis

root@vs:~# /var/www/mt/cgi-bin/mt/tools/run-periodic-tasks    Can't locate MT/TheSchwartz.pm in @INC (@INC contains: lib ../lib extlib ../extlib /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /var/www/mt/cgi-bin/mt/tools/run-periodic-tasks line 32.

Hier würde ich fündig. Es scheint besser zu sein, das Script aus dem MT Verzeichniss selbst aufzurufen. Also ein Crontab mit dem richtigen Aufruf muss her

crontab -l

25 * * * * (cd /var/www/mt/cgi-bin/mt; ./tools/run-periodic-tasks)

21.2.10
Weitere Beiträge zu: Movabletype  

Installation movabletype 5.01

Hier eine Dokumentation meiner MovableType 5.01 installation. Basiert im wesentlichen auf dieser Doku. Wie immer dient diese Doku mehr für meine Aufzeichung aber vielleicht hilfts ja noch einem anderen. Basis ist eine Debian Server.

Zuerst mal das Programm runterladen

cd /root/inst
mkdir mt
cd mt
wget http://www.movabletype.com/downloads/blogger/MT-5.01-de.tar.gz

Dann die Dateien installieren

cd /var/www/
mkdir webxx
cd webxx/
mkdir html
mkdir cgi-bin
mkdir logs
cd cgi-bin/
tar xzvf /root/inst/mt/MT-5.01-de.tar.gz
ln -s MT-5.01-de/ mt
mv mt/mt-static/ /var/www/webxx/html/
chmod 755 mt/*.cgi
cd /var/www/
chown www-data:www-data webxx/ -R


Jetzt den Webserver konfigurieren. (Details hängen natürlich von der jeweiligen Apache Konfiguration ab.)

Die Webserver Konfig soll folgendes erreichen.

admin.yoursite.de für den SiteMaster
www.yoursite.de für den normalen Zugriff.


vi /etc/apache2/sites-available/webxx-admin.de

<VirtualHost admin.yoursite.de:80>
        ServerAdmin admin@youraddress.de
        DocumentRoot /var/www/webxx/html
        <Directory />
                Order Deny,Allow
                Deny from all
        </Directory>
        <Directory /var/www/webxx/html>
                Options Indexes MultiViews
                AllowOverride none
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /var/www/webxx/cgi-bin/
        <Directory "/var/www/webxx/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog  /var/www/webxx/logs/error.log
        LogLevel warn
</VirtualHost>


<VirtualHost www.yoursite.de:80>
        ServerAdmin admin@youraddress.de
        DocumentRoot /var/www/webxx/html
        <Directory />
                Order Deny,Allow
                Deny from all
        </Directory>

        <Directory /var/www/webxx/html>
                Options Indexes MultiViews
                AllowOverride none
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /var/www/webxx/cgi-bin/
        <Directory "/var/www/webxx/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog  /var/www/webxx/logs/error.log
        LogLevel warn
</VirtualHost>

Jetzt das Herzstück

vi mt-config.cgi

CGIPath    /cgi-bin/mt/
AdminCGIPath http://www.yoursite.de/cgi-bin/mt/
# das folgende ist seeeehhrr wichtig"!!!!
StaticWebPath   /mt-static
StaticFilePath /var/www/webxx/html/mt-static
##### MYSQL #####
ObjectDriver DBI::mysql
Database webxx
DBUser webxx_admin
DBPassword yourpassword
DBHost localhost

Und jetzt die Datenbank.

mysql> create database webxx;
mysql> CREATE USER 'webxx_admin'@'localhost' IDENTIFIED BY 'yourpassword';
mysql> GRANT ALL ON webxx.* TO 'webxx_admin'@'localhost';


Enable Site Konfigurationen enablen.

a2ensite webxx-admin.de
a2ensite webxx-www.de
 

Und nun die MT Konfiguration. Erst der Check und dann die Konfig

http://admin.yoursite.de/cgi-bin/mt/mt-check.cgi => OK


webxx-mt-screen1.gif

webxx-mt-screen2.gif

webxx-mt-screen3.gif

Und nach der Installation

remove mt-check.cgi
 

24.1.10
Weitere Beiträge zu: Movabletype  

Dies ist ein privater Blog von Hagen Bauer- berufstätiger Vater, Ehemann, Naturliebhaber, Läufer, Zelter, technikverliebt.


Creative Commons License
This blog is licensed under a Creative Commons License