Блог под Скрытной Наной.

Блог внутри Скрытной Наны.

Вся премудрость заключается в правильном написании Документа блога, а так же файла меню. Ничего непостижимого, как обычно, в этом нет.

1) Документ блога.

Просто совмещаем файлы документа Скрытной Наны и Блоговой.
Пусть для определённости это будет индексный файл фолдера.

<?php /* Выше этой строки в файле ничего не должно быть */

   
include($_s['loc']['modul'].$_s['hidden']['base'].'_hidden.php');
      
 
# Контент для авторизованного пользователя или Администратора:
   
   
global $_blog;
   
$blog_name='main'# имя инсталляции.
   
include($_s['loc']['modul'].$_s['blog']['base'].'_blog.php');

   if (!
h_access() and !$_blog['admin']) {
      
$_s['title']='Вы не вошли в Закрытую Зону.';
      
$_s['content']=

 
# Контент для НЕ авторизованного пользователя:

      
h2('Инструкция по получению доступа к Скрытному Блогу.').'
      <p>Кнопка Тестового Доступа в этом точно поможет.</p>'
;

   }

/* Ниже этой строки в файле ничего не должно быть. */ ?>

2) Файл меню Скрытного Блога.

Является суперпозицией файлов меню Блоговой Наны и Скрытной.
Может показаться происками Ктулху, но всё не так уж и страшно:

<?php /* Выше этой строки в файле ничего не должно быть */

   
global $_blog;

   if (isset(
$_s['loc']['fold'])) {

    
# Меню Администратора Скрытной Наны:

      
if (function_exists('h_is_admin') and true===h_is_admin()) get_menu_html_code(
         
$_s['des'],
         array(
            
'Скрытная Нана:' => array(
               
$_s['loc']['fold'].'control_admin'.        $_s['ext'] => 'Админка Закрытой Зоны',
            ),
         )
      );

    
# Стандартное меню Администратора Блоговой Наны:

      
if ($_blog['admin']) 
         
get_menu_html_code(
            
$_s['des'],
            array(
               
'Админу Блога:' => array(
                  
$_s['loc']['this'].'_settings'.         $_s['ext'] => 'Настройки блога',
                  
$_s['loc']['this'].'_edit_post'.        $_s['ext'] => 'Создать новый пост',
                  
$_s['loc']['this'].'_comment_inspector'.$_s['ext'] => 'Новые комментарии',
               ),
               
'Навигация:' => array(
                  
$_s['loc']['this'].                     $_s['ext'] => 'Морда Скрытного Блога',
                  
$_s['loc']['fold'].'control'.           $_s['ext'] => 'Войти/Выйти как Юзер',
               ),
            )
         ).
         
get_menu_html_code(
            
$_s['des'],
            (
$_blog['menu'] ? $_blog['menu']: array())
         );

    
# Меню Блоговой Наны авторизованного в Скрытной Нане пользователя:

      
elseif (function_exists('h_access') and true===h_access()) 
         
get_menu_html_code(
            
$_s['des'],
            array(
               
'Навигация:' => array(
                  
$_s['loc']['this'].                     $_s['ext'] => 'Морда Скрытного Блога',
                  
$_s['loc']['fold'].'control'.           $_s['ext'] => 'Покинуть Скрытный Блог',
               ),
            )
         ).
         
get_menu_html_code(
            
$_s['des'],
            (
$_blog['menu'] ? $_blog['menu']: array())
         );

    
# Меню HE авторизованного в Скрытной Нане пользователя:

      
else 
         
get_menu_html_code(
            
$_s['des'],
            array(
               
'Скрытный Блог:' => array(
                  
$_s['loc']['fold'].'control'.           $_s['ext'] => 'Читать Скрытный Блог',
                  
$_s['loc']['fold'].'pin'.               $_s['ext'] => 'Получить тестовый доступ',
               )
            )
         );
   }

 
# Просто ещё одно меню.

   
get_menu_html_code($_s['des'],
      array(
         
'Контакт с нами:' => array(
            
$_s['loc']['base'].'admin/connect'.           $_s['ext'] => 'Связь с администратором',
         ),
      )
   );

/* Ниже этой строки в файле ничего не должно быть. */ ?>

Для примера Скрытный Блог развёрнут тут.
Внутри всего одна категория с постами про хаджи бродячих самураев.
Просто как живая демонстрация движка с реальным контентом внутри.

Обратите внимание, что в предлагаемом варианте кода этих двух файлов администратор Закрытой Зоны может быть один, а Администратор блога - совсем другой. Тем самым доступ к администрированию блога возможен минуя Закрытую Зону, без авторизации в ней, и без доступа к её административным функциям. То есть в обход.

Естественно, в этом случае защищаемые файлы не могут быть просмотрены Администратором Блоговой Наны без авторизации в Закрытой Зоне ещё и в качестве пользователя, а ссылки на эти файлы следует писать в постах HTML кодом, как это показано на второй снизу распечатке этой страницы мануала Скрытной Наны. Ибо в постах PHP не поддерживается и не понимается.

Конечно, можно написать код так, чтобы Администратор Скрытного Блога получал к нему доступ только при одновременной авторизации ещё и в качестве пользователя, и тогда путаницы с "вижу защищаемые файлы - почему-то не вижу этих файлов" не будет. Но это крайне неудобно. Срок авторизации в Закрытой Зоне пользователя всего один час, и когда Администратора блога выкинет из авторизации на этапе написания поста с потерей текста, он будет сильно негодовать.

А вот сессия Администратора Наны длится сутки - этого любому хватит.