我是 O O 師,我用 DRUPAL
All you need is Drupal
By Chris
吳政斌
Chris
Senior Drupal Developer
Fliegen Creative Studio
DrupalTaiwan.org
Designer
F2E
CMS Builder
WebAdmin
Chocolate Design

chris @ laconique.com.tw
amouro @ gmail.com
fb.com/amourow
吳政斌
Chris
Senior Drupal Developer
Fliegen Creative Studio
DrupalTaiwan.org
Designer
F2E
CMS Builder
WebAdmin
Chocolate Design

chris @ laconique.com.tw
amouro @ gmail.com
fb.com/amourow
吳政斌
Chris
Senior Drupal Developer
Fliegen Creative Studio
DrupalTaiwan.org
Designer
F2E
CMS Builder
WebAdmin
Chocolate Design

chris @ laconique.com.tw
amouro @ gmail.com
fb.com/amourow
Drupal

?
http://www.flickr.com/photos/efe6/
@Webchick / Angela Byron
the first women on Linux journal
that makes Linux history
Design | FrontEnd | Backend

?
As a
Designer

?
THEME
•  Basetheme

•  Frameworks
DRUPAL AWARE DESIGN
•  有效的運用區域
•  運用預設的 Class
THEME SETTING
BLOCK
BLOCK
D7UX
•  Our UX Principles:
1.  Make the most frequent tasks easy and less
frequent tasks achievable.
2.  Design for the 80%
3.  Privilege the Content Creator
4.  Make the default settings smart
DEV TOOLS
•  Firebug, Chrome DevTools
THEME SETTING
•  Add CSS in .info
– stylesheets[all][] = style.css
– stylesheets[all][] = reset.css
•  Customize tpl.php
As a
Programmer

?
WORKING WITH JS
•  jQuery 1.4.4 in D7
– 1.5.1, 1.7.1, 1.8.2 (jQuery update)
•  Add JavaScript in .info
– scripts[] = respond.js
– scripts[] = foo.js
•  API
– drupal_add_js()
drupal_add_js(drupal_get_path('theme', 'example'). '/foo.js', $options);
QUERY WITH VIEWS
QUERY WITH VIEWS
QUERY WITH VIEWS
MODULES
•  Slider
– Views slideshow
– Nivo slider
– Galleria
– Image Flow
– jCarousel
– 3D Views Carousel
VIEWS + VIEWS SLIDESHOW
VIEWS + IMAGE FLOW
FIELD WIDGET
HOOKS API
•  Creating a new node
– hook_node_presave()
– hook_node_insert()
•  Updating
•  Validating
– hook_validate()
HOOKS API
•  hook_node_view
HOOKS API
•  hook_form_alter
DATABASE
•  Database abstraction layer
– Built on top of the PDO library.
– Different driver for each db type
•  MySQL, PostgresSQL, SQLite, MongoDB*, SQL Server*
<?php
// Create an object of type SelectQuery and directly
// add extra detail to this query object: a condition, fields and a range
$query = db_select('users', 'u')
->condition('u.uid', 0, '<>')
->fields('u', array('uid', 'name', 'status', 'created', 'access'))
->range(0, 50);
?>
As a
WebAdmin

?
PERFORMANCE IN CORE
•  Database cache
•  Aggregation
– CSS
– JS
CDN
•  Domain mapping
•  File Conveyor
– AWS S3
– CloudFront
APC
•  Store opcode for php
MEMCACHE
•  Move db cache to memory
– https://drupal.org/project/memcache
– https://drupal.org/project/memcache_storage
BOOST
•  Static page cache for Anonymous
VARNISH
•  Reverse proxy
– https://drupal.org/project/varnish
INTEGRATION
•  APC
– cache
– cache_bootstrap
•  Memcache
– cache_field
– cache_menu
– …
•  DB
– cache_filter
•  Varnish
– Static page
THE MOST GEEKY CMS
•  Shell Command!
•  Drush = Drupal Shell Command
– Ref. http://2013.drupalcamp.tw/session/99
•  > druah status
THE MOST GEEKY CMS
> drush dl superfish views jquery_update
> drush en –y superfish
> drush mb foo_module --write --name=“Foo” –dep=“views”
Chris Wu 吳政斌
chris @ laconique.com.tw
amouro @ gmail.com
fb.com/amourow

I use drupal / 我是 OO 師,我用 Drupal