Основные отличия VamShop от osCommerce

Для начала следует сказать, что код 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.