1 / 48

The modx CMS and framework

The modx CMS and framework. Jayesh Sheth NYPHP - Sept. 28, 2010 Hive at 55, 55 Broad Street, New York, NY. Why modx?. CMS + framework Open Source + PHP Flexibility (no framework “straight-jacket”) Graphical approach Simple & accessible, yet powerful (like PHP) Active community.

abdalla
Download Presentation

The modx CMS and framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

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

More Related