SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Customizing WordPress Themes
@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
About Your Presenter:
Lisa Sabin-Wilson
✤   Wisconsin (Go Pack!)
                                Lisa Sabin-Wilson
                                    Author of books.
✤   WordPress user since 2003       Designer of sites.
                                   Lover of WordPress.
✤   Author since 2006
                                http://lisasabin-wilson.com
                                     @LisaSabinWilson
✤   Twitter: @LisaSabinWilson
                                Thanks for coming!
WordPress Books


✤   WordPress For Dummies

✤   WordPress All In One

✤   WordPress Web Design For
    Dummies
This session covers the basics of
           WordPress themes and provides
          practical tips on how to get started
              creating your own theme.




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Please hold questions
           until the end - thank you!



@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
There is more than one way to skin a cat




 I present one way to accomplish building a WordPress theme - your mileage may vary.



@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
WordPress Theme versus
WordPress Template
✤   WordPress Theme = a grouping of several templates
    working together.

✤   WordPress Template = a singular file.




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
WordPress Theme versus
WordPress Template

 A WordPress Theme is a collection of WordPress
 Templates made up of WordPress tags.




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Structure is IMPORTANT

  Before digging into template functions for WordPress
  themes - understand the syntax of the template tags you
  will be using:

  <?php the_title(); ?>




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Structure is IMPORTANT



  <?php the_title(); ?>


@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Where Do Themes Live??


  In the WordPress installation
  directory on your web server:
  /wp-content/themes/

@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Where Do Themes Live??


  Each theme has its own folder:
  /wp-content/themes/your-awesome-theme/

  /wp-content/themes/your-lame-theme/




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
6 Main Template
Files:
✤   Stylesheet (style.css)

✤   Header (header.php)

✤   Main Index (index.php)

✤   Sidebar (sidebar.php)

✤   Footer (footer.php)

✤   Theme Functions (functions.php)

@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
6 Main Template Files:
✤   Stylesheet => Contains the CSS that defines the formatting and style

✤   Header => Starting point for every page of a web site

✤   Main Index => contains template tags that display the content

✤   Sidebar => Navigation items, links, banners, etc

✤   Footer => copyright statements, menus, etc.

✤   Functions => contains functions to include features in your theme such as
    thumbnails, menus, custom backgrounds, etc.

@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Creating a Theme from Scratch:
 part slides / part live demo.

  Download sample files here:
      http://lisas.co/wcatl-demo


@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Stylesheet (style.css)

✤   Contains the CSS style information for your
    site
✤   ALSO must contain theme information in
    the form of comments so WordPress
    recognizes the unique theme.

@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Stylesheet (style.css)

  /*
  Theme Name: WordCamp ATL Theme Demo
  Theme URI: http://lisasabin-wilson.com
  Description: WordCamp ATL Theme Demo
  Version: 1.0
  Author: Lisa Sabin-Wilson
  Author URI: http://lisasabin-wilson.com
  License: GNU Public License
  */


@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Stylesheet
(style.css)

Comments in the style.css file
display in the Theme Information
section in the Dashboard under
“Manage Themes”


Create a 300 x 225 JPG or PNG file
called “screenshot” to display the
theme thumbnail.



@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Stylesheet (style.css)

  Follow coding standards for CSS for best results:

  http://codex.wordpress.org/CSS_Coding_Standards




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Header Template




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Sidebar Template




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Footer Template




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Use Simple includes to pull
template files into the Main Index:
✤   To include the header, use get_header()

✤   To include the sidebar, use get_sidebar()

✤   To include the footer, use get_footer()

✤   To include the search form, use get_search_form()



@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Main Index Template




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Functions




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Functions

Add Custom Background Feature

  add_custom_background();



@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Functions
 Add Post Thumbnails
add_theme_support( 'post-thumbnails' );
add_image_size( 'blog', '600', '200', true );




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Functions

Add Post Thumbnails to your template file:
 <?php if ( has_post_thumbnail($post->ID)) {
    echo get_the_post_thumbnail($post->ID, 'blog');
    }
 ?>




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Functions
Add Widget Areas:
if ( function_exists('register_sidebar') )
  register_sidebar(array(
    'name' => 'Sidebar',
    'id' => 'sidebar-widget',
));



@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Theme Functions Reference

http://codex.wordpress.org/Theme_Features

http://codex.wordpress.org/Function_Reference




@LisaSabinWilson | WordCamp Atlanta - Feb. 2012
Creating a Theme from Scratch

   http://lisas.co/wcatl-demo



@LisaSabinWilson | WordCamp Atlanta - Feb. 2012

Weitere ähnliche Inhalte

Mehr von Lisa Sabin-Wilson

Documenting Design: A Critical Step in Any Developers Workflow
Documenting Design: A Critical Step in Any Developers WorkflowDocumenting Design: A Critical Step in Any Developers Workflow
Documenting Design: A Critical Step in Any Developers WorkflowLisa Sabin-Wilson
 
This is BuddyPress, Install it maybe
This is BuddyPress, Install it maybeThis is BuddyPress, Install it maybe
This is BuddyPress, Install it maybeLisa Sabin-Wilson
 
Exploring WordPress Multisite
Exploring WordPress MultisiteExploring WordPress Multisite
Exploring WordPress MultisiteLisa Sabin-Wilson
 
Self Publishing - Web Based Author Tools by Lisa Sabin-Wilson
Self Publishing - Web Based Author Tools by Lisa Sabin-WilsonSelf Publishing - Web Based Author Tools by Lisa Sabin-Wilson
Self Publishing - Web Based Author Tools by Lisa Sabin-WilsonLisa Sabin-Wilson
 
Tips for running a successful web studio
Tips for running a successful web studioTips for running a successful web studio
Tips for running a successful web studioLisa Sabin-Wilson
 
Creating Community with BuddyPress
Creating Community with BuddyPressCreating Community with BuddyPress
Creating Community with BuddyPressLisa Sabin-Wilson
 

Mehr von Lisa Sabin-Wilson (6)

Documenting Design: A Critical Step in Any Developers Workflow
Documenting Design: A Critical Step in Any Developers WorkflowDocumenting Design: A Critical Step in Any Developers Workflow
Documenting Design: A Critical Step in Any Developers Workflow
 
This is BuddyPress, Install it maybe
This is BuddyPress, Install it maybeThis is BuddyPress, Install it maybe
This is BuddyPress, Install it maybe
 
Exploring WordPress Multisite
Exploring WordPress MultisiteExploring WordPress Multisite
Exploring WordPress Multisite
 
Self Publishing - Web Based Author Tools by Lisa Sabin-Wilson
Self Publishing - Web Based Author Tools by Lisa Sabin-WilsonSelf Publishing - Web Based Author Tools by Lisa Sabin-Wilson
Self Publishing - Web Based Author Tools by Lisa Sabin-Wilson
 
Tips for running a successful web studio
Tips for running a successful web studioTips for running a successful web studio
Tips for running a successful web studio
 
Creating Community with BuddyPress
Creating Community with BuddyPressCreating Community with BuddyPress
Creating Community with BuddyPress
 

Kürzlich hochgeladen

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Kürzlich hochgeladen (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

Customizing WordPress Themes

  • 1. Customizing WordPress Themes @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 2. About Your Presenter: Lisa Sabin-Wilson ✤ Wisconsin (Go Pack!) Lisa Sabin-Wilson Author of books. ✤ WordPress user since 2003 Designer of sites. Lover of WordPress. ✤ Author since 2006 http://lisasabin-wilson.com @LisaSabinWilson ✤ Twitter: @LisaSabinWilson Thanks for coming!
  • 3. WordPress Books ✤ WordPress For Dummies ✤ WordPress All In One ✤ WordPress Web Design For Dummies
  • 4. This session covers the basics of WordPress themes and provides practical tips on how to get started creating your own theme. @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 5. Please hold questions until the end - thank you! @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 6. There is more than one way to skin a cat I present one way to accomplish building a WordPress theme - your mileage may vary. @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 7. WordPress Theme versus WordPress Template ✤ WordPress Theme = a grouping of several templates working together. ✤ WordPress Template = a singular file. @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 8. WordPress Theme versus WordPress Template A WordPress Theme is a collection of WordPress Templates made up of WordPress tags. @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 9. Structure is IMPORTANT Before digging into template functions for WordPress themes - understand the syntax of the template tags you will be using: <?php the_title(); ?> @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 10. Structure is IMPORTANT <?php the_title(); ?> @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 11. Where Do Themes Live?? In the WordPress installation directory on your web server: /wp-content/themes/ @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 12. Where Do Themes Live?? Each theme has its own folder: /wp-content/themes/your-awesome-theme/ /wp-content/themes/your-lame-theme/ @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 13. 6 Main Template Files: ✤ Stylesheet (style.css) ✤ Header (header.php) ✤ Main Index (index.php) ✤ Sidebar (sidebar.php) ✤ Footer (footer.php) ✤ Theme Functions (functions.php) @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 14. 6 Main Template Files: ✤ Stylesheet => Contains the CSS that defines the formatting and style ✤ Header => Starting point for every page of a web site ✤ Main Index => contains template tags that display the content ✤ Sidebar => Navigation items, links, banners, etc ✤ Footer => copyright statements, menus, etc. ✤ Functions => contains functions to include features in your theme such as thumbnails, menus, custom backgrounds, etc. @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 15. Creating a Theme from Scratch: part slides / part live demo. Download sample files here: http://lisas.co/wcatl-demo @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 16. Theme Stylesheet (style.css) ✤ Contains the CSS style information for your site ✤ ALSO must contain theme information in the form of comments so WordPress recognizes the unique theme. @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 17. Theme Stylesheet (style.css) /* Theme Name: WordCamp ATL Theme Demo Theme URI: http://lisasabin-wilson.com Description: WordCamp ATL Theme Demo Version: 1.0 Author: Lisa Sabin-Wilson Author URI: http://lisasabin-wilson.com License: GNU Public License */ @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 18. Theme Stylesheet (style.css) Comments in the style.css file display in the Theme Information section in the Dashboard under “Manage Themes” Create a 300 x 225 JPG or PNG file called “screenshot” to display the theme thumbnail. @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 19. Theme Stylesheet (style.css) Follow coding standards for CSS for best results: http://codex.wordpress.org/CSS_Coding_Standards @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 20. Header Template @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 21. Sidebar Template @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 22. Footer Template @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 23. Use Simple includes to pull template files into the Main Index: ✤ To include the header, use get_header() ✤ To include the sidebar, use get_sidebar() ✤ To include the footer, use get_footer() ✤ To include the search form, use get_search_form() @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 24. Main Index Template @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 25. Theme Functions @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 26. Theme Functions Add Custom Background Feature add_custom_background(); @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 27. Theme Functions Add Post Thumbnails add_theme_support( 'post-thumbnails' ); add_image_size( 'blog', '600', '200', true ); @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 28. Theme Functions Add Post Thumbnails to your template file: <?php if ( has_post_thumbnail($post->ID)) { echo get_the_post_thumbnail($post->ID, 'blog'); } ?> @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 29. Theme Functions Add Widget Areas: if ( function_exists('register_sidebar') ) register_sidebar(array( 'name' => 'Sidebar', 'id' => 'sidebar-widget', )); @LisaSabinWilson | WordCamp Atlanta - Feb. 2012
  • 31. Creating a Theme from Scratch http://lisas.co/wcatl-demo @LisaSabinWilson | WordCamp Atlanta - Feb. 2012

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n