This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
components-depending-on-the_page [2012/10/31 15:54] 127.0.0.1 external edit |
components-depending-on-the_page [2017/02/28 00:47] Timbow |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Components Depending On The Page ====== | + | ======Components Depending On The Page ====== |
+ | =====Component Only on One Page===== | ||
If you would like a component to be displayed on only one page, that can be done by adding the following code to your theme's **template.php** file: | If you would like a component to be displayed on only one page, that can be done by adding the following code to your theme's **template.php** file: | ||
<code><?php if (return_page_slug()=='PAGE') get_component('COMPNAME'); ?></code> | <code><?php if (return_page_slug()=='PAGE') get_component('COMPNAME'); ?></code> | ||
Line 5: | Line 6: | ||
Don't forget to replace **PAGE** with your **page's slug** and **COMPNAME** with the **component's name**. | Don't forget to replace **PAGE** with your **page's slug** and **COMPNAME** with the **component's name**. | ||
- | ====== Components Depending On The Parent Page ====== | + | =====Several Pages Each with Different Components===== |
+ | Say you have three pages with the slugs //index//, //about//, //contact// and sidebars as components named //peter//, //paul// and //mary// you would edit your template to replace **<?php get_component(sidebar); ?>** with | ||
+ | <code> | ||
+ | <?php if (return_page_slug()=='index') {get_component('peter');} | ||
+ | elseif (return_page_slug()=='about') {get_component('paul');} | ||
+ | else {get_component('mary');} ?> </code> | ||
+ | which in English reads | ||
+ | *If** the page slug is //index// insert the component //peter//, | ||
+ | **otherwise if** the page slug is //about// insert the component //paul// | ||
+ | and **otherwise** just insert the component //mary//. | ||
+ | |||
+ | |||
+ | ===== Components Depending On The Parent Page ===== | ||
Now If you want a component to be displayed on pages of a specific parent page, you can do it in a similar way: | Now If you want a component to be displayed on pages of a specific parent page, you can do it in a similar way: | ||
<code><?php if (get_parent(0)=='PAGE') get_component('COMPNAME'); ?></code> | <code><?php if (get_parent(0)=='PAGE') get_component('COMPNAME'); ?></code> | ||
Line 12: | Line 25: | ||
- | ====== Exluding components ====== | + | ===== Excluding components ===== |
- | If you would like to exclude a component from a page you could do that by **replacing** "**==**" with "**!=**" in the code above. | + | If you would like to exclude a component from a page you could do that by replacing "**==**" with "**!=**" in the code above. |
+ | |||
+ | =====A System for Different Components on Different Pages===== | ||
+ | |||
+ | The Components might contain a header image, sidebar content, tagline text, anything. If you only want one page to be different it might be simplest to just make a duplicate page template, but if you want them different on each of several pages here is how. | ||
+ | |||
+ | The following text needs to be in a functions.php file in your theme folder: | ||
+ | <file php><?php | ||
+ | if (!function_exists('component_exists')) { | ||
+ | function component_exists($id) { | ||
+ | global $components; | ||
+ | if (!$components) { | ||
+ | if (file_exists(GSDATAOTHERPATH.'components.xml')) { | ||
+ | $data = getXML(GSDATAOTHERPATH.'components.xml'); | ||
+ | $components = $data->item; | ||
+ | } else { | ||
+ | $components = array(); | ||
+ | } | ||
+ | } | ||
+ | $exists = FALSE; | ||
+ | if (count($components) > 0) { | ||
+ | foreach ($components as $component) { | ||
+ | if ($id == $component->slug) { | ||
+ | $exists = TRUE; | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | return $exists; | ||
+ | } | ||
+ | } | ||
+ | ?></file> | ||
+ | |||
+ | Make a component which will be the default component and call it say //default//. Make components for specific pages and name them to include the page slug of the page into which they are to be inserted, so name them say //content-about// and //content-contact//. Then call the component in your page template as follows: | ||
+ | <code php> | ||
+ | <?php if (component_exists('content-'.get_page_slug(false))) | ||
+ | {get_component('content-'.get_page_slug(false));} | ||
+ | else {get_component('default');} ?></code> | ||
+ | |||
+ | ======Links====== | ||
+ | Back to the GetSimple Wiki [[:start|Contents Page]] | ||
+ | ===How to Have Different sidebars=== | ||
+ | [[http://mvlcek.bplaced.net/how-to/sidebars/]] |