Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
520
Make Your Data FABulous
xeraa
3
1.1k
Other Decks in Programming
See All in Programming
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
500
ソフトウェアラスタライザ
fadis
1
790
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
370
Building an Out-of-Order CPU
latte72
0
690
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
470
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
220
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
140
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
2
340
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
120
アクセシビリティから考える情報設計
high_g_engineer
0
180
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
What We Talk About When We Talk About XP
m_seki
2
370
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Building an army of robots
kneath
306
46k
BBQ
matthewcrist
89
10k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
30 Presentation Tips
portentint
PRO
1
390
Facilitating Awesome Meetings
lara
57
7.1k
Paper Plane
katiecoart
PRO
2
53k
Mobile First: as difficult as doing things right
swwweet
225
10k
The agentic SEO stack - context over prompts
schlessera
0
900
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]