中文版: http://drupaltaiwan.org/forum/20101026/4655
http://interests.scmp.com/international-property/
This is actually not the first project I build for SCMP
But it will be a good summary for my works on Drupal for first half of 2010
Site structure
- 3 level navigation – frontpage, taxonomy(countries), articles
- 5 content types:
- articles
- featured content
- images in gallery
- static page
- useful resources
Frontpage structure
Frontpage is build within one views, which contain 5 main parts (display)
- views::attachment Featured
- a maximum of 5 images rotation
- use jQuery Galleriffic plugin
- content type featured content
- sponsored articles
- recent uploaded articles
- All content “images”
- Upon click, larger image appears (by fancybox)
- list of all articles in the site
- order by regions of articles
- complex views templates (remark1)
Technical highlights
- Images in gallery as a standalone content type
- Every image have several size to display, extensive use of imagefield, imagefield_crop, imagecache
- Articles need to link the images to itself to display images in gallery section
- Single image can be reused over articles
- In image popup, “related articles” can be show if another article also use this image (remark2)
Remark1: complex views templates
Difficulties:
- Articles will be unpublished/published on scheduled date
- Country list is dynamic, only display a country if the country have a published article belongs to
- The display is 3 column, with dynamic number of rows, as the number of displayed country is dynamic
- The country list is ordered by country name
SQL through views (simplified sample):
- SELECT country_name, node_title FROM `nodes` JOIN taxonomy WHERE nodes.tid = taxonomy.tid GROUP BY country_name ORDER BY country_name;
Result set will be like:
- Canada, title1
- Canada, title2
- China, title3
- France, title4
- USA, title5
- …
Calculations:
- number of country in each column (2,1,1)
- count current country
- print country name when needed
- open/close a column when needed
Remarks2: related articles of images
- A views that take the image node id as argument
- And find articles that node reference is image node id
- If second argument is given, remove second argument from result set, so in article page, “related articles” do not show itself
Snapshot: