Check if a component exists in GetSimple

Put this code in your theme (I suggest you create a functions.php file and put it there):

<?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;
    }
}
?>

Then use it in your template file(s) like this:

<?php if (component_exists('mycomponent')) { ?>

... conditional html code ...

<?php get_component('mycomponent');    ?>

... more html code ...

<?php } ?>

That would be for enclosing a component, only if it exists, between some html code.

If you just want to display alternative content when the component does not exist, it could be like:

<?php
    if (component_exists('mycomponent')) {
        get_component('mycomponent');
    } else {
?>

... alternative text or html code ...

<?php } ?>

(Posted previously in the GS forum)

 

blog comments powered by Disqus