Cоздаем бокс в vam shop
19.01.2009
Наша звездочка. Авторский сайт Насти Манно о веб-дизайне и сайтостроении, просто и со вкусом.
На созданном магазине на скрипте vam shop часто возникает потребность размещения счетчиков, ссылок, контактной информации и прочего.
Есть в общем-то несколько возможных путей решения - размещение доп кода в index.php скрипта, в коде index.html шаблона, но более функционально - создание дополнительного блока в стиле основных блоков магазина. Сказано - делаем. Создадим новый бокс поэтапно.
Создаём код бокса
В скрипте магазина vam shop исходные коды боксов находятся в папке /templates/vamshop/source/boxes. Создаём файл /templates/vamshop/source/boxes/mybox.php со следующим содержимым:
<?php
$box_smarty = new smarty;
$box_content='';
$flag='';
$box_smarty->assign('tpl_path','templates/'.CURRENT_TEMPLATE.'/');
$box_content = MY_BOX_CONTENT;
if ($flag==true) define('SEARCH_ENGINE_FRIENDLY_URLS',true);
$box_smarty->assign('BOX_CONTENT', $box_content);
$box_smarty->caching = 0;
$box_smarty->assign('language', $_SESSION['language']);
$box_admin= $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_mybox.html');
$smarty->assign('box_MYBOX',$box_admin);
?>
В общем случае - простейший бокс. Обратите внимание на важные моменты назначений -
$smarty->assign('box_MYBOX',$box_admin);
- назначена вашему боксу метка box_MYBOX для подключения в шаблоне
$box_admin= $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_mybox.html');
- назначен html-шаблон создаваемого бокса,
$box_content= MY_BOX_CONTENT;
- назначена константа содержимого бокса.
Все константы и назначения появятся на следующих этапах.
Содержимое бокса.
Все тексты в vam shop выделены в языковые папки /lang В нашем случае это папка - /lang/russian
Чтобы скрипт корректно обрабатывал константу MY_BOX_CONTENT в файл /lang/russian/russian.php добавим следующее, к примеру -
define('MY_BOX_CONTENT', 'текст моего бокса');
Учитывайте, что, если вы используете мультиязычный vam shop то изменения надо внести во все языковые файлы в соответствующем языке. К примеру, в английской это будет -
define('MY_BOX_CONTENT', 'the text of my boxing');
В принципе, этот этап можно и пропустить. Текст содержимого можно ввести и в шаблон бокса. О чем ниже.
Шаблон бокса.
Мы указали, что шаблон бокса будет находиться в файле /templates/vamshop/boxes/box_mybox.html
Вот и создадим данный файл с содержимым (возьмите из файла box) дописав первую строку:
{config_load file="$language/lang_$language.conf" section="boxes"}
<table width="180" border="0" cellpadding="2" cellspacing="0">
<tr><td height="2" bgcolor="#000099"></td></tr>
<tr><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">{#heading_mybox#}</font></td></tr>
<tr><td><font size="1" face="Verdana, Arial, Helvetica, sans-serif">{$BOX_CONTENT}</font>
текст бокса
</td></tr>
<tr><td height="2" bgcolor="#000099"></td></tr>
</table>
Можете изменять данный бокс в соответствии с дизайном ваших боксов.
{config_load file="$language/lang_$language.conf" section="boxes"}
- сообщает системе, что текстовые данные для шаблона надо брать из файла /lang/russian/lang_russian.conf, секции boxes.
В шаблоне определены 2 метки:
{#heading_mybox#} - это название бокса, заголовок - из файла: /lang/russian/lang_russian.conf Чтобы она отображалась допишем в /lang/russian/lang_russian.conf , к примеру, следующее
heading_mybox = 'Мой первый бокс'
сразу после: [boxes]
Метка {$BOX_CONTENT} - а это уже именно само содержимое бокса или значение константы MY_BOX_CONTENT из файла /lang/russian/russian.php Если константа не определена, можно и нужно сразу после {$BOX_CONTENT} или в нашем случае {$BOX_CONTENT} дописать нужный текст или код в файле. Учитываем что smarty некорректно обрабатыет коды в шаблоне. Рекомендуем использование обертки кода в виде {php}коды{/php}
Подключаем бокс.
Необходимо, чтобы магазин vam shop знал о наличии нового бокса. Подключаем его в /templates/vamshop/source/boxes.php Все, вновь созданные боксы, подключаются в этом файле.
Ищем следующий код:
<?php
define('DIR_WS_BOXES',DIR_FS_CATALOG .'templates/'.CURRENT_TEMPLATE. '/source/boxes/');
Добавляем сразу после этого:
include(DIR_WS_BOXES . 'mybox.php');
Мы же создавали mybox.php Соответственно, если создавался файл с другим именем, то и вписываем имя именно созданного вами файла.
Выводим бокс.
Осталось только включить вывод бокса в вашем шаблоне vam shop Открываем файл шаблона /templates/ваш шаблон/index.html
И, к примеру, подключаем блок за новинками, т.е. дописываем после {$box_WHATSNEW} нашу метку бокса {$box_MYBOX}, получая …{$box_WHATSNEW}{$box_MYBOX}…
Всё, бокс подключён. Проверяйте.
Да и не забывайте, что все изменения нужно проводить в редакторе, корректно работающем с русскими кодировками и сигнатурами (notepad2), иначе проблем не избежать.
[про] Коми - Новости Коми События, происшествия и просто жизнь.
Извините, но коментирование запрещено.