Download
the modx cms and framework n.
Skip this Video
Loading SlideShow in 5 Seconds..
The modx CMS and framework PowerPoint Presentation
Download Presentation
The modx CMS and framework

The modx CMS and framework

191 Views Download Presentation
Download Presentation

The modx CMS and framework

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. The modx CMSand framework • Jayesh Sheth • NYPHP - Sept. 28, 2010 • Hive at 55, • 55 Broad Street, New York, NY

  2. Why modx? • CMS + framework • Open Source + PHP • Flexibility (no framework “straight-jacket”) • Graphical approach • Simple & accessible, yet powerful (like PHP) • Active community

  3. A little history ... • The beginnings: fork of Etomite • Main modx guys: Ryan Thrash, Jason Coward, Shaun McCormick • modx Evolution: the beginning • modx Revolution: the re-write

  4. Requirements • PHP 5.1.1+ • Apache 1.3.x+ / IIS / lighttpd / Zeus • MySQL 4.1.20+ • Linux / Mac OS X / Windows

  5. Documents / Resources • Basic unit of information • Document == Resource == “Page” • Document: File or Folder

  6. Documents as folders

  7. Documents as files

  8. Templates • At the foundation of every modx site • Basic “glue” for all site elements • Determine every document’s look • Help to classify documents based on their type / purpose

  9. Documents Templates Template Variables (a.k.a. TVs)

  10. Template Variables

  11. Snippets • contain PHP code • act like functions • can be called by documents & templates • In an MVC architecture, the “M” (model)

  12. Document Template Snippet

  13. Snippet: definition (#1)

  14. Snippet: definition (#2) Side-note: this is a little sneak peak at the modx API!

  15. Snippet: calling it (from a document)

  16. And the result is ... http://modx.bayridge-business.com/gmap.html?lat=40.6323290&lng=-74.0270810&desc=Taj%20Mahal%20Indian%20Restaurant

  17. Snippet: calling it (from a template)

  18. Snippets in a templateaffect all documents using that template!

  19. Chunks • Pieces of HTML, with placeholders • Think of them as simplified Smarty templates • Used by snippets, or templates to create HTML output • In an MVC architecture, the “V” (view)

  20. Document <html> <p> All about PB & J </p> </html> Rendered Page Snippet Chunk

  21. Document Template <html> <p> All about PB & J </p> </html> Rendered Page Chunk

  22. Chunk: definition

  23. Chunk: calling it (from a template) • Chunks accept parameters • You can pass either system settings (site_url) or template variables (latitude,longitude,pagetitle) as parameters

  24. And the result is ... http://modx.bayridge-business.com/listings/food-drink/restaurants/taj-mahal-indian-restaurant/

  25. modx tag syntax Template Variable Cached Snippet Uncached snippet Chunk Chunk placeholders More info.: http://rtfm.modx.com/display/revolution20/Tag+Syntax

  26. “Hackable” URLs • Using aliases and folders to create, hackable, semantic URLs • E.g.: • http://modx.bayridge-business.com/listings/food-drink/restaurants/taj-mahal-indian-restaurant/ • Organize your content in the same way that you think about it, and the URLs will reflect this semantic structure automatically!

  27. Caching • Document-level caching • Snippet-level caching • Caching is essential for high-traffic sites!

  28. Document-level caching Document are cacheable by default

  29. Snippet- and element-level caching • Cached snippet: [[google_maps]] • Uncached snippet: [[!google_maps]] • Uncached chunk: [[!$chunk]],  • Uncached placeholder: [[!+placeholder]] • Uncached template variable [[!*template_var]]

  30. Page-level + snippet-level caching

  31. Caching: summary • Page-level cache overrides snippet-level cache • Best practice: keep all pages cached, use uncached snippets for sections doing data processing, or needing instant updates • Page cache is automatically cleared when the page (or snippets it uses) is updated

  32. Extending modx • snippets, plugins, packages (“add-ons”) • plugins: pieces of PHP code that affect how the modx manager and user-facing site operate • packages: collections of snippets and chunks available through the modx manager Browse add-ons: http://modxcms.com/extras/repository/10

  33. Extending modx: upgrading packages

  34. Extending modx: adding new packages

  35. modx API • Call a snippet from a snippet • Parse a chunk, and return its output from a snippet • Cache the result of a function • Save data to the database using xPDO library Why use the modx API?

  36. Using the modx API • All snippets running within modx have access to the global $modx object • The $modx object is the main, and most important object • Call various methods of $modx API Reference: http://rtfm.modx.com/display/revolution20/modX

  37. modx API, snippets • Call a snippet from a snippet: • $googleMap = $modx->runSnippet('google_maps',array( • 'lat' => $_GET['lat'], • 'lng' => $_GET['lng'], • 'desc' => $_GET['desc'] • ));

  38. modx API, chunks • Parse a chunk, and return its output (from a snippet) • Snippet: • $row = array(‘name’ => ‘Tom Jones’, ‘email’ => ‘tj@tomjones.example.com’, ‘message’ => ‘hi there!’); • $formattedComment = $this->oModx->getChunk('show_comment', $row); • echo $formattedComment; • Chunk: • <p> [[+message]] <br /> • [[+name]] <em>([[+email]])</em> </p>

  39. modx API - accessing TVs • Get current document’s id: • $modx->resource->get(‘id’); • Get current document’s (built-in) “content” TV: • $modx->resource->get(‘content’); • Get the value of current document’s (custom) “latitude” TV: • $oTV = $modx->getObject( 'modTemplateVar', array( 'name'=>'latitude') ); • $latitude = $oTV->renderOutput($modx->resource->get(‘id’));

  40. modx API - running DB queries • PDO -> xPDO -> $modx ($modx inherits from PDO!) • Sample code: • foreach( $modx->query('SELECT cuisine_id, cuisine FROM cuisines LIMIT 5') as $row ){ • echo $row['cuisine_id'] . ',' . $row['cuisine'] . '<br />'; • } • Result • 1,nocuisine • 2,Christmas Specialties • 3,Italian • ... (More on xPDO and PDO in the appendix)

  41. Modx Plugins • Extend and modify core modx functionality • Example: create a custom routing system to serve “virtual pages”, using 404 handler

  42. Modx Plugin Events

  43. Questions? Comments?

  44. Thank You! • See appendix for links, and more info.

  45. Appendix • Main site: http://www.modxcms.com/ • Forums: http://modxcms.com/forums/ • modx Revolution documentation: http://rtfm.modx.com/display/revolution20/Home • Book: MODx Web Development (covers modx Evolution). https://www.packtpub.com/modx-web-development/book • Bob’s Guides: http://bobsguides.com/MODx.html Start Here:

  46. xPDO xPDO is an object-relational mapping framework that stands at the core of modx Revolution. It was written by modx core contributor Jason Coward. PDO reference: http://us3.php.net/manual/en/intro.pdo.php xPDO intro.: http://rtfm.modx.com/display/xPDO20/Fundamentals xPDO class ref.: http://rtfm.modx.com/display/xPDO20/Class+Reference xPDO api docs: http://api.modxcms.com/xpdo/xPDO.html xPDO forum: http://modxcms.com/forums/index.php/board,219.0.html Blog Posts: http://marcoraven.net/modx/modxrevolutionxpdo.html

  47. Useful Packages Listing and Summarization: • getResources: • http://modxcms.com/extras/package/?package=552 • Ditto: • http://modxcms.com/extras/package/?package=96

  48. Useful Packages Menus: • Wayfinder: • http://modxcms.com/extras/package/?package=487 • Breadcrumbs: • http://modxcms.com/extras/package/?package=54 For all packages, see: http://modxcms.com/extras/repository/10