• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
An introduction to the Symfony CMF - creating a CMS on top of Symfony
 

An introduction to the Symfony CMF - creating a CMS on top of Symfony

on

  • 2,013 views

See https://github.com/rmsint/cmf-intro for the code.

See https://github.com/rmsint/cmf-intro for the code.

Statistics

Views

Total Views
2,013
Views on SlideShare
2,010
Embed Views
3

Actions

Likes
1
Downloads
28
Comments
0

1 Embed 3

https://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    An introduction to the Symfony CMF - creating a CMS on top of Symfony An introduction to the Symfony CMF - creating a CMS on top of Symfony Presentation Transcript

    • An  introduc+on  to   Presented  by  Roel  Sint  
    • Agenda   Content   •  •  •  Page   Blocks   Structure   8  november  2013   Management     •  •  •  •  User   Frontend   Backend   Publishing   workflow   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro     •  •  •  •  Framework   Storage   ContentBundle   BlockBundle   Rou+ng   •  Component   •  Bundle   •  Auto   •  Menu   •  Core   •  Create   2  
    • Decoupled  CMS   vs   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   3  
    • Create  a  CMS   1.  2.  3.  4.  5.  6.  7.  8.  9.  Install  Symfony  and  bootstrap  template   Install  Cmf   Add  fixtures  and  content   Add  auto  rou+ng   Update  templates   Add  cache   Add  backend  CMS   Add  frontend  edi+ng  tool   Add  media,  media  browser  and  imagine   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   4  
    • Step  1  –  install  Symfony   •  Start  a  new  Symfony  project:   –  php  composer.phar  create-­‐project  symfony/ framework-­‐standard-­‐edi+on  path/   •  Add  twiXer  bootstrap  theme   –  download  from  ini+alizr  project   •  Implement  templates   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   5  
    • Step  1  -­‐  ini+alizr   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   6  
    • Step  1  -­‐  bootstrap   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   7  
    • Step  1  –  home  template   Banner     block   Homepage     blocks   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   8  
    • Step  1  –  page  template   url   main  menu   breadcrumb   submenu   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   9  
    • Step1  -­‐  AcmeMainBundle   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   10  
    • Step  2  –  install  cmf   •  php  composer.phar  require  symfony-­‐cmf/symfony-­‐cmf   •  1.0.*   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   11  
    • Step  2  –  AppKernel   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   12  
    • Step  2  –  config.yml  +  autoload   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   13  
    • Step  2  –  setup  database   •  Setup:   –  app/console  doctrine:database:create   –  app/console  doctrine:phpcr:init:dbal   –  app/console  doctrine:phpcr:repository:init   •  Check  :   –  app/console  doctrine:phpcr:node:dump   –  also  the  database   xml   •  Storage  using  PHP  Content  Repository   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   14  
    • What  is  a  content  repository?   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   15  
    • PHPCR  using  Doctrine  ODM   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   16  
    • Step  3  –  add  fixtures  and  content   •  php  composer.phar  require  doctrine/data-­‐fixtures   –  1.0.0   •  Add  page  document   •  Create  pages  root   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   17  
    • Step  3  –  add  fixtures  and  content   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   18  
    • 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  
    • 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  
    • Step  4  –  add  auto  rou+ng   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   21  
    • 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  
    • Step  4  –  add  auto  rou+ng   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   23  
    • 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  
    • 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  
    • 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  
    • Step  5  –  update  templates   breadcrumb   submenu   content   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   27  
    • Step  5  –  update  templates   AcmeMainBundle:Nav:breacrumbs.html.twig   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   28  
    • 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  
    • 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  
    • 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  
    • Step  7  -­‐  config   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   32  
    • Step  7  -­‐  config   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   33  
    • 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  
    • Step  7  -­‐  ckeditor   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   35  
    • 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  
    • Step  7  –  backend  cms   Hide  for  customers   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   37  
    • Step  7  –  backend  cms   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   38  
    • Step  7  –  backend  cms   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   39  
    • Step  8  –  frontend  edi+ng   •  php  composer.phar  require  symfony-­‐cmf/create-­‐bundle   –  1.0.*   •  •  •  •  add  to  AppKernel   update  config   add  rdf-­‐mapping   template:   –  update  page   –  add  stylesheets  and  javascript   •  run:   –  app/console  assets:install  web  –symlink   –  app/console  asse+c:dump   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   40  
    • Step  8  –  frontend  edi+ng   rdf  mapping   page  template   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   41  
    • Step  8  –  frontend  edi+ng   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   42  
    • 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  
    • Step  9  -­‐  media   8  november  2013   Roel  Sint  -­‐  github.com/rmsint/cmf-­‐intro   44  
    • 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  
    • 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  
    • 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