HowTo: TYPO3 Blog Extension integrieren
Warum TYPO3 und nicht Wordpress?
Ihr werdet euch sicher fragen, wieso ich kein Wordpress zum bloggen nehme sondern das CMS von Kasper. Das hat verschiedene Gründe, zum einen komm ich mit TYPO3 besser zu rande als mit Wordpress und zum zweiten ist es einfach flexibler als das berühmte Blog-System...
Mann kann zum Beispiel jede Extension die man im TER findet in des CMS einbauen und diese im Blog Front-End einbinden was mit Wordpress sicher ein größeren Aufwand wäre. Mit Wordpress kann ich auch nicht mehrere Webseite so einfach verwalten wie es hier im TYPO geht.
Installation der benötigten Extensions
Als erstes Liste ich mal alle Extensions auf, die wir für den Blog benötigen, das sind nämlich nicht wenige und ist auch kaum irgendwo dokumentiert. Das wird aber glaube ich die leichteste Übung ...
Die einzige Schwierigkeit bei der ganzen Sache wird wohl die richtige Reihenfolge der Erweiterungen zu finden, das ist enorm wichtig.
- Media (DAM) (dam) - das non plus ultra für Dateimanagement im TYPO3
- Universal page browser (pagebrowse ) - für den Pagebrowser der Posts
- T3BLOG (t3blog) - der Blog Core selber
- T3Blog SEO (t3blogseo) - SEO Paket: fügt extra Felder an die Posts, für SEO optimierte Blog Artikel
- LO T3Blog template-based (lot3blog) - damit hat man schon mal den kompletten Blog in dem WP Layout Kubrik
- TEQneers SEO Enhancements (tq_seo) - eine SEO Erweiterung mit der man nicht nur Titel, Keyword, Desciption anpassen kann
Leider musste ich die t3blog Erweiterung etwas anpassen, damit diese los läuft aber da kommt hoffentlich bald ein update raus..

- Für die kompletten Website

- Nur für die Blog Seite
Anpassung Typoscript für Standard Einstellungen
Als erstes müsst Ihr euch eine TYPO3 Seite anlegen und diese als Blog deklariere, in dem Ihr in den Seiteneigenschaften bei "Contains Plugin" T3BLOG auswählt. Danach könnt Ihr über das eigene Backend-Module auch schon mit bloggen los legen. Das Module an sich ist eigentlich selbst erklärend.
Hier noch die kurze Konfiguration für das Constanden TS und Setup TS
constants.ts
- lot3blog.useCaptcha = 0
- lot3blog.baseURL = http://www.my-blog.de/
- lot3blog.blogId = <PID der Blogseite>
- lot3blog.charSet =
- lot3blog.template = <pfad zum template>
- lot3blog.path = <pfad zum bilder ordner>
- lot3blog.title = der Titel
- lot3blog.subtitle = der subtitel
setup.ts
- page.10.workOnSubpart = DEFAULT
- page.includeCSS >
- page.includeCSS.12 = fileadmin/sys/css/default.css
- page.10.subparts.MAINMENU < lib.1000.subparts.MAINMENU
- page.10.marks.TAG_CLOUD < lib.page.10.marks.TAG_CLOUD
- page.10.subparts.CONTENT.widget.blogList.subscribeForComments = 0
- page.10.subparts.CONTENT.widget.blogList.requiredFields = commentauthor,
- commenttext, commentauthoremail, commenttitle
- page.10.subparts.CONTENT.widget.blogList.approved = 1
- page.10.subparts.CONTENT.widget.blogList.commentForm.10.10.15.field >
- page.10.subparts.CONTENT.widget.blogList.commentForm.10.10.15.value = Author *
- page.10.subparts.CONTENT.widget.blogList.adminsCommentsEmail = myemail@gmx.de
- page.10.subparts.CONTENT.widget.blogList.listItem.marks.SHORT_TEXT.10.renderObj.stripHtml = 0
- page.10.subparts.CONTENT.widget.blogList.listItem.marks.SHORT_TEXT.10.renderObj.cropHTML = 300 | [...] | 1
- page.10.subparts.CONTENT.widget.blogList.listItem.marks.SHORT_TEXT.10.renderObj.crop >
Typoscript einstellungen für die Blog Widget
Was ist ein Blog ohne seine Standard Features wie Kategorisierung, Tagging usw. wert? Genau, nicht viel !
Die aktuellen t3blog Version bringt deshalb diese Features alle samt weiteren (Kalender, Letzt Posts, Blogroll, letzte Kommentare, Archiv, RSS, Social Bookmarks, Suche) schon fertig mit.
Hier noch ein paar kurze TS Einstellung, wie ich sie vorgenommen habe, vielleicht hilft es dem ein oder anderem.
Typoscript für Widgets
- //RSS Feed in headertag schreiben
- page.headerData.1000 = COA
- page.headerData.1000.1 = TEXT
- page.headerData.1000.1.typolink.parameter = /rss.xml
- page.headerData.1000.1.typolink.returnLast = url
- page.headerData.1000.1.wrap = <link rel="alternate"
- type="application/rss+xml" title="RSS 2.0" href="|" />
- page.headerData.1000.2 < page.headerData.1000.1
- page.headerData.1000.1.wrap = <link rel="alternate"
- type="text/xml" title="RSS .92" href="|" />
- //Tag Cloud Box
- page.10.marks.TAGCLOUD < page.10.marks.TAG_CLOUD
- page.10.marks.TAGCLOUD.widget.tagCloud.minColor >
- page.10.marks.TAGCLOUD.widget.tagCloud.maxColor >
- //RSS Feed an sich
- plugin.tx_t3blog_pi1.rss {
- feedTitle = www.mypage.de
- feedCopyright = 2009 www.mypage.de
- feedManagingEditor = www.mypage.de
- feedWebMaster = mypage@gmx.de/
- feedLink = http://www.mypage.de/
- feedDescription = Latest infos of mario-naether.de
- feedImage = http://www.mypage.de/typo3conf/ext/t3blog/icons/rss.png
- }
- rssblogpost = PAGE
- rssblogpost {
- typeNum = 100
- config {
- disableAllHeaderCode = 1
- additioalHeaders = Content-type:text/xml
- linkVars = L
- no_cache = 1
- xhtml_cleaning = 0
- admPanel = 0
- }
- 10 = USER
- 10 {
- # Call the user function
- userFunc = tx_t3blog_pi1->main
- widget.rss < plugin.tx_t3blog_pi1.rss
- template = TEXT
- template.field = rss
- }
- }
- blogsitemap = PAGE
- blogsitemap {
- typeNum = 203
- 10 >
- 10 = USER
- 10 {
- # Call the user function
- userFunc = tx_t3blog_pi1->main
- widget.latestPostNav < plugin.tx_t3blog_pi1.latestPostNav
- widget.latestPostNav.numberOfItems = 100
- # widget.latestPostNav.list >
- widget.latestPostNav.list.wrap (
- <?xml version="1.0" encoding="UTF-8"?><urlset
- xmlns="http://www.google.com/schemas/sitemap/0.84"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
- |</urlset>
- )
- widget.latestPostNav.list.20.wrap = |
- widget.latestPostNav.listItem {
- 10.wrap = <url><loc>|</loc>
- 20.wrap = <lastmod>|</lastmod></url>
- 20.strftime = %Y-%m-%dT%RZ
- }
- widget.latestPostNav.link.10.typolink.returnLast = url
- template = TEXT
- template.field = latestPostNav
- }
- 10.pid_list = 2
- config {
- disableAllHeaderCode = 1
- additionalHeaders = Content-type:text/plain
- no_cache = 1
- }
- }
Ohne SEO geht nix
Da ein Blog ohne Suchmaschinenoptimierung bei Google und Co. nicht so gut gerankt wird, brauchen auch wir ein bisschen davon...
Dafür nutze ich die Extension TEQneers SEO Enhancements, mit welche man nicht nur alternative Titel-Tags einfügen kann, sondern auch Google Webmaster Tags und Google Analytics Code generieren kann.
Um die Blogbeiträge selber für Suchmaschienen zu optimiern hab ich die Extension T3Blog SEO verwendet, mit dieser kann man für jeden Artikel ein extra Titel, Description, RealUrl Alias verwenden.
- plugin.tq_seo.metaTags.copyright = blog author, 2009. All rights reserved.
- plugin.tq_seo.metaTags.author = blog author
- plugin.tq_seo.metaTags.language = de
- plugin.tq_seo.metaTags.revisit = 5
- plugin.tq_seo.metaTags.googleVerification = asd=
- plugin.tq_seo.services.googleAnalytics = UA-5399317-x
- page.headerData.1 = TEXT
- page.headerData.1 {
- field = subtitle // title
- htmlSpecialChars = 1
- wrap = <title>| - Keyword1, Keyword2, Keyword3 |
- my site.de</title>
- }
- config.noPageTitle = 2
- page.meta.DESCRIPTION >
- page.meta.KEYWORDS >
- //individueller Titel Tag
- [globalVar = GP:tx_t3blog_pi1|blogList|showUid > 0]
- config.noPageTitle = 2
- page.headerData.1.field >
- page.headerData.1 = RECORDS
- page.headerData.1 {
- source.data = GPvar:tx_t3blog_pi1|blogList|showUid
- tables = tx_t3blog_post
- conf.tx_t3blog_post = TEXT
- conf.tx_t3blog_post {
- field = tx_t3blogseo_seotitle // title
- wrap = |
- }
- }
- //blog Artikel Keyword & Description
- page.meta >
- plugin.tq_seo.metaTags.conf.keywords_page.field >
- plugin.tq_seo.metaTags.conf.keywords_page = COA
- plugin.tq_seo.metaTags.conf.keywords_page.cObject < page.headerData.1.10
- plugin.tq_seo.metaTags.conf.keywords_page.cObject.conf.tx_t3blog_post.wrap = |
- plugin.tq_seo.metaTags.conf.keywords_page.cObject.conf.tx_t3blog_post.field = tagClouds
- plugin.tq_seo.metaTags.conf.description_page.field >
- plugin.tq_seo.metaTags.conf.description_page = COA
- plugin.tq_seo.metaTags.conf.description_page.cObject < page.headerData.1.10
- plugin.tq_seo.metaTags.conf.description_page.cObject.conf.tx_t3blog_post.wrap = |
- plugin.tq_seo.metaTags.conf.description_page.cObject.conf.tx_t3blog_post.field = tx_t3blogseo_seodescription
- [globalVar = GP:tx_t3blog_pi1|blogList|datefrom> 0]||[globalVar = GP:tx_t3blog_pi1|blogList|dateto> 0]||[globalVar = GP:tx_t3blog_pi1|blogList|month> 0]||[globalVar = GP:tx_t3blog_pi1|blogList|year> 0]||[globalVar = GP:tx_t3blog_pi1|blogList|tags> 0]
- config.noPageTitle = 2
- page.headerData.1.field >
- page.headerData.1 = TEXT
- page.headerData.1 {
- value = Kalenderübersicht
- }
Fazit:
Das ganze an sich war schon eher eine Tortur, aber wenn man letztendlich weiß wies geht, ist alles super!
Laut dem Entwickler kann man mit der Erweiterung in 25sek. !!! bloggen, was aber nicht ganz stimmt... oder ich hab as falsch gemacht
Wer noch Fragen oder Anmerkungen hat, kann Sie gerne unten kommentieren.


Die Implementierung des T3Blog finde ich sehr zeitaufwendig. Zudem gibt es einige Bugs über die ich nicht sehr glücklich bin. Der RSS-Feed, Kommentare usw. bereiten Probleme.
Hallo, echt gut erklärt das ganze - ich bekomm aber meine Probleme, da ich mit Fluid-Template arbeite und die einzelnen Bereiche nicht entsprechend zugewiesen bekomme. Kennst Du evtl. jemanden, der den Blog in Verbindung mit Fluid umgesetzt hat?! Gruß Christian
Nein, kenne ich leider nicht. was genau gibts denn für Probleme?