Talk Nerdy

MODX: Set your content free

Mark Hamstra

Developer (PHP + front-end)

4 jaar MODX ervaring

modmore

@mark_hamstra

mrkh.co

Content Management Systemen

De keuze voor een CMS is niet makkelijk. Er zijn enorm veel opties.

WordPress is een veel gemaakte keuze.

Iedereen gebruikt WordPress...

... maar is het wel de juiste keuze? (zie mrkh.co/wp)

Kijk eens verder...

... naar bijvoorbeeld MODX!

Wat is MODX?

  • Web Content Management Platform
  • Eerste release in 2004/05
  • PHP, MySQL
  • Downloads: 500.000 downloads sinds Dec 2010
    1.0 ca 200.000 sinds Dec 2010, 486.000 daarvoor.
  • Doelgroep: creative professionals

Waarom MODX?

Creative Freedom

Creative Freedom

Creative Freedom

Creative Freedom

Creative Freedom

Creative Freedom

Creative Freedom

Creative Freedom

Creative Freedom



100% controle
over de front-end

(en back-end ook, trouwens)

Jaaaaaaaja.

Ja, echt waar!

En ik zal laten zien hoe..

Pagina's!

Template 1


<!doctype html>
<html lang="nl-NL">
<head>
    <meta charset="[[++modx_charset]]">
    <title>[[*pagetitle]] :: [[++site_name]]</title>
</head>
<body>
   <h1>[[*longtitle]]</h1>
   [[*content]]
</body>
</html>
    

Template 1


<!doctype html>
<html lang="nl-NL">
<head>
    <meta charset="UTF-8">
    <title>Over :: Mijn Awesome Site</title>
</head>
<body>
   <h1>Over mijn website</h1>
   <p>Mijn site is super awesome!</p>
</body>
</html>
    

Template 2


<h1>Onze Diensten</h1>
[[Wayfinder? 
  &startId=`0` 
]]
    

Template 2


<h1>Onze Diensten</h1>
<ul>
    <li>
        <a href="diensten/">Onze Diensten</a>
        <ul>
            <li><a href="diensten/design.html">Web Design</a></li>
            <li><a href="diensten/modx.html">MODX Development</a></li>
        </ul>
    </li>
    <li><a href="contact.html">Contact</a></li>
</ul>
    

Template 3


<h1>[[*pagetitle]]</h1>
[[getResources? 
  &parents=`1` 
  &tpl=`blogposts`
]]
    

Chunk "blogposts"


<h2>[[+pagetitle]]</h2>
<p>[[+introtext:limit=`500`]]</p>
<p><a href="[[~[[+id]]]]">Lees meer</a></p>
    

Template 3


<h1>Onze Diensten</h1>

<h2>Web Design</h2>
<p>Onze designers maken voor jou de allermooiste websites die er bestaan.</p>
<p><a href=”diensten/design.html”>Lees meer</a></p>

<h2>MODX Development</h2>
<p>Wij bouwen alles in MODX. Super makkelijk, snel en gebruiksvriendelijk voor u, de klant.</p>
<p><a href=”diensten/modx.html”>Lees meer</a></p>
    

Template Vasilis

Pagina's

Gewenste HTML »


<ul>
    <li><a href="http://nerd.vasilis.nl/" 
      lang="en" hreflang="en">
      <span>blog</span></a>
      
    <li><a href="http://wasstra.at/">
      <span>de wasstraat</span></a>
      
    <li><a href="http://fronteers.nl/">
      <span>fronteers</span></a>
      
    <li><a href="http://dailynerd.nl/" 
      lang="en"><span>daily nerd</span></a>
      
    
</ul>
    

Template Vasilis


<ul>
    [[getResources?
        &parents=`0`
        &tpl=`vasilis_lijst`
        &limit=`0`
        &sortby=`menuindex`
        &sortdir=`asc`
        &context=`vasilis.nl`
    ]]
</ul>
    

Chunk "vasilis_lijst"


<li><a href="[[~[[+id]]]]" [[+link_attributes]]>
    <span>[[+pagetitle]]</span>
</a>
    

RSS Feed

Template Content


<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>[[*pagetitle]]</title>
    <link>[[~[[*id]]? &scheme=`full`]]</link>
    <description>[[*introtext:cdata]]</description>
    <language>[[++cultureKey]]</language>
    <ttl>120</ttl>
    <atom:link href="[[~[[*id]]? &scheme=`full`]]" rel="self" type="application/rss+xml" />
[[getResources?  &tpl=`rssItem`  &parents=`29,41`
  &depth=`5`  &limit=`10`  &includeContent=`1`
  &includeTVs=`1`  &showHidden=`0`  &hideContainers=`1`
]]
</channel>
</rss>
    

RSS Feed

Chunk "rssItem"


<item>
  <title>[[+pagetitle:htmlent]]</title>
  <link>[[~[[+id]]? &scheme=`full`]]</link>
  <description>
    [[+introtext:default=`[[+content:ellipsis=`600`]]`:cdata]]
  </description>
  <pubDate>[[+publishedon:strtotime:date=`%a, %d %b %Y %H:%M:%S %z`]]</pubDate>
  <guid isPermaLink="false">[[~[[+id]]? &scheme=`full`]]</guid>
  <dc:creator>
      [[+createdby:userinfo=`fullname`]]
  </dc:creator>
</item>
    

En code dan?


<?php
$c = $modx->newQuery('modResource');
$c->where(array(
  'deleted' => false,
  'published' => true,
));

$filter = $modx->getOption('filter', $scriptProperties, '');
if (!empty($filter)) {
    $c->andCondition(array(
        'pagetitle:LIKE' => "%{$filter}%",
    ));
}

foreach ($modx->getIterator('modResource', $c) as $resource) {
  echo 'Gevonden: '.$resource->pagetitle.' met ID '.$resource->id;
}

In Chunk / Template


    [[zoekResource? &filter=`home`]]

De Manager

Pagina's Bewerken (1/3)

Pagina's Bewerken (2/3)

Pagina's Bewerken (3/3)

Uitbreiding: FAQs

Uitbreiding: Analytics Dashboard

Uitbreiding: Configuratie

Uitbreiding: Articles

Package Management

Package Management

Content Types

Wie gebruiken MODX?

... en nog 100.000-en andere websites.

Site Gallery @ mrkh.co/modxsites

MODX Ook voor
jouw project?

Download @ modx.com/download
Documentatie @ rtfm.modx.com
Community Support @ forums.modx.com

O ja..

Deze presentatie is natuurlijk
gemaakt met MODX + reveal.js

Download @ modx.com/download
Documentatie @ rtfm.modx.com
Community Support @ forums.modx.com

Bedankt

Tweet @mark_hamstra • mrkh.co • modmo.re

Download MODX @ modx.com/download
Documentatie @ rtfm.modx.com
Community Support @ forums.modx.com

(Slides komen op mrkh.co/talknerdy)