На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

Где взять пример кода для type_foreach файла?

Вопросы-ответы / 28 июля 2014

Здравствуйте!

Подскажите пожалуйста, а где сейчас взять примеры type_foreach файлов для редактирования? Для начала я буду менять вывод отдельного материала, т.к. добавил свои мета поля. Уже сообразил, что это page.php ...

На оф.сайте на эту тему куча статей, но найти для себя подходящий пример не могу, readme.txt отправляет в директорию shared/blanks , однако там только один файл:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
# end file

Уточню, что хотел бы найти ссылку на полный список методов, которые можно использовать в type_foreach с описаниями

Большое спасибо!!!

pravrf 11 5497
Комментариев: 11
  1. Тут два вопроса. Отвечу по порядку:

    1. Действительно, в какой-то момент Максим удалил все шаблоны type_foreach файлов, т.к. они начали сильно отставать от возможностей самого шаблона и вызывали необходимость делать двойную работу. Поэтому сейчас есть только один способ: найти в шаблоне тот фрагмент кода, в котором проверяется существование вашего type_foreach файла, как правило там идёт ветвление - если файл существует, то выполняется он, а если не существует, то выполняется какой-то стандартный для Default-шаблона код. Вам нужно создать соответствующий type_foreach файл и скопировать в него тот самый стандартный код «альтернативы». Например, если рассмотреть фрагмент кода, который отвечает за вывод заголовка страницы:
    2. if ($f = mso_page_foreach('info-top')) 
      {
       require($f);
      }
      else
      {
       $p->html(NR . '<header>');
        $p->line('[title]');
        
        $p->div_start('info info-top');
         $p->line('[date][edit][cat][tag][view_count]');
        $p->div_end('info info-top');
       $p->html('</header>');
      }

      Вам нужно скопировать в файл \type_foreach\info-top.php код:

      <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
      $p->html(NR . '<header>');
       $p->line('[title]');
        
       $p->div_start('info info-top');
        $p->line('[date][edit][cat][tag][view_count]');
       $p->div_end('info info-top');
      $p->html('</header>');
      # end file

      Этот код и будет основой для вашего творчества. теперь что касается второго вопроса.

    3. Полного списка доступных в type_foreach методов на данный момент не существует. В maxSite CMS действует идеология «самодокументирующегося кода». Т.е. если вам что-то нужно найти - надо искать в коде движка. Понимаю, что на первых порах это пугает. Но не всё так страшно. На первое время можно ограничится просмотром всего нескольких файлов с доступными глобальными функциями-методами. Я имею виду файлы в корне папки \application\maxsite\common\:
      • common.php
      • page.php
      • meta.php
      • category.php
      • comments.php
      • functions-edit.php
      • inifile.php
      • mbstring.php
      • uploads.php

      В своей практике я чаще всего заглядываю именно в них. Функции собраны в файлы по смыслу (где и для чего используются), так что по идее логика должна быть понятна с первого раза. Есть только один нюанс - перед использованием функций некоторых этих файлов нужно их подключить (или убедиться, что подключены ранее в шаблоне) кодом типа:

      require_once( getinfo('common_dir') . 'page.php' ); // основные функции страниц

    Надеюсь, что вы получили исчерпывающий ответ.

  2. Вот еще одна статейка которую стоит написать... cool smirk

    завтра займусь...

  3. Для автора, может пригодится. Когда я создавал шаблон понадобилось для отдельных страниц выводить разные info-top. для разных типов страниц. Это делать довольно просто по средствам php.

    echo '<div class="info info-top">';
     // только для home
     if (is_type('home'))
     {
      mso_page_title($page_slug, $page_title, '<div class="title_home"><h2>', mso_page_edit_link($page_id,  '<img src="' . getinfo('template_url') . 'images/edit.png" alt="" title="Редактировать" class="right">', '', '', false) . '</h2></div>', !is_type('page'));
      mso_page_cat_link($page_categories, ' » ', '<span title="' . tf('Рубрики') . '"><img src="' . getinfo('template_url') . 'images/category.png" class="cat" alt=""> ', '</span>');
      mso_page_date($page_date_publish, array('format' => tf('j F Y г.')), ' | <span title="' . tf('Дата публикации') . '"> ', '</span> ');
     }
     elseif(is_type('category')) // только для category
     {
      mso_page_title($page_slug, $page_title, '<div class="page_title"><h2>', mso_page_edit_link($page_id,  '<img src="' . getinfo('template_url') . 'images/edit.png" alt="" title="Редактировать" class="right">', '', '', false) . '</h2></div>', !is_type('page'));
      mso_page_cat_link($page_categories, ' » ', '<span title="' . tf('Рубрики') . '"><img src="' . getinfo('template_url') . 'images/category.png" class="cat" alt=""> ', '</span>');
      mso_page_date($page_date_publish, array('format' => tf('j F Y г.')), ' | <span title="' . tf('Дата публикации') . '"> ', '</span> ');
     }
     else // все остальные страницы
     {
      mso_page_title($page_slug, $page_title, '<div class="page_title"><h1>', mso_page_edit_link($page_id,  '<img src="' . getinfo('template_url') . 'images/edit.png" alt="" title="Редактировать" class="right">', '', '', false) . '</h1></div>', !is_type('page'));
      if( $page_type_name == 'blog' )
      {
       mso_page_cat_link($page_categories, ' » ', '<span title="' . tf('Рубрики') . '"><img src="' . getinfo('template_url') . 'images/category.png" class="cat" alt=""> ', '</span> | ');
      }
      
      mso_page_date($page_date_publish, array('format' => tf('j F Y г.')), '<span title="' . tf('Дата публикации') . '"> ', '</span> ');
     }
    echo '</div>';
  4. Сергей | 2014-09-17 в 10:19:33

    День добрый. А в каком направлении копать если я хочу сделать уникальный вывод записей в рубриках. На главной это сделать не проблема - там в папке type/home/units куча заготовок.

    А вот как сделать свой вывод записей двумя/тремя колонками в рубриках?

  5. Сергей, а что мешает творчески переработать код вывода колонок на главной для использования при выводе на страницах рубрик? По сути - всё то же самое ведь нужно. Просто вызов будет не юнита, а просто скопировать нужный алгоритм в свой файл /type/category.php

  6. Сергей | 2014-09-17 в 14:16:22

    Илья, в PHP я ботаник. Я так и попробовал сначала. Но что ни делал все время выбивает ошибку. Пока бодаюсь именно на этом поприще. Чувствую задницей что все довольно просто smile Но уже второй день никак не могу добиться желаемого.

    Спасибо за совет. Теперь знаю, что копаю в нужном направлении.

  7. Сергей, действительно :

    1. Копируете файл \application\maxsite\shared\type\category\category.php в свой шаблон \application\maxsite\templates\ПапкаВашегоШаблона\type\category\category.php

    В итоге вывод рубрики будет идти через файл category в вашем шаблоне.

    2. После модификации может получиться что-то подобное http://demomaxsite.wpcodex.ru/category/astro

    Код можно подсмотреть в юнитах для главной.

    Удачи! grin

  8. Сергей | 2014-09-17 в 14:40:38

    searchingman,

    1. Копируете файл \application\maxsite\shared\type\category\category.php в свой шаблон \application\maxsite\templates\ПапкаВашегоШаблона\type\category\category.php
    В итоге вывод рубрики будет идти через файл category в вашем шаблоне.

    Ага smile Это я и так знаю, и даже сумел вывести там надпись в H1 - Привет Лошара smile

    Туман основной в том, что бы сделать вывод в три колонки. Что бы записи были только картинками на которых названия. В общем, простите за беспокойство - сегодня скорее всего добью эту заразу cool smile

  9. Сергей | 2014-09-17 в 14:51:25
    Код можно подсмотреть в юнитах для главной.

    Вот вот вот в этом и основная проблема smile Я с этим кодом и вожусь - куда и как его вставить и что подменить.

    Что ни делаю вечно ошибка.

  10. Сергей, к сожалению, за вас вашу работу пока сделать мы не в силах wink Возможно позже кто-нибудь опубликует свой вариант решения вашей задачи. А пока можно привести только общее направление решения...

    Но могу обрадовать - если есть сообщения об ошибках, то это очень даже хорошо. Разбираясь со смыслом сообщений можно понять что и где работает не так. Гораздо хуже ситуация, когда ошибок не показывается, но программа не работает как нужно. В таких случаях можно поседеть пока найдёшь причину smile Так что просто начинайте изучать пхп и... Да прибудет с вами пхп-сила! LOL

    ЗЫ: Зарегайтесь, пожалуйста. Апрувить ваши анонимные каменты нужно время. Давайте будем уважать наше время!

  11. Сергей | 2014-09-17 в 19:11:18
    Сергей, к сожалению, за вас вашу работу пока сделать мы не в силах

    Я и не просил. Просто хотел получить совет от профи.

    Больше не буду вас беспокоить, извините.