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
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:56] (current)
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 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/​]]
components-depending-on-the_page.1351698868.txt.gz · Last modified: 2013/04/19 14:53 (external edit)