The fourth stop for my little MODX Tour, this time at PHPAmersfoort. About the MODX content management platform, with a basic introduction and a more technical overview of some extension opportunities.
Relevant links:
http://MODX.com => official website
http://rtfm.modx.com => official documentation
https://github.com/modxcms/revolution => source code
https://MODX.today => daily links/articles about MODX
https://www.modmore.com => premium extras for MODX
https://joind.in/talk/view/15171 => talk feedback
2. Who am I?
Mark Hamstra
Founder & CEA at modmore
Freelance MODX Developer
my doggies
Turbo
Bommel
3. Agenda
• What is MODX, for whom, available
features, how to build a MODX site
• Tour of the MODX Manager (back-end)
• The Architecture of MODX, xPDO ORM,
extending and overriding
5. MOD-what?
• Open Source
• Written in PHP (of course)
• Primarily used with MySQL, other drivers available
• Already 10 years old young
• Content Management System Framework Platform
7. For who is MODX
• Web Professionals
• Designers
• Front-end developers
• Using MODX as a tool
• Est 4-5.000.000 sites
8. Community
• Free addons: 622
• Official Forum: forums.modx.com 50.571
• +- 1M views of modx.com per month
• Twitter: #MODX
• Slack: modx.org 289
9. All the features of a CMS
rich text editor versioning user groups
multisite templates multilingual extensions
markdown media browser hierarchical
page tree commercial support automatic
menu builder blogging permissions seo
friendly urls server-side caching
19. No need to reinvent
the wheel
• Packages (aka extras, add-
ons, extensions, third party
components…) provide
common functionality
• Install via Package Installer
inside the manager
20. Example: getResources
• Lists resources matching
conditions
• Uses a Chunk as template
• Use Cases:
• Article listings
• Dynamic (sub)menus
• RSS feed generation
Template
Chunk “blogListItem”
21. Time for a Manager Tour!
http://localhost/tmp/phpfrl/manager/
28. Custom Models with xPDO
1. Create an xPDO Package Schema (XML)
2. Use build script to write schema into the actual
model files/classes
3. Register it before use ($modx->addPackage)
4. Use any xPDO method (getObject,
getCollection) on your custom model
35. Interacting with that model
$modx->addPackage(‘phpfrl’, ‘/path/to/model/‘);
$c = $modx->newQuery(‘frlMeetup’);
$c->sortby(‘starts_on’, ‘DESC’);
$meetup = $modx->getObject(‘frlMeetup’, $c);
echo ‘De volgende meetup is ‘ . $meetup->name . ‘ en vind plaats op ‘ . $meetup-
>starts_on . ‘. ’;
$speakers = $meetup->getMany(‘Speakers’); // or just $meetup->Speakers
foreach ($speakers as $spegfytaker) {
echo $speaker->name . ‘ zal vertellen over ‘ . $speaker->subject;
}