Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EEUK.13 - Boundaries & Ideas

EEUK.13 - Boundaries & Ideas

Finale of EEUK.13 in Manchester. I talk about how you should remember that ExpressionEngine is part of a larger system (CodeIgniter) and stepping out into it can yield interesting results.

8913df89f6ad47b099553d6e4ceef532?s=128

Christopher Imrie

May 17, 2013
Tweet

More Decks by Christopher Imrie

Other Decks in Programming

Transcript

  1. Boundaries & Ideas ExpressionEngine By Christopher Imrie Lead Developer, Moresoda

    Tuesday, 21 May 13
  2. • Aerospace Engineer • Ex-freelancer • Adobe Certified Instructor •

    PHP, JS, MySQL • CodeIgniter, ExpressionEngine • Problem Solver Christopher Imrie Lead Developer, Moresoda Tuesday, 21 May 13
  3. Tuesday, 21 May 13

  4. A flexible system ExpressionEngine Tuesday, 21 May 13

  5. EECI EU Leiden, 2012 Composer Tuesday, 21 May 13

  6. Composer Tuesday, 21 May 13

  7. Composer “When demoed, people just ‘got it’ ” - Christopher

    Imrie Tuesday, 21 May 13
  8. Composer • Works with all fields • Third party JS

    rewritten & packaged on the fly • Fast: On demand field loading • JS Framework, Lifecycle API & JS Fieldtype Tuesday, 21 May 13
  9. Content Elements Krea Tuesday, 21 May 13

  10. Channel Field API Changed EllisLab Tuesday, 21 May 13

  11. FAILURE Beaten to market - API Changed Too Ambitious Composer

    Christopher Imrie Tuesday, 21 May 13
  12. Not a total loss RequireJS-for-EE https://github.com/ckimrie/RequireJS-for-EE Tuesday, 21 May 13

  13. EE Developer Toolbar On demand JS & CSS loading function

    loadScript(/** string */ name, /** Function*/ cb) { var loaded = false, url = String(name), eed = document.createElement('script'); eed.type = 'text/javascript'; eed.async = true; eed.src = url; //Listen for script load eed.onload = eed.onreadystatechange = function () { if ((eed.readyState && eed.readyState !== "complete" && eed.readyState !== "loaded") || loaded) { return false; } eed.onload = eed.onreadystatechange = null; loaded = true; //Fire callback on script load if supplied if (typeof cb === "function") cb(); }; document.getElementsByTagName('head')[0].appendChild(eed); } function loadCss(name, cb) { var def = new jQuery.Deferred(), " " url = String(name), " " eed = document.createElement('link'); " eed.type = 'text/css'; " eed.rel = 'stylesheet'; " eed.href = url; " //Listen for script load " eed.onload = eed.onreadystatechange = function () { " " if (typeof cb === "function") { " " " cb(); " " } " }; " document.getElementsByTagName('head')[0].appendChild(eed); } https://gist.github.com/ckimrie/5587884 https://gist.github.com/ckimrie/5587857 Tuesday, 21 May 13
  14. RequireJS-for-EE var files = [ 'path/to/script.js', 'css!path/to/styles.css' ]; require(files, function(){

    //Callback }); Standard Script Loading Tuesday, 21 May 13
  15. RequireJS-for-EE var files = [ 'path/to/moduleA', 'path/to/moduleB', 'css!path/to/styles.css' ]; require(files,

    function(moduleA, moduleB){ //Callback }); AMD Script Loading Tuesday, 21 May 13
  16. RequireJS-for-EE Tuesday, 21 May 13

  17. RequireJS-for-EE Tuesday, 21 May 13

  18. RequireJS-for-EE Tuesday, 21 May 13

  19. Discovery of The Technique Modify all output by ExpressionEngine. https://gist.github.com/ckimrie/3312619

    Tuesday, 21 May 13
  20. EE Developer Toolbar mithra62 Tuesday, 21 May 13

  21. EE Developer Toolbar • Completely Open Source https://github.com/mithra62/ee_debug_toolbar • Runs

    in a hostile EE enviroment Post EE shutdown • Debug panel API Tuesday, 21 May 13
  22. Site Manager Christopher Imrie Tuesday, 21 May 13

  23. Site Manager • Completely Open Source http://github.com/ckimrie/Site-Manager • Migrate channel

    & category data • AES Encrypted communication • No ‘Line of sight’ problem Tuesday, 21 May 13
  24. Ideas breed ideas “ e harder I work, the luckier

    I get” - Samuel Goldwyn Tuesday, 21 May 13
  25. Entry Analytics An Idea: What if you could see the

    performance of a single entry? Tuesday, 21 May 13
  26. Entry Analytics Demo Tuesday, 21 May 13

  27. Entry Analytics • Unobtrusive • Focussed on entries • Relevant

    metrics • Flexible dates • Smart Weekday Comparison Tuesday, 21 May 13
  28. Entry Analytics Tuesday, 21 May 13

  29. Template Tags Full Google Analytics template integration Tuesday, 21 May

    13
  30. Template Tags <h2>Popular Right Now</h2> <ul> {exp:entry_analytics:entries sort="pageviews" past_days="2 days"

    limit="10"} <li>{title} - {ga:visits} Hits</li> {/exp:entry_analytics:entries} </ul> Entries Tag All Channel Entries tag parameters available Tuesday, 21 May 13
  31. Template Tags <h2>Something to read?</h2> <p>Try some of these</p> <ul>

    {exp:entry_analytics:entries sort="avgTimeOnPage" past_days="6 month" limit="5"} <li><a href="{url_title_path=article}">{title}</li> {/exp:entry_analytics:entries} </ul> Interesting Possibilities Tuesday, 21 May 13
  32. Template Tags <h2>Site Visits</h2> <ul> {exp:entry_analytics:query past_days="30" metrics="ga:visitors, ga..."} <li>Total

    Visits: {ga:visits}</li> <li>...</li> {/exp:entry_analytics:query} </ul> Query Tag All Google Analytics metrics & dimensions available Tuesday, 21 May 13
  33. Template Tags Plus many more... Hits Page Speed Traffic Sources

    Desktop/Mobile Country Page Depth System Details Tuesday, 21 May 13
  34. Entry Analytics screenshot Tuesday, 21 May 13

  35. Availability Tuesday, 21 May 13

  36. Availability Today beta Tuesday, 21 May 13

  37. Availability Today $65 beta Tuesday, 21 May 13

  38. A flexible system ExpressionEngine @chrisimrie github.com/ckimrie chris@moresoda.co.uk Thank You Tuesday,

    21 May 13