Внимание! Форум временно закрыт. Все вопросы вы можете задать на странице MaxSite CMS в Github

И снова про типы данных/страниц

Аватар пользователя
Sadovnik
Модератор
Сообщений: 793
Зарегистрирован: 26 июл 2009, 20:59

И снова про типы данных/страниц

Сообщение Sadovnik » 21 дек 2010, 23:28

Значит у нас есть page.php где выводим страницы.
Страницы по умолчанию blog и static - этого, в основном, достаточно.
Иногда бывает необходимо добавить пользовательский тип.
Так вот, вывод пользовательского типа часто требуется осуществить иначе чем blog и static.
Было бы неплохо после получения страниц в файле page.php выполнить проверку и если страница не blog или static (например picture), то выполнить передачу дальнейшего вывода файлу
page_picture, если такой существует.
Тогда все добавляемые сущности (картинка, товар и т д) можно будет выводить по ссылке, например page/tovar_132, и комментировать в единой системе комментариев.

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: И снова про типы данных/страниц

Сообщение MAX » 22 дек 2010, 12:39

Идея достаточно интересная, но не до конца продуманная.

У нас получается, что узнать тип записи мы можем только после того, как она получена в type/page.php (mso_get_pages). Вот тут-то и возникает проблема: по сути придется полностью дублировать код в page_тип_записи, включая и подключаемые type_foreach-файлы, что довольно слильно вносит путаницу.

Думаю, что такие задачи на данном этапе проще всего сделать с помощью type_foreach-файла page.php, вот примерно так:

Код: Выбрать все

extract($page);
if (file_exsists('page-type-' . $page_type_name . '.php')) require('page-type-' . $page_type_name . '.php');
else require('page-type-default.php');


- где page-type-default.php - файл вывода страницы по дефолту.

Аватар пользователя
Sadovnik
Модератор
Сообщений: 793
Зарегистрирован: 26 июл 2009, 20:59

Re: И снова про типы данных/страниц

Сообщение Sadovnik » 22 дек 2010, 23:23

Вопрос в том как создать свой вывод для альтеративного типа страницы не трогая файл шаблона, то-есть не редактируя type_foreach-файлы шаблона.
Тогда остается вносить изменения в default\type\page
Например так.

Код: Выбрать все

if ($pages) // есть страницы
{    
   foreach ($pages as $page) : // выводим в цикле
   
    // вставим такое
    // если тип страницы пользовательский ищем соответствующий ему файл в дефолтном и в установленном шаблонах
    if (($page[$page_type_name] != ('blog' or 'static'))
      if (file_exsists('template/page-type-' . $page[$page_type_name] . '.php'))
      {
        require('template/page-type-' . $page[$page_type_name] . '.php');
        continue;
      }   
      else  if (file_exsists('default/page-type-' . $page[$page_type_name] . '.php'))
      {
        require('default/page-type-' . $page[$page_type_name] . '.php');
        continue;
      } 
     
    // если не нашли такой то дальше как обычно   
    else if ($f = mso_page_foreach('page'))
      {
         require($f); // подключаем кастомный вывод
         
         // здесь комментарии
         // page-comments.php может быть в type своего шаблона
         $fn1 = getinfo('template_dir') . 'type/page-comments.php';        // путь в шаблоне
         $fn2 = getinfo('templates_dir') . 'default/type/page-comments.php'; // путь в default
         if ( file_exists($fn1) ) require($fn1); // если есть, подключаем шаблонный
         elseif (file_exists($fn2)) require($fn2); // нет, значит дефолтный
         
         continue; // следующая итерация
      }

      
      extract($page);

Или что-то такого рода.
Тогда разработчик плагина для осуществления вывода своих типов страниц предложит переместить файл page_mytype.php из архива плагина в default/type.
А разработчик шаблона сможет переопределить вывод таких типов страниц в плагине.
В идеале, чтобы вообще пользователь никак не напрягался с перемещениями.
Тогда можно чтобы требуемый плагину тип носил имя плагина, тогда система брала файл page.php из каталога плагина с именем, соответсвующим типу страницы.

И то, если разработчик шаблона не создал свой \type\page.

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: И снова про типы данных/страниц

Сообщение MAX » 23 дек 2010, 02:19

С type_foreach-файлом всё-таки проще получается.

Аватар пользователя
Sadovnik
Модератор
Сообщений: 793
Зарегистрирован: 26 июл 2009, 20:59

Re: И снова про типы данных/страниц

Сообщение Sadovnik » 25 дек 2010, 21:26

Что если так.
В папке плагина myplugin есть файл myplugin/page_foreach.
В шаблонный page_foreach.php вносим следующее

Код: Выбрать все

extract($page);
if ( ($page_type_name != 'blog' ) and ($page_type_name != 'static' ) )
{
   $file_name = $plugins_dir . 'page_foreach.php';
   if (file_exsists($file_name)) require($file_name);
   continue;
}


Таким образом плагин может перехватывать вывод страницы своего типа


Вернуться в «Старые неактуальные темы»

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron