1) Начнем с того, что у нас вообще лежит в основе. Для этого перейдем по пути:
..корень сайта/styles/название_стиля/template/portal/..
Мы там видем файлы:
_block_config.html - этот файл отвечает за оформление наших блоков. Пожалуй в этом факе рассматривать, что с ним делать мы не будем. А пока просто не трогаем =)
index.html- этот файл(по стандарту в данном случае) шлет всех в лес, кто пытается перейти по адресу с нашим стилем. От грабежа стиля не спасет, но нубов отсеет точно.
portal_body.html - вот тут то мы и подошли к интересующим нас файлам. Этот файл отвечает за подгрузку всех блоков на портале. Подгружает шапку, левый блок портала, центр, правый блок портала и тд и тп.
portal_center.html - этот файл отвечает за подгрузку центральных блоков.
portal_left.html- этот файл отвечает за подгрузку блоков с лева.
portal_right.html- этот файл отвечает за подгрузку блоков соответственно с права.
И папку:
block - папка в которой лежат наши блоки.
2) Теперь перейдем непосредственно к самому созданию нового блока. В папке block лежат два примера по содержанию блоков, а конкретно файлы custom_small.html и custom_center.html. Взгляним на один из них, для примера возьмем custom_small.html, этот файл, как вы могли догадаться пример для блока расположенного по краям портала(левые блоки или правые). Код блока я возьму под спойлер, чтоб не занимал много места и можно было выделить нужные нам места.
<!--version $Id: custom_small.html 544 2009-09-10 12:35:25Z christian_n $ //-->
{$LR_BLOCK_H_L}<!-- IF $S_BLOCK_ICON --><img src="{T_THEME_PATH}/images/portal/portal_custom.png" width="16" height="16" alt="" /> <!-- ENDIF -->{PORTAL_CUSTOM_SMALL_HEADLINE}{$LR_BLOCK_H_R}
<table class="tablebg" cellspacing="1" width="100%">
<tr class="row1">
<td style="padding:5px 5px 5px 5px;">
<div class="postbody">
{PORTAL_CUSTOM_SMALL_CODE}
</div>
</td>
</tr>
</table>
{$LR_BLOCK_F_L}{$LR_BLOCK_F_R}
{$LR_BLOCK_H_L}<!-- IF $S_BLOCK_ICON --><img src="{T_THEME_PATH}/images/portal/portal_custom.png" width="16" height="16" alt="" /> <!-- ENDIF -->{PORTAL_CUSTOM_SMALL_HEADLINE}{$LR_BLOCK_H_R}
<table class="tablebg" cellspacing="1" width="100%">
<tr class="row1">
<td style="padding:5px 5px 5px 5px;">
<div class="postbody">
{PORTAL_CUSTOM_SMALL_CODE}
</div>
</td>
</tr>
</table>
{$LR_BLOCK_F_L}{$LR_BLOCK_F_R}
Вот такенным цветом у нас обозначен код подгрузки офрмления блока.
Вот такенным цветом у нас обозначен код который при условии, что в стиле разрешенны маленькие картиночки с названием блока, вставляет их. Путь(в данном примере) к картиночке {T_THEME_PATH}/images/portal/portal_custom.png. Думаю как залить свою картинку и сами знаете
Вот такенным цветом у нас обозначено название блока =) Пишем свое название обычным текстом. Кстати замечу, что многие добавляют текст в языковые пакеты(не буду объяснять как), это канечно очень хорошо если используем на сайте несколько языков. Но если мы юзаем только великий русский(ну или у кого там какой великий), то есть смысл писать текст прямо в блоке. Во первых после очередной обновы не надо париться с языковыми пакетами и заного добавлять свой текст. А во вторых я не придумал, будем считать, то что мне так нравится тоже аргумент =)
Вот такенным цветом у нас обозначен код или текст самого содержимого блока. Сюда можно вставлять любой текст, любой хтмл код и даже пхп код(<!-- PHP -->код<!-- ENDPHP -->), если он разрешен в админке.
Думаю самое важное отмечено. Для центральных блоков все аналогично. Хочу заметить что при использовании кириллицы в к блоке, надо сохранить блок в кодировке UTF-8 БЕЗ BOM.
3) Начнем разборку кода файлов подгружающих наши блоки, а конкретно portal_center.html, portal_left.htm и portal_right.html. (Файл portal_body.html рассматривать не будет, тк и не нужно впринцепе, да и код схож, кому нужно разберутся по подобию). Возьмем для примера файл portal_left.html, глянем его код:
<!-- IF S_DISPLAY_MAINMENU -->
<!-- INCLUDE portal/block/main_menu.html -->
<!-- ENDIF -->
<!-- IF S_STYLE_OPTIONS and S_DISPLAY_CHANGE_STYLE -->
<!-- INCLUDE portal/block/change_style.html -->
<!-- ENDIF -->
<!-- INCLUDE portal/block/additional_blocks_left.html -->
<!-- IF S_DISPLAY_BIRTHDAY_LIST -->
<!-- INCLUDE portal/block/birthday_list.html -->
<!-- ENDIF -->
....и далее куча подобного кода....
<!-- INCLUDE portal/block/main_menu.html -->
<!-- ENDIF -->
<!-- IF S_STYLE_OPTIONS and S_DISPLAY_CHANGE_STYLE -->
<!-- INCLUDE portal/block/change_style.html -->
<!-- ENDIF -->
<!-- INCLUDE portal/block/additional_blocks_left.html -->
<!-- IF S_DISPLAY_BIRTHDAY_LIST -->
<!-- INCLUDE portal/block/birthday_list.html -->
<!-- ENDIF -->
....и далее куча подобного кода....
Вот такенным цветом у нас обозначено условие, то бишь если в админке у нас вклечен какой-то блок он будет отображаться. Рассматривать как добавлять блоки в админку не будем. Не имеет смысла, долго и после обнов заного все делать.
Вот такенным цветом у нас обозначено само условие, к примеру выделен текст S_DISPLAY_MAINMENU если его значение стоит в админке вкл, то будет блок отображаться. То же рассматривать не будем.
Вот такенным цветом у нас обозначено сама подгрузка блока.
Вот такенным цветом у нас обозначено какой блок будем подгружать. До него естесно написан путь откуда данный блок брать,написан он относительно папки template в нашем стиле. Хочу так же заметить, что названия блоков все даны логично и запутаться в них сложно. То есть к примеру выделенное название main_menu.html есть ни что иное как главное меню.
Ну наверно тут все. Будут вопросы задавайте =)
4) Приступим к созданию самого блока. Сделаем блок с левой стороны. Для этого создадим новый хтмл-файл (к примеру test.html) в папке ..styles/название стиля/template/portal/block/ , засунем в него содержание файла примера custom_small.html и отредактируем его, как нам надо. Я к примеру сделал это так:
<!--version $Id: custom_small.html 544 2009-09-10 12:35:25Z christian_n $ //-->
{$LR_BLOCK_H_L}<!-- IF $S_BLOCK_ICON --><img src="{T_THEME_PATH}/images/portal/portal_custom.png" width="16" height="16" alt="" /> <!-- ENDIF -->Тестовый блок{$LR_BLOCK_H_R}
<table class="tablebg" cellspacing="1" width="100%">
<tr class="row1">
<td style="padding:5px 5px 5px 5px;">
<div class="postbody">
Текст тестового блока.<br /> А <b>serrrios</b> молодец)<br />А еще он любит много спасибок =)
</div>
</td>
</tr>
</table>
{$LR_BLOCK_F_L}{$LR_BLOCK_F_R}
{$LR_BLOCK_H_L}<!-- IF $S_BLOCK_ICON --><img src="{T_THEME_PATH}/images/portal/portal_custom.png" width="16" height="16" alt="" /> <!-- ENDIF -->Тестовый блок{$LR_BLOCK_H_R}
<table class="tablebg" cellspacing="1" width="100%">
<tr class="row1">
<td style="padding:5px 5px 5px 5px;">
<div class="postbody">
Текст тестового блока.<br /> А <b>serrrios</b> молодец)<br />А еще он любит много спасибок =)
</div>
</td>
</tr>
</table>
{$LR_BLOCK_F_L}{$LR_BLOCK_F_R}
Теперь нам надо его подгрузить в портале. Тк решили что этот блок будет у нас слева, то подгружать соответственно его будем в файле portal_left.htm. Для этого нам надо вставить в нужное место строчку:
<!-- INCLUDE portal/block/test.html -->
Я захотел чтоб данный блок был у меня сразу под главным меню. По этому мой код выглядит так:
<!-- IF S_DISPLAY_MAINMENU -->
<!-- INCLUDE portal/block/main_menu.html -->
<!-- ENDIF -->
<!-- INCLUDE portal/block/test.html -->
<!-- IF S_STYLE_OPTIONS and S_DISPLAY_CHANGE_STYLE -->
<!-- INCLUDE portal/block/change_style.html -->
<!-- ENDIF -->
<!-- INCLUDE portal/block/additional_blocks_left.html -->
<!-- IF S_DISPLAY_BIRTHDAY_LIST -->
<!-- INCLUDE portal/block/birthday_list.html -->
<!-- ENDIF -->
....и далее куча подобного кода....
<!-- INCLUDE portal/block/main_menu.html -->
<!-- ENDIF -->
<!-- INCLUDE portal/block/test.html -->
<!-- IF S_STYLE_OPTIONS and S_DISPLAY_CHANGE_STYLE -->
<!-- INCLUDE portal/block/change_style.html -->
<!-- ENDIF -->
<!-- INCLUDE portal/block/additional_blocks_left.html -->
<!-- IF S_DISPLAY_BIRTHDAY_LIST -->
<!-- INCLUDE portal/block/birthday_list.html -->
<!-- ENDIF -->
....и далее куча подобного кода....