Для начала следует сказать, что код osCommerce и VamShop идентичен процентов на 80%, т.к. VamShop основан именно на osCommerce. Соответственно, названия практически всех функций, классов, расположение и название файлов и папок, всё практически идентично osCommerce.
Теперь об отличиях:
1. Все переменные $HTTP_POST_VARS, $HTTP_GET_VARS в VamShop следует записывать как $_GET, $_POST и т.д.
2. В VamShop все функции начинаются с vam_, а не с tep_ Например: вместо tep_redirect используется vam_redirect.
3. Если в osCommerce функции обычно находятся в /includes/functions, то в VamShop все функции находятся в папке /inc
3. В VamShop все функции разнесены по отдельным файлам, т.е. 1 файл = 1 функция. К примеру, если функция tep_redirect в osCommerce определена в файле /includes/functions/general.php В VaM данную функцию найти очень просто, учитывая, что каждая функция выделена в отдельный файл внутри папки /inc: Каждый файл имеет вид: имя_функции.inc.php
Соответственно, функция vam_redirect находится в файле /inc/vam_redirect.inc.php.
4. В osCommerce стандартный SQL запрос выглядит следующим образом:
$product_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language . "'");
В VamShop данный SQL запрос нужно записывать следующим образом:
$product_query = vam_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . $product_id . "' and language_id = '" . $_SESSION['languages_id'] . "'");
Просто меняем tep_ на vam_, а также (int)$language на $_SESSION['languages_id'].
5. VamShop также отличается принципом построения ссылок на товары и категории. Если в osCommerce ссылка на товар строится следующим образом:
tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id'], 'NONSSL', false);
В VamShop правильно записывать данный код так:
vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($products['products_id'], $products['products_name']), 'NONSSL', false);
Просто меняем tep_ на vam_, а также в качестве параметра подставляем функцию vam_product_link. Вместо 'products_id=' . $products['products_id'] вставляем vam_product_link($products['products_id'], $products['products_name'])
Это необходимо для построения "красивых" URL в стиле VamShop, например: http://sborka-xt.loc/product_info.php?info=p1_VaM-Shop.html В URL вставляется название товара, если товар содержит кириллицу, то она автоматически переводится в транслит.
6. Точно также нужно переделывать ссылки на категории.
Ссылка на категорию в osCommerce:
tep_href_link(FILENAME_DEFAULT, 'cPath=' . $categories['categories_id'], 'NONSSL', false);
В VamShop данный код нужно записывать следующим образом:
vam_href_link(FILENAME_DEFAULT, vam_category_link($categories['categories_id'], $categories['categories_name']), 'NONSSL', false);
Точно также как и в случае с ссылками на товары: Просто меняем tep_ на vam_, а также в качестве параметра подставляем функцию vam_category_link. Вместо 'cPath=' . $categories['categories_id'] вставляем vam_category_link($categories['categories_id'], $categories['categories_name'])
Это необходимо для построения "красивых" URL в стиле VamShop, например: http://sborka-xt.loc/index.php?cat=c1_VaM-Shop.html В URL вставляется название категории, если категория содержит кириллицу, то она автоматически переводится в транслит.
7. В Админке VamShop, в отличии от osCommerce, не применяются графические кнопки, используются CSS кнопки, нужно учитывать этот момент. Например, код обычной графической кнопки в osCommerce выглядит следующим образом (в даном примере кнопка создания нового баннера):
<?php echo '<a href="' . tep_href_link(FILENAME_BANNER_MANAGER, 'action=new') . '">' . tep_image_button('button_new_banner.gif', IMAGE_NEW_BANNER) . '</a>'; ?>
В VamShop следует записывать данный код:
<?php echo '<a class="button" onClick="this.blur();" href="' . vam_href_link(FILENAME_BANNER_MANAGER, 'action=new') . '">' . BUTTON_NEW_BANNER . '</a>'; ?>
Просто добавляете css класс button, а также вместо кнопки-картинки вставляете текстовую константу BUTTON_NEW_BANNER
Константы для кнопок определяются в файле /lang/russian/admin/buttons.php
8. Кроме обычных кнопок, есть также submit кнопки в админке, здесь тоже есть отличие. Вот пример submit кнопки при добавлении баннера в админке osCommerce;
<?php echo tep_image_submit('button_insert.gif', IMAGE_INSERT); ?>
В VamShop submit кнопки следует записывать следующим образом:
<?php echo '<input type="submit" class="button" onClick="this.blur();" value="' . BUTTON_INSERT . '"/>'; ?>
Смысл тот же самый, что и с обычной кнопкой: функция tep_image_submit не используется. Соответственно, прописывается submit кнопка обычным html-кодом, добавляя css класс button и добавляя текстовую константу кнопке, в данном примере BUTTON_INSERT. Константы кнопок определяются в файле /lang/russian/admin/buttons.php
9. Если в osCommerce достаточно подлючать только application_top.php и после этого Вы имеете доступ ко всем функциям, классам магазина, то в VamShop этого не всегда может быть достаточно, в случае ошибки "Undefined function: ..." кроме подключения application_top.php:
require('includes/application_top.php');
Необходимо подключать необходимую функцию отдельно. Такие ошибки могут часто встречаться при переделке модулей из osCommerce в VamShop.
К примеру, если выводится ошибка: "Undefined function: vam_parse_input_field_data".
То нужно просто подключить данную функцию. Вспоминаем, что каждая функция в VamShop вынесена в отдельный файл внутри папки inc, то просто подключаем нужную нам функцию следующим образом:
require_once (DIR_FS_INC.'vam_parse_input_field_data.inc.php');
Также в VamShop, в отличии от osCommerce, нет класса currencies (файл /includes/classes/currencies.php). Вместо него используется класс vamPrice (файл /includes/classes/vamPrice.php).
Также нужно править код. К примеру, вот пример кода модуля оплаты из osCommerce:
global $order,$currencies;
В VamShop нужно менять данный код на:
global $order,$vamPrice;
Ещё немного примеров. В osCommerce список валют получаем примерно так:
foreach($currencies->currencies as $code => $v){ echo " <currency id=\"" . $code . "\" rate=\"" . number_format(1/$v["value"],4) . "\"/>\n"; }
В VamShop данный код следует записывать так:
foreach($vamPrice->currencies as $code => $v){ echo " <currency id=\"" . $code . "\" rate=\"" . number_format(1/$v["value"],4) . "\"/>\n"; }
Пример вывода стоимости товара в osCommerce:
$currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id']))
В VamShop данный код следует записывать так:
$vamPrice->GetPrice($product_info['products_id'], $format = true, 1, $product_info['products_tax_class_id'], $product_info['products_price'], 1);
Вот основные различия VamShop и osCommerce. Зная данные отличия, можно очень просто и быстро переделывать модули для VamShop из osCommerce, а модулей для osCommerce очень много есть готовых.
Надеюсь, что данный материал поможет Вам в освоении VamShop.