"Just Put That In The Zip Code Field..."


Published on

A discussion of content modeling capabilities and practices across different Web content management systems.

Published in: Business, Technology, Education

"Just Put That In The Zip Code Field..."

  1. 1. “Just put that in the zip code field…”<br />The Ins and Outs of Content Modeling<br />
  2. 2. Content management integration and consulting<br />Social networking integration<br />Custom design<br />Sioux Falls, South Dakota<br />http://blendinteractive.com/<br />
  3. 3. 6 Evaluation Questions<br />For those of you shopping for a CMS and comparing options.<br />5 Implementation Tips<br />For those of you implementing or managing a CMS-based Web site.<br />
  4. 4. Content Modeling Definition #1<br />The process of converting logical content concepts into editable, storable, manageable, searchable content objects by breaking them down into smaller pieces and describing their data to your CMS.<br />
  5. 5. Logical Content<br />This is the desired end result of a content management requirement.<br />
  6. 6. Content Object<br />An XML document<br />A database record<br />
  7. 7.
  8. 8.
  9. 9. Content Fidelity<br />How closely does the content in your CMS resemble the logical content you planned on?<br />
  10. 10. Different systems have vastly different content modeling capabilities.Never assume that system X can accurately model your content.<br />
  11. 11. Evaluation Question #1<br />Does your CMS allow content modeling or structuring at all?<br />
  12. 12. Why model content at all?<br />
  13. 13. Reason #1<br />Because different content types need to be STRUCTURED differently.<br />
  14. 14. Content Structure Between Types<br />
  15. 15. Content Structure Between Types<br />
  16. 16. Reason #2<br />Because different content types have to be EDITED and VALIDATED differently.<br />
  17. 17. Automatic Form Rendering<br />Content edit form in eZ publish<br />
  18. 18. Input Form Validation<br />Canned and custom validation in Ektron.<br />
  19. 19. Reason #3<br />Because different content types have to be DISPLAYED differently.<br />
  20. 20. Display Template Assignment<br />Template assignment by Page Type in EPiServer<br />
  21. 21. Reason #4<br />Because different content types have to be MANAGED differently.<br />
  22. 22. Content types often act as functional boundaries for:<br />Permissions<br />Workflow<br />Navigation<br />Search<br />
  23. 23. URL Pattern Assignments<br />URL pattern assignment based on Content Type in Drupal<br />
  24. 24. Permission Assignment<br />Permission assignments by content type in eZ publish<br />
  25. 25. Reason #5<br />Because different content types need to be SEARCHED and ORGANIZED differently.<br />
  26. 26. Organization by Content Value<br />
  27. 27. Content Type-specific Search<br />Parametric search based a content type in eZ publish<br />
  28. 28. Content modeling has its roots in two disciplines:<br />Relational database design<br />Object oriented programming<br />
  29. 29. Relational Database Roots<br />Content Type = Table<br />Content Attribute = Field<br />Attribute Datatype = Field Datatype<br />
  30. 30. OO Programming Roots<br />Content Type = Class<br />Content Attribute = Field, Property, Attribute<br />Attribute Datatype = Programming Datatype<br />Content Type Inheritance = Class Inheritance<br />
  31. 31. Is content management reinventing the wheel?<br />
  32. 32. Problems due to inefficient and inaccurate content modeling will often not surface until the project is complete.<br />By that point, it’s often too late….<br />
  33. 33. Types, Attributes, and Datatypes<br />
  34. 34. Content on most Web sites can be roughly categorized by type.A type shares a common set of attributes and is meant to represent a single, logical boundary around content.<br />
  35. 35. Nomenclature<br />Content Type<br />Content Class<br />SmartForm<br />Page Type<br />
  36. 36. Content Types<br />Content types in Drupal<br />
  37. 37. Content types are made up of content attributes.An attribute is a single, logical piece of information that, when combined with other attributes, describes a type of content.<br />
  38. 38. Nomenclature<br />Attribute<br />Property<br />Field<br />Element<br />
  39. 39. Content Attributes<br />Content attributes in eZ publish.<br />
  40. 40. Content attributes have datatypes.<br />A datatype restricts the type of data the attribute may hold. This enables validation and processing<br />
  41. 41. Datatypes provide:<br />Validation<br />Editing interfaces<br />Computation<br />
  42. 42. Attribute Datatypes<br />Content class attributes in eZ publish.<br />
  43. 43. Attribute Datatypes<br />Page Type Properties in EPiServer<br />
  44. 44. Generic Custom Fields<br />Custom fields in WordPress.<br />
  45. 45. Datatypes and Sorting<br />Datatypes tell the system how to treat values while sorting.<br />
  46. 46. Common Validation Needs<br />String is required<br />String is numeric<br />String matches a &quot;canned pattern&quot; (email address, SSN, etc.)<br />String matches a regular expression<br />String falls within a list of valid values drawn from somewhere else<br />String is unique to other content<br />Date is in the past/future<br />Date is in a specific range<br />File is of a specific type<br />File is within a specific size range<br />Value X is conditional on Value Y (if one is filled in, the other can’t be blank, etc.)<br />
  47. 47. Content Modeling Definition #2<br />Content modeling is the process of converting logical content concepts into content types, attributes, and datatypes.<br />
  48. 48. Implementation Tip #1<br />Think in terms of content types. Consider the ways different content will need to be edited, validated, managed, searched and organized.<br />
  49. 49. Evaluation Question #2<br />Does it allow you to structure content through configuration or does it require you to write code or modules?<br />
  50. 50. Code vs. Configuration<br />New Content Type in Plone<br />New Page Type in EPiServer<br />
  51. 51. Implementation Tip #2<br />Be careful in re-using content types for logically different content.<br />
  52. 52. Futureproofing is the process of designing your content model in such a way that it can be adapted to new situations with a minimum of pain.<br />
  53. 53. Implementation Tip #3<br />To futureproof your content, speculate on and list scenarios in which the content might be used now and in the future.<br />
  54. 54. A Really Bad Idea<br />Things that shouldn’t be there:<br /><ul><li>Date
  55. 55. Author
  56. 56. Categories
  57. 57. Location
  58. 58. (perhaps) Image</li></li></ul><li>Implementation Tip #4<br />To futureproof your content, do not entrap multiple logical attributes into the same implemented attribute<br />
  59. 59. Implementation Tip #5<br />Find the right balance. Don’t overstructure your content.<br />
  60. 60. Datatypes<br />
  61. 61. Evaluation Question #3<br />What datatypes are available to structure your content?<br />
  62. 62. Datatypes are the building blocks of your content.<br />
  63. 63. Strings<br />Simple and formatted strings in WordPress<br />
  64. 64. Dates<br />Date entry interface in Ektron.<br />
  65. 65. Binary Files<br />Binary file upload in Drupal (top) and eZ publish (bottom)<br />
  66. 66. Repeating Properties<br />A repeating data table within an Ektron content object.<br />A one-column Matrix datatype in eZ publish.<br />
  67. 67. Evaluation Question #4<br />Can you write your own datatypes or customize existing datatypes?<br />
  68. 68. Custom Datatypes<br />Custom datatype in eZ publish<br />
  69. 69. Evaluation Question #5<br />How well does it manage relational content modeling?<br />
  70. 70. DISCRETE content modeling is structuring content within a single content object.<br />
  71. 71. RELATIONAL content modeling is structuring a content object in relation to other content.Requires a linking datatype or a content tree.<br />
  72. 72. Relational Content Modeling<br />Page Link attribute in EPIServer<br />
  73. 73. Relational Content Modeling<br />Multiple content selection in EPiServer and Ektron<br />
  74. 74. Articles<br />Title<br />Body<br />Author<br />[…]<br />Articles<br />Title<br />Body<br />Author<br />[…]<br />Content Composition<br />Article<br />Title<br />Body<br />Author<br />[…]<br />Articles<br />Title<br />Body<br />Author<br />[…]<br />is related to<br />Author<br />First Name<br />Last Name<br />[…]<br />Bureau<br />Name<br />[…]<br />was written by<br />works for<br />
  75. 75. Evaluation Question #6<br />How well does it handle hierarchical content?<br />
  76. 76. Hierarchical Content<br />Publication<br />Issue<br />Section<br />Article<br />Article<br />
  77. 77. Content Trees<br />The content folder structure in Ektron<br />A pure content tree in eZ publish<br />
  78. 78. Evaluation Question #6<br />Does it allow any inheritance of content types or values?<br />
  79. 79. Content Type Inheritance<br />Movie Review Page<br />Title<br />Body<br />META Keywords<br />META Description<br />URL<br />Studio<br />Director<br />Cast<br />Running Time<br />Star Rating<br />Music Review Page<br />Title<br />Body<br />META Keywords<br />META Description<br />URL<br />Number of Tracks<br />Genre<br />Star Rating<br />
  80. 80. Content Type Inheritance<br />Movie Review Page<br />Studio<br />Director<br />Cast<br />Running Time<br />Star Rating<br />Web Page<br />Title<br />Body<br />META Keywords<br />META Description<br />URL<br />Music Review Page<br />Number of Tracks<br />Genre<br />Star Rating<br />
  81. 81. Content Value Inheritance<br />With a pure content tree, setting a value at a specific point will cause content “below” that point to inherit the value until overridden by a new value.<br />These content objects will inherit the value applied to “News,” unless they specifically override it.<br />
  82. 82. Evaluation Questions<br />Does it allow the structuring of content?<br />Is it via code or configuration?<br />What datatypes are available?<br />Can you write or customize your own datatypes?<br />How well does it handle relational content modeling?<br />How well does it handle hierarchical content?<br />
  83. 83. Implementation Tips<br />Think in terms of content types<br />Avoid reusing content types<br />Speculate on the future uses of content<br />Do not combine logical attributes into the same implemented attribute<br />Don’t overstructure your content<br />
  84. 84. Blend Interactive<br /> http://blendinteractive.com<br />Gadgetopiahttp://gadgetopia.com<br />Content Management and IA Writing<br /> http://blendinteractive.com/services/cm/<br />Twitter<br /> “gadgetopia”<br />Email<br />deane@blendinteractive.com<br />