Content Management

Professional Practice

The module

Teaching team

Thomas Dutrion

Weekly planning

  • Lectures
    • 2 hours on Thursdays (01pm to 03pm)
    • Theory, introducing concepts
  • Practicals
    • 2 hours on Tuesdays (11am-01pm OR 01pm-03pm)
    • Technical, you experiment things learned in lectures
  • Home work
    • A lot of it, especially when the coursework will be released
    • Both technical and theoretical (project and report)

Overall planning 1/2

Week Practical Lecture
14/09 - 20/09 Introduction
Wordpress installation
Introduction, Definition of content management, technical revisions and introduction to versionning
21/09 - 27/09 Versionning 101: git basics Introduction to wordpress
Extending wordpress: themes
28/09 - 04/10 Building a custom theme 1/2 Guest lecture
05/10 – 11/10 Building a custom theme 2/2 Extending wordpress: plugins
12/10 – 18/10 Building a custom plugin Extending wordpress: security
19/10 – 25/10 Securing a custom plugin Generic: optimising page load
26/10 – 01/11 Optimising a website loading time Modern CMS: Drupal 8 introduction
02/11 – 08/11 Wordpress and Drupal as services Deployment: best practices

Overall planning 2/2

Week Practical Lecture
09/11 – 15/11 Deployment with wordpress
16/11 – 22/11 Assessment support Assessment support
23/11 – 29/11 Assessment support Assessment support
30/11 – 06/12 Demonstrations Final questions
07/12 – 13/12 Assessment week No practical nor lecture
14/12 – 20/12 Assessment week No practical nor lecture

Questions?

Content management

Definitions

Content

In publishing, art, and communication, content is the information and experience(s) directed towards an end-user or audience. Content is "something that is to be expressed through some medium, as speech, writing or any of various arts".

Management

Management in businesses and organizations is the function that coordinates the efforts of people to accomplish goals and objectives by using available resources efficiently and effectively.

Quotes from Wikipedia

CMS

Wordpress logo Drupal logo
Expression Engine logo Joomla logo

Market shares 1/2

CMSs market shares 2014-2015

CMS market shares, retrieved from W3Tech

Market shares 2/2

Stay critical!

Who created the statistics?

What are they based on?

Does that include data on CMS used behind companies firewalls? (spoiler: no)

For who and what?

  • Non-technical users who want to manage/publish content
  • Developers with common requirements (create a blog, website...)
  • Developers with specific requirements and common requirements in the same time
  • Manage documents inside a company (workflows inside CMSs)
  • Communicating with the world (publishing, receiving feedbacks)

How to choose?

  • Mainly a personal opinion / preference
  • Legal constraints (licence, support)
  • Community, never get stuck
  • The more users, the more the project can fix bugs quickly
  • "One fits all" problem

Questions?

Technical (re)visions

Web request lifecycle

Web request lifecycle sequence diagram in a PHP context

WAMP / LAMP / MAMP

  • W/M/L: Windows / MacOS / Linux
    • The operating system of your server
  • A: Apache
    • An HTTP server: receives a request, gives a response
    • Compete with others, especially Ngnix
  • M: Mysql
    • A database server, specifically a relational database server in this case
    • Compete with MariaDB (fork), Postgresql, Oracle, Microsoft SQL Database
  • P: PHP
    • A scripting language, here the interpreter used to parse the files

HTML

  • Markup language (not programming)
  • Structuring and presenting content
  • Currently version 5
  • Recommandation, not a standard

<!DOCTYPE html>
<html lang="en-GB">
    <head>
	<meta charset="UTF-8">
    </head>
    <body>

    </body>
</html>
						

CSS

  • Style sheet language (not programming)
  • Applied to a document written in markup language
  • Describing the look and formatting of a document
  • Currently version 3
  • Recommandation, not a standard

/* Comment */

html {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	font-size: 62.5%;
	overflow-y: scroll;
	-webkit-text-size-adjust: 100%;
	-ms-text-size-adjust: 100%;
}
						

PHP

  • Server-side scripting language (programming!)
  • Gives instruction to the machine
  • Currently version 5.6, version 7 in November
  • Powers many CMSs

<?php // opening tag
/**
 * Comment
 */
// other comment
if ( !isset($wp_did_header) ) { // condition
	$wp_did_header = true; // assignation
	require_once( dirname(__FILE__) . '/wp-load.php' );
	wp(); // method call
	require_once( ABSPATH . WPINC . '/template-loader.php' );
}
						

SQL

  • Special-purpose programming language for RDBMS
  • Managing relational data
  • Currently version: SQL:2011
  • Different implementations in different RDBMS

# comment

# MYSQL CODE ONLY  because of the back ticks
SELECT * FROM `table` WHERE `column` = %s AND `field` = %d
						

// REQUEST WITH EMBEDDED PHP
$wpdb->query("
	INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order)
	VALUES " . join( ',', $values ) . "
	ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)
")
						

Tools

  • Web browsers + Developer tools
  • Integrated Development Environment / Text editor
  • Preprocessors
  • Performance analysis tools
  • Versioning

Questions?

Next week

Versioning: code

Version Control Systems

  • Git
  • Subversion (SVN)
  • Mercurial

More details on Wikipedia: Version Control Systems

Git basic demonstration

Thanks for coming

  • Feedback welcome
  • Questions welcome
  • See you on Tuesday
Fork me on GitHub