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.

Avatar for Christopher Imrie

Christopher Imrie

May 17, 2013
Tweet

More Decks by Christopher Imrie

Other Decks in Programming

Transcript

  1. • Aerospace Engineer • Ex-freelancer • Adobe Certified Instructor •

    PHP, JS, MySQL • CodeIgniter, ExpressionEngine • Problem Solver Christopher Imrie Lead Developer, Moresoda Tuesday, 21 May 13
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. Ideas breed ideas “ e harder I work, the luckier

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

    performance of a single entry? Tuesday, 21 May 13
  9. Entry Analytics • Unobtrusive • Focussed on entries • Relevant

    metrics • Flexible dates • Smart Weekday Comparison Tuesday, 21 May 13
  10. 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
  11. 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
  12. 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
  13. Template Tags Plus many more... Hits Page Speed Traffic Sources

    Desktop/Mobile Country Page Depth System Details Tuesday, 21 May 13