OScommerce boxes - пишем свой бокс

Краткая инструкция по созданию своего бокса в OSCommerce. Составлена по мотивам заметок, поэтому может содержать некоторые неточности. Основной принцип, однако сохраняется

Бокс в OSCommerce - информационный блоки, который можно кэшировать отдельно и выводить в нужном месте шаблона. К примеру, перечень категорий или блок “текстовые страницы”, новинки каталога или хиты продаж. Создадим свой бокс, который для определенности назовем my_new_box.

1. определяемся с шаблоном бокса.

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

<div class="box" id="my_new_box">
<h3>Заголовок бокса</h3>
{box_content}
</div>

Где вместо {box_content} будет размещаться собственно содержимое блока - на время тестирования будем выводить “болванку”. Код шаблона следует разместить в файле templates/{CURRENT_TEMPLATE}/boxes/box_my_new_box.html

2. Подключение бокса

Для подключения бокса в файле templates/{CURRENT_TEMPLATE}/source/boxes/my_new_box.php временно размещаем следующий код:

$box_my_new_box = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/templates/'.CURRENT_TEMPLATE.'/boxes/box_my_new_box.html');
$smarty->assign('box_MY_NEW_BOX',$box_my_new_box);

В файл templates/{CURRENT_TEMPLATE}/source/boxes.php добавляем строчку для подключения файла с нашим блоком:
include(DIR_WS_BOXES . 'my_new_box.php');

А в основные файлы шаблона (искать в каталоге templates/{CURRENT_TEMPLATE}) index.html, first_page.html, checkout_pages.html добавляем в нужное место код вывода нашего блока
{box_MY_NEW_BOX}

При открытии страницы, если всё верно, должен появиться наш бокс (возможно, потребуется очистить кэш).

3. Наполнение бокса нужным содержимым

На этой части подробно останавливаться не буду. Если очень кратко, то перед строкой $box_my_new_box=… следует разместить логическую часть (код PHP), которая будет формировать содержимое нашего бокса в переменной $box_my_new_box - это могут быть и запросы к базе данных, и обработка файлов и обращения к сторонним серверам (например, для размещения новостей с других сайтов)

4. Кэширование бокса в Smarty

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

Для использования встроенного кэширования Smarty изменяем файл templates/{CURRENT_TEMPLATE}/source/boxes/my_new_box.php следующим образом:

$box_smarty = new smarty;
$box_content='';
$box_smarty->assign('tpl_path','templates/'.CURRENT_TEMPLATE.'/');
//... здесь следуют действия, которые заполняют $box_content нужной информацией
$box_smarty->assign('BOX_CONTENT', $box_content);
$box_smarty->assign('language', $_SESSION['language']);
if (USE_CACHE=='false') {
$box_smarty->caching = 0;
$box_my_new_box= $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_my_new_box.html.html');
} else {
$box_smarty->caching = 1;
$box_smarty->cache_lifetime=CACHE_LIFETIME;
$box_smarty->cache_modified_check=CACHE_CHECK;
$cache_id = $_SESSION['language'].'_box_my_new_box';
$box_my_new_box= $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_my_new_box.html',$cache_id);
}
$smarty->assign('box_MY_NEW_BOX',$box_my_new_box);

Конечно, можно (и правильнее) использовать Smarty “по полной” - максимально перемещать “отображение” (вывод) в шаблон, а логику оставлять в .php файле (например, выносить, если возможно, формирование повторяющихся кусков кода (блок картинка,описание товара, например) в шаблон и использовать цикл в смарти…)

Отдельно хотелось бы отметить $cache_id - уникальный идентификатор для формирвания имени файла кэшированного блока. Соответственно, для разных $cache_id будет формироваться свой файл.. И наоборот, если файл с $cache_id уже сформирован, то содержимое бокса будет забираться из уже готового файла (в обход логики - баз данных, обращения к сторонним серверам и тд)

Итак, мы рассмотрели пример создания блока/бокса в системе для электронной коммерции OSCommerce. С изменением версий, обновлением системы расположение файлов может измениться, однако, сам принцип, скорее всего, останется актуальным.

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

Добавить комментарий