User Tools

Site Tools


components-depending-on-the_page

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last 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:50]
Timbow [Several Pages Each with Different Components]
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 <​code><?​php get_component(sidebar);​ ?></​code>​ 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 23:
  
  
-====== 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/​]]
components-depending-on-the_page.txt · Last modified: 2017/02/28 00:56 by Timbow