Webmontag Graz Radiant CMS
-
Upload
edmund-siegfried-haselwanter -
Category
Technology
-
view
954 -
download
0
Transcript of Webmontag Graz Radiant CMS
Radiant CMSno fluff, just stuff!
Eine Einführung
iTeh DI Edmund Siegfried Haselwanter ([email protected])
Mittwoch, 31. März 2010
Vorstellung
Edmund Haselwanter
seit August 2008 selbständig
Focus auf IT Consulting / Rails und IT Automatisierung
seit ca. 2 Jahren verschiedene Radiant Webseiten online
Mittwoch, 31. März 2010
Warum Radiant?
Zuerst Versuch mit enterprise-level CMS Systemen und Blog Engines wie Wordpress
Zu viele Funktionen, zu kompliziert oder zu unflexibel
Will “einfach” Seiten machen
Ruby/Rails Fan-Boy ;-)
Mittwoch, 31. März 2010
Die 80-20 Regel
Zu 80% verwendet man 20% der Funktionen
Zumeist will man nur “Seiten” erstellen
Radiant bietet Pages, Layouts und Snippets für diese Aufgabe
Der Rest kann mit im Moment ca. 200 Erweiterungen oder einfach selbst programmiert werden
Mittwoch, 31. März 2010
Installation
gem install radiant
radiant meine-webseite
rake db:bootstrap
Mittwoch, 31. März 2010
Admin Interfaceunter /admin
Mittwoch, 31. März 2010
Der Content
Der ContentHierarchische Seitenstruktur
Mittwoch, 31. März 2010
Der Content
Workflow Status
Workflow Statusauf einen Blick Status aller Seiten
Mittwoch, 31. März 2010
Der Content
Workflow Status
Seiten erstellen/löschen
Seitenin der Hierarchie erstellen oder löschen
Mittwoch, 31. März 2010
Mittwoch, 31. März 2010
Titel
Mittwoch, 31. März 2010
TitelUrl Teil
Mittwoch, 31. März 2010
TitelUrl Teil
Breadcrumb
Mittwoch, 31. März 2010
TitelUrl Teil
Breadcrumb
Seiten Teile
Mittwoch, 31. März 2010
TitelUrl Teil
Breadcrumb
Seiten Teile
Filter
Mittwoch, 31. März 2010
TitelUrl Teil
Breadcrumb
Seiten Teile
Filter
Content
Mittwoch, 31. März 2010
TitelUrl Teil
Breadcrumb
Seiten Teile
Filter
Content
Layout
Mittwoch, 31. März 2010
TitelUrl Teil
Breadcrumb
Seiten Teile
Filter
Content
Layout Seiten Typ
Mittwoch, 31. März 2010
LayoutsSite Wireframe - Sind die Templates einer Seite
Mittwoch, 31. März 2010
LayoutsDefinieren Content Type--> Auch XML, CSS, Javascript, ... möglich
Mittwoch, 31. März 2010
SnippetsWiederverwendbare Mini Templates
Mittwoch, 31. März 2010
SnippetsÜber den Namen ansprechbar
Mittwoch, 31. März 2010
Typisches CMS
Content
Header
Footer
Header
Footer
Content
Seite Layout Ergebnis
Mittwoch, 31. März 2010
Ein besseres Model
Header
Footer
Header
Footer
body
Seite Layout Ergebnis
body
sidebar
extended
side
bar
extended
Mittwoch, 31. März 2010
Umsetzung<html>
<head><title>Eine Beispielseite</title>
</head> <body>
<div id="header”><img src="logo.gif" /></div> <div id="content">
<h1>Eine Beispielseite</h1><p>Das ist eine Beispielseite.</p>
</div><div id="sidebar">
<p>sidebar Sachen kommen hierher</p></div> <div id="footer">
<p>Copyright 2010, Max Mustermann</p> </div>
</body> </html>
Mittwoch, 31. März 2010
Umsetzung<html>
<head><title>Eine Beispielseite</title>
</head> <body>
<div id="header”><img src="logo.gif" /></div> <div id="content">
<h1>Eine Beispielseite</h1><p>Das ist eine Beispielseite.</p>
</div><div id="sidebar">
<p>sidebar Sachen kommen hierher</p></div> <div id="footer">
<p>Copyright 2010, Max Mustermann</p> </div>
</body> </html>
Titel
Mittwoch, 31. März 2010
Umsetzung<html>
<head><title><r:title/></title>
</head> <body>
<div id="header”><img src="logo.gif" /></div> <div id="content">
<h1><r:title/></h1><p>Das ist eine Beispielseite.</p>
</div><div id="sidebar">
<p>sidebar Sachen kommen hierher</p></div> <div id="footer">
<p>Copyright 2010, Max Mustermann</p> </div>
</body> </html>
Mittwoch, 31. März 2010
Umsetzung<html>
<head><title><r:title/></title>
</head> <body>
<div id="header”><img src="logo.gif" /></div> <div id="content">
<h1><r:title/></h1><p>Das ist eine Beispielseite.</p>
</div><div id="sidebar">
<p>sidebar Sachen kommen hierher</p></div> <div id="footer">
<p>Copyright 2010, Max Mustermann</p> </div>
</body> </html>
WiederkehrenderKopfteil
WiederkehrenderFussteil
Mittwoch, 31. März 2010
Umsetzung<html>
<head><title><r:title/></title>
</head> <body>
<r:snippet name="header"/> <div id="content">
<h1><r:title/></h1><p>Das ist eine Beispielseite.</p>
</div><div id="sidebar">
<p>sidebar Sachen kommen hierher</p></div> <r:snippet name="footer"/>
</body> </html>
Mittwoch, 31. März 2010
Umsetzung<html>
<head><title><r:title/></title>
</head> <body>
<r:snippet name="header"/> <div id="content">
<h1><r:title/></h1><p>Das ist eine Beispielseite.</p>
</div><div id="sidebar">
<p>sidebar Sachen kommen hierher</p></div> <r:snippet name="footer"/>
</body> </html>
Seitenleiste
Body
Mittwoch, 31. März 2010
Umsetzung<html>
<head><title><r:title/></title>
</head> <body>
<r:snippet name="header"/> <div id="content">
<h1><r:title/></h1><r:content part="body" /> <r:content part="extended" />
</div><div id="sidebar">
<r:content part="sidebar" /></div> <r:snippet name="footer"/>
</body> </html>
Mittwoch, 31. März 2010
Umsetzung<html>
<head><title><r:title/></title>
</head> <body>
<r:snippet name="header"/> <div id="content">
<h1><r:title/></h1><r:content part="body" /> <r:content part="extended" />
</div><div id="sidebar">
<r:content part="sidebar" /></div> <r:snippet name="footer"/>
</body> </html>
mehr dazu unterhttp://wiki.github.com/radiant/radiant/getting-started
Mittwoch, 31. März 2010
Radiant und Radius
Radius ist eine Tag basierte Template Sprache
Radiant hat im Kern 50 Radius Tags
Sehr einfach erweiterbar durch eigene Tags
http://radius.rubyforge.org/
Mittwoch, 31. März 2010
Radiant Tags Content<r:author/>
<r:breadcrumb/>
<r:breadcrumbs [separator="separator_string"] [nolinks="true|false"]/>
<r:comment/>
<r:content [part="part_name"] [inherit="true|false"] [contextual="true|false"]/>
<r:count/>
<r:cycle values="1, 2, 3" [reset="true|false"] [name="cycle"]/>
<r:date [format="%A, %B %d, %Y"] [for="created_at|now|published_at|updated_at"]/>
<r:escape_html/>
<r:link [anchor="name"] [other attributes...]/>
<r:link [anchor="name"] [other attributes...]>...</r:link>
<r:meta:description [tag="true|false"]/>
<r:meta:keywords [tag="true|false"]/>
<r:meta [tag="true|false"]/>
<r:navigation urls="[Title: url|Title: url]>...</r:navigation>
<r:option/>
<r:rfc1123_date/>
<r:slug/>
<r:snippet name="snippet_name"/>
<r:snippet name="snippet_name">...</r:snippet>
<r:status [downcase='true|false']/>
<r:title/>
<r:url/>
<r:yield/>
Mittwoch, 31. März 2010
Radiant Tags Context<r:page>...</r:page>
<r:children>...</r:children>
<r:children:first>...</r:children:first>
<r:children:last>...</r:children:last>
<r:children:each [offset="number"] [limit="number"] [by="attribute"] [order="asc|desc"] [status="draft|reviewed|published|hidden|all"]>...</r:children:each>
<r:children:each:child>...</r:children:each:child>
<r:parent>...</r:parent>
<r:find url="value_to_find">...</r:find>
<r:random>...</r:random>
Mittwoch, 31. März 2010
Radiant Tags Conditional<r:if_first>...</r:if_first>
<r:unless_first>...</r:unless_first>
<r:if_last>...</r:if_last>
<r:unless_last>...</r:unless_last>
<r:if_parent>...</r:if_parent>
<r:unless_parent>...</r:unless_parent>
<r:if_children [status="published|draft|hidden|reviewed"]>...</r:if_children>
<r:unless_children [status="published|draft|hidden|reviewed"]>...</r:unless_children>
<r:if_content [part="part_name, other_part"] [inherit="true"] [find="any"]>...</r:if_content>
<r:unless_content [part="part_name, other_part"] [inherit="true"] [find="any"]>...</r:unless_content>
<r:if_url matches="regexp" [ignore_case="true|false"]>...</r:if_url>
<r:unless_url matches="regexp" [ignore_case="true|false"]>...</r:unless_url>
<r:if_ancestor_or_self>...</r:if_ancestor_or_self>
<r:unless_ancestor_or_self>...</r:unless_ancestor_or_self>
<r:if_self>...</r:if_self>
<r:unless_self>...</r:unless_self>
<r:if_dev>...</r:if_dev>
<r:unless_dev>...</r:unless_dev>
<r:header [name="header_name"] [restart="name1[;name2;...]>...</r:header>
Mittwoch, 31. März 2010
Beispiel für Conditionals<r:find url="/news"> <r:if_children> <ul> <r:children:each> <li><r:title/></li> </r:children:each> </ul> </r:if_children> <r:unless_children> <p>There are no news stories just now. Please check back later.</p> </r:unless_children></r:find>
Mittwoch, 31. März 2010
Beispiel für Conditionals<r:find url="/news"> <r:if_children> <ul> <r:children:each> <li><r:title/></li> </r:children:each> </ul> </r:if_children> <r:unless_children> <p>There are no news stories just now. Please check back later.</p> </r:unless_children></r:find>
Mittwoch, 31. März 2010
Beispiel für Conditionals<r:find url="/news"> <r:if_children> <ul> <r:children:each> <li><r:title/></li> </r:children:each> </ul> </r:if_children> <r:unless_children> <p>There are no news stories just now. Please check back later.</p> </r:unless_children></r:find>
Mittwoch, 31. März 2010
Beispiel für Conditionals<r:find url="/news"> <r:if_children> <ul> <r:children:each> <li><r:title/></li> </r:children:each> </ul> </r:if_children> <r:unless_children> <p>There are no news stories just now. Please check back later.</p> </r:unless_children></r:find>
Mittwoch, 31. März 2010
Und die restlichen 20% ?Es gibt ca. 200 Erweiterungen (http://ext.radiantcms.org/)
von ein paar Tags bis CRM Integration
nichts dabei? -> selbst schreiben!
Sehr flexibles Extension Interface
Admin Bereich einfach erweiterbar
Radiant Teile mit Ruby Metaprogramming mehr/andere Funktionalität geben
http://wiki.github.com/radiant/radiant/creating-extensions
Mittwoch, 31. März 2010
Populäre Erweiterungen
Paperclipped
Mailer
share_layouts
Gallery
nav
Mittwoch, 31. März 2010
Zusammenfassung
Pros:
Sehr gut geeignet für typische Web Auftritte
flexibel und einfach erweiterbar
Cons:
produktiv einsetzbar, aber erst Version 0.9
Extensions finden und installieren mitunter schwierig
Mittwoch, 31. März 2010
Weiterführende Links
Repo: http://github.com/radiant/radiant
Wiki: http://wiki.github.com/radiant/radiant/
Extensions: http://ext.radiantcms.org/
Viele Extensions auf github.com
irc: #radiantcms channel auf irc.freenode.net
Mailinglist: http://radiantcms.org/mailing-list/
Mittwoch, 31. März 2010