Внимание!!! Начиная с версии GetSimple CMS 3.3.23, на странице компонентов вы можете использовать редактор CKEditor. Он будет включаться только для компонентов без кодов PHP. Если в коде присутствует открывающий тег PHP, то кнопка для включения редактора будет скрыта. JS скрипты использовать можно. Также плагин подсветки кода в компонентах сейчас не нужен, сейчас всё работает из коробки.
Для того, чтобы иметь возможность редактировать отдельные части шаблона в GetSimple CMS предусмотрено создание так называемых компонентов. Компоненты могут содержать как обычный текст, так и HTML-теги, JS-скрипты и PHP-коды. Ограничения на количество компонентов нет. После создания компонента над ним справа появится код, который и нужно вставить либо в шаблон, либо в другой компонент. Выглядит он так:
<?php get_component('sidebar'); ?>
При использовании плагина DynPages можно вставлять код компонента и непосредственно в редакторе страниц.
Если требуется отображать разные компоненты на разных страницах, есть несколько вариантов кода:
- Для показа компонента только на конкретной странице.
<?php if (return_page_slug()=='PAGESLUG') get_component('COMPONENTNAME'); ?> - Для показа компонента на всех страницах, кроме конкретной страницы. Просто заменить == на != и все.
<?php if (return_page_slug()!='PAGESLUG') get_component('COMPONENTNAME'); ?> - Для показа компонента только на детских страницах конкретной родительской страницы.
<?php if (get_parent(0)=='PAGESLUG') get_component('COMPONENTNAME'); ?> - Для показа компонентов и на родительской и на детских страницах с любой глубиной вложенности.
<?php if ( return_page_slug() == 'PAGESLUG' || return_parent() == 'PAGESLUG' || return_parent() == 'CHILD-PAGESLUG' ) { get_component('COMPONENTNAME'); } ?> - Для показа отдельного компонента для каждой страницы в зависимости от slug (имя ссылки). Создавайте компоненты с именем ссылки страницы. Если компонент для страницы не создан, ничего не будет показано.
<?php get_component((string) return_page_slug()); ?> - Для показа конкретных компонентов для конкретных страниц и одного компонента для всех остальных.
<?php if ( return_page_slug() == 'about' ) { get_component('about-component'); } elseif ( return_page_slug() == 'index' ) { get_component('homepage-component'); } else { get_component('default-component'); } ?> - Так же можно создавать отдельные компоненты для каждой страницы, используя для их показа такой код:
<?php get_component(return_page_slug().'-sidebar'); ?>
Включение одной страницы в другую страницу
Также в GetSimple CMS существует возможность включения в код обычного текста с конкретных страниц (html-теги работают).
<?php getPageContent('PAGECONTENTSLUG'); ?>
Для включения на конкретной странице код будет выглядеть так:
<?php if (return_page_slug()=='PAGESLUG') { getPageContent('PAGECONTENTSLUG'); } ?>
Дополнительные возможности
Есть функция, позволяющая добавлять к какому-либо компоненту дополнительные компоненты в зависимости от slug страницы. Просто разместите ее в файле functions.php в папке с вашей темой.
function component_master($id,$first=false) {
if (file_exists('data/other/components.xml')) {
$master = return_page_slug();
$extra = false;
$standard = false;
$thisfile = file_get_contents("data/other/components.xml");
$data = simplexml_load_string($thisfile, NULL, LIBXML_NOCDATA);
$components = $data->item;
if (count($components) != 0) {
foreach ($components as $component) {
if ($master.'-'.$id == $component->slug) {
eval("?>" . stripslashes(htmlspecialchars_decode($component->value, ENT_QUOTES)) . "<?php ");
return;
} elseif ($master.'-extra-'.$id == $component->slug) {
$extra = $component->value;
} elseif ($id == $component->slug) {
$standard = $component->value;
}
}
if ($standard) {
eval("?>" . ($extra&&$first?stripslashes(htmlspecialchars_decode($extra, ENT_QUOTES)):'') . stripslashes(htmlspecialchars_decode($standard, ENT_QUOTES)) . ($extra&&!$first?stripslashes(htmlspecialchars_decode($extra, ENT_QUOTES)):'') . "<?php ");
}
}
}
}
После создания этой функции в файле functions.php, размещенном в папке вашей темы, вы должны вставить в код шаблона следующую строчку:
<?php component_master('COMPONENTNAME'); ?>
Сейчас вы можете создавать дополнительные компоненты со следующим названием slug-extra-component для любой из страниц, где slug — имя ссылки страницы, а component — имя компонента, к которому нужно добавить данный компонент. Например имя компонента blog-extra-sidebar будет означать, что этот компонент будет показан на странице blog в компоненте sidebar.
В теме Innovation, по умолчанию включенной в GetSimple есть такой файл с парой функций: одна позволяет создавать "хлебные крошки" в шаблоне, а вторая определяет переменные основанные на настройках InnovationPlugin.
Так как я постоянно использую InnovationPlugin для различных социальных сетей, я перевел его и дополнил, как зарубежными онлайн сервисами YouTube и Flickr и прочими, так и отечественными социалками: Вконтакте и Одноклассники.