Функция для получения установленных тем оформления в GetSimple CMS

В системе управления контентом GetSimple CMS нет стандартной функции для получения списка установленных тем оформления. Если возникает потребность в такой функции, напишем её самостоятельно, предварительно разобравшись в том, как GetSimple CMS определяет установленные темы оформления.

Темы оформления GetSimple CMS расположены в поддиректориях директории, заданной в постоянной GSTHEMESPATH.Каждая тема офомления определяется существованием файл шаблона оформления страниц template.php, а название темы оформления соответствует имени директории. Остальные директории и файлы игнорируются.

На основе описанной логики работы GetSimple CMS можно написать следующий PHP код.

/**
 * Возвращает имена установленных тем оформления веб-сайта
 *
 * @uses GSTHEMESPATH
 *
 * @return array Массив с именами установленных тем оформления веб-сайта
 */
function get_installed_themes()
{
  $themes = array();
  foreach (new DirectoryIterator(GSTHEMESPATH) as $fileinfo) {
    if ($fileinfo->isDir() && !$fileinfo->isDot()) {
      if (file_exists($fileinfo->getPathname() . DIRECTORY_SEPARATOR . 'template.php')) {
        $themes[] = $fileinfo->getFilename();
      }
    }
  }
  return $themes;
}

Теперь можно вывести список всех установленных тем оформления так.

<?php
echo '<ul>';
foreach (get_installed_themes() as $item) {
  echo "<li>$item</li>";
}
echo '</ul>';
?>

Важно! В файле /admin/inc/basic.php определена функция get_themes(), но не смотря на имя, эта функция возвращает список файлов заданной темы оформления, а не список установленных тем оформления.