Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SilverStripe Introduction
Search
Philipp Krenn
April 08, 2015
Programming
1.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SilverStripe Introduction
SilverStripe introduction given at the ViennaPHP and Drupal Vienna meetup groups
Philipp Krenn
April 08, 2015
More Decks by Philipp Krenn
See All by Philipp Krenn
Full-Text Search Explained
xeraa
11
2.4k
360° Monitoring of Your Microservices
xeraa
7
3.6k
Scale Your Metrics with Elasticsearch
xeraa
4
180
YAML Considered Harmful
xeraa
0
2.1k
Scale Your Elasticsearch Cluster
xeraa
1
380
Hands-On ModSecurity and Logging
xeraa
2
230
Centralized Logging Patterns
xeraa
1
1.2k
Dashboards for Your Management with Kibana Canvas
xeraa
1
530
Make Your Data FABulous
xeraa
3
1.1k
Other Decks in Programming
See All in Programming
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
380
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
20
20k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.7k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
170
Are APIs Still Relevant in the AI Era?
soyuka
0
410
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
290
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
150
iOSDC2026登壇資料.pdf
riofujimon
0
200
Intent as Code
shoppingjaws
6
1.1k
SREの越境 / SRE Collaboration
y0hgi
2
290
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
230
AWSに止められる覚悟してますか?
morizo_1984
2
500
Featured
See All Featured
Practical Orchestrator
shlominoach
192
12k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Automating Front-end Workflow
addyosmani
1369
210k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
340
Ruling the World: When Life Gets Gamed
codingconduct
0
380
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Building Adaptive Systems
keathley
44
3.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
270
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
430
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
440
Transcript
Philipp Krenn @xeraa https://xeraa.net
Background Google Summer of Code Student 2007 Multiple Database Support
Background
Background GSoC Mentor 2012: Yuki Awano Content Personalization
Ecosystem BSD licensed — http://www.silverstripe.org SilverStripe Ltd. — http://www.silverstripe.com
Development 2007 2008 2009 2010 2011 2012 2013 2.0 3.1
3.0 2.4 2.3 2.1 2.2 2014 2015 3.2
Installation
Requirements Apache httpd, nginx, lighttpd, IIS PHP 5.3+ MySQL 5.0+
PostgreSQL 8.3+, SQL Server 2008+, SQLite 3.3+ via modules Chrome, Firefox, IE 8+ (Safari) for the CMS Composer recommended
Preparation Empty database silverstripe nginx configuration _silverstripe3: https://gist.github.com/xeraa/9527232 server {
root /Users/philipp/Sites/silverstripe; server_name silverstripe.local; include _silverstripe3; } /etc/hosts: 127.0.0.1 http://silverstripe.local
Installation $ composer create-project silverstripe/installer ~/Sites/silverstripe 3.1.12 http://silverstripe.local $ chmod
-R 777 ~/Sites/silverstripe/assets/ $ chmod 777 ~/Sites/silverstripe/mysite/_config.php
CMS
Overview http://silverstripe.local/admin/ Pages Reports Files Security Settings
First Steps Change the CMS language and date formats Change
the site title and slogan
Pages Content Settings History Viewing modes Split (screen size dependent)
Preview including different devices Edit
CSS themes/simple/css/typography.css .typography h1 { … background: #ee5757; } Force
reload in the CMS
Under the Hood Database tables SiteConfig SiteTree, SiteTree_Live, SiteTree_versions
Framework
Basics MVC Pulling data, not pushing it Object-oriented — extension
via inheritance / mixins Everything is code
Template Structure mysite/templates/, mysite/css/,… themes/<name>/templates/, themes/<name>/ css/,… themes/ Includes/ Layout/Page.ss
(optionally more) Page.ss
Template Elements $Title, $Content, $SiteConfig.Title <% loop $Menu(1).Limit(5) %> $Link
<% end_loop %> <% if not $Children %> … <% end_if %> <% with $CurrentMember %> $FirstName <% end_with %>
Template Changes templates/Includes/Footer.ss Proudly powered by SilverStripe templates/Page.ss <% include
Subfooter %> templates/Includes/Subfooter.ss <p>© Philipp Krenn</p>
http://will-rossi.deviantart.com/art/SilverStripe-WallPaper-01-59254232
Triggering an Error Delete an <% end_… $> mysite/_config/config.yml: dev,
test, live Director: environment_type: 'dev'
A New Page Type mysite/code/MeetupPage.php — Model and Controller themes/simple/templates/Layout/
MeetupPage.ss — View
Model 1/2 class MeetupPage extends Page { private static $db
= array( 'Date' => 'Date', 'Type' => 'Enum("Unknown, PHP, Symfony, Drupal, SilverStripe", "Unknown")', ); private static $has_one = array( 'Logo' => 'File', );
Model 2/2 public function getCMSFields() { $fields = parent::getCMSFields(); $dateField
= new DateField('Date'); $dateField->setConfig('showcalendar', true); $fields->addFieldToTab('Root.Main', $dateField, 'Content'); $fields->addFieldToTab('Root.Main', new DropdownField('Type', 'Type of event', singleton('MeetupPage')->dbObject('Type')-> enumValues()), 'Content'); $fields->addFieldToTab('Root.Main', new UploadField('Logo'), 'Content'); return $fields; }
Controller class MeetupPage_Controller extends Page_Controller { }
Synchronize the Database http://silverstripe.local/dev/build?flush=all Add new page in the CMS
View <% include SideBar %> <div class="content-container unit size3of4 lastUnit">
<article> <h1>$Title</h1> <h2> $Type <% if $Type == "SilverStripe" %>*yeah*<% end_if %> </h2> <h3>$Date</h3> <img src="$Logo.URL" alt="logo"> <div class="content">$Content</div> </article> $Form $PageComments </div>
Much More DataObjects and Scaffolding Powerful forms with GridField Object-Relational
Mapper RESTful API SOAP API Extensible permission system
And a Little Less Smallish community outside of New Zealand
and Australia A manageable number of modules Hint: https://github.com/search?q=silverstripe- &type=Repositories Few (good) themes
More Information http://www.silverstripe.org https://github.com/silverstripe http://www.meetup.com/SilverStripe-Austria http://vimeo.com/silverstripe
Try It https://github.com/xeraa/silverstripe-nginx
Thanks Questions? Now @xeraa
[email protected]