18. Step
3
–
add
fixtures
and
content
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
18
19. Step
3
–
add
fixtures
and
content
• Run:
– app/console
doctrine:phpcr:repository:init
– app/console
doctrine:phpcr:fixtures:load
• Check:
– app/console
doctrine:phpcr:node:dump
—props
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
19
20. Step
3
–
add
fixtures
and
content
• Run:
– app/console
doctrine:phpcr:repository:init
– app/console
doctrine:phpcr:fixtures:load
• Check:
– app/console
doctrine:phpcr:node:dump
—props
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
20
21. Step
4
–
add
auto
rou+ng
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
21
22. Step
4
–
add
auto
rou+ng
• php
composer.phar
require
symfony-‐cmf/rou+ng-‐auto-‐bundle
– 1.0.*@dev
•
•
•
•
add
to
kernel
add
rou+ng_auto.yml
remove
routes
from
fixtures
Run:
– app/console
doctrine:phpcr:fixtures:load
• Check:
– app/console
doctrine:phpcr:node:dump
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
22
23. Step
4
–
add
auto
rou+ng
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
23
24. Step
5
–
update
templates
• Homepage
– add
blocks
to
template
– add
fixtures
and
run:
• app/console
doctrine:phpcr:fixtures:load
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
24
25. Step
5
–
update
templates
• Homepage
– add
blocks
to
template
– add
fixtures
and
run:
• app/console
doctrine:phpcr:fixtures:load
Container
block
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
25
26. Step
5
–
update
templates
• Page
template
• Use
knp_menu_render
for:
– Breadcrumb
– Main
menu
– Sub
menu
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
26
27. Step
5
–
update
templates
breadcrumb
submenu
content
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
27
28. Step
5
–
update
templates
AcmeMainBundle:Nav:breacrumbs.html.twig
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
28
29. Step
6
–
add
cache
• php
composer.phar
require
liip/doctrine-‐cache-‐bundle
– 1.0.*
• Add
to
kernel
• Update
config.yml
• Check
queries
in
the
webdebug
toolbar
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
29
30. Step
7
–
backend
CMS
• php
composer.phar
require
sonata-‐project/doctrine-‐phpcr-‐admin-‐bundle
– 1.0.*
• add
to
AppKernel
• run:
app/console
assets:install
web
—symlink
• secure
admin
in
security.yml
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
30
31. Step
7
-‐
config
• uncomment
framework.translator
• add
sonata
• add
routes
to
rou+ng.yml
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
31
32. Step
7
-‐
config
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
32
33. Step
7
-‐
config
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
33
34. Step
7
-‐
ckeditor
• php
composer.phar
require
trsteel/ckeditor-‐bundle
– 1.2.*
• add
to
AppKernel
• update
PageAdmin
to
use
ckeditor
field
• Run:
– app/console
assets:install
web
–symlink
– app/console
asse+c:dump
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
34
35. Step
7
-‐
ckeditor
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
35
36. Step
7
–
Publish
workflow
•
•
•
•
•
Enable
publish
workflow
in
cmf_core
Menu
Page
Blocks
Hide
menu
when
page
is
not
published
– Custom
MenuContentVoter
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
36
37. Step
7
–
backend
cms
Hide
for
customers
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
37
38. Step
7
–
backend
cms
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
38
39. Step
7
–
backend
cms
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
39
41. Step
8
–
frontend
edi+ng
rdf
mapping
page
template
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
41
42. Step
8
–
frontend
edi+ng
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
42
43. Step
9
-‐
media
• add
to
composer.json:
– "symfony-‐cmf/media-‐bundle":
"1.0.*”
– "liip/imagine-‐bundle":
"v0.16.0”
– "helios-‐ag/fm-‐elfinder-‐bundle":
"1.4”
• run:
– composer
update
symfony-‐cmf/media-‐bundle
liip/
imagine-‐bundle
helios-‐ag/fm-‐elfinder-‐bundle
– app/console
doctrine:phpcr:repository:init
• add
ROLE_CAN_UPLOAD_FILE
to
security.yml
• update
config:
– configure
image
upload
url
and
file
browse
url
– liip
imagine
filters
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
43
44. Step
9
-‐
media
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
44
45. Where
do
I
…
?
•
•
•
•
Book
documenta+on:
general
explana+on
Bundle
documenta+on:
reference
for
features
Cookbooks
Configura+on
– Reference
sec+on
symfony.com
– Run:
• app/console
config:dump-‐reference
CmfCoreBundle
• app/console
router:debug
• app/console
container:debug
– Code:
•
•
•
•
8
november
2013
vendorsymfony-‐cmf
DependencyInjec+onConfigura+on
DependencyInjec+on[name]Extension
Resourcesconfig
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
45
46. Links
• github.com/rmsint/cmf-‐intro
• homepage
cmf.symfony.com
• doctrine-‐project.org
for
PHPCR-‐ODM
• See
also
cookbook
Crea+ng
a
Basic
CMS
• slides.liip.ch/sta+c/2012-‐05-‐18_symfony-‐speed.html
• ask
ques+ons
on
irc:
#symfony-‐cmf
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
46
47. Conclusion
•
•
•
•
•
toolbox
to
create
your
own
CMS
code
reuse
exis+ng
projects
many
steps
because
everything
is
decoupled
different
CMS
for
different
purpose
possible
automate
steps
for
produc+on
– create
installa+ons
• blog
• cms
8
november
2013
Roel
Sint
-‐
github.com/rmsint/cmf-‐intro
47