вторник, 17 марта 2020 г.

Использовать модель VirtueMart в своём PHP скрипте

Как ни странно, по состоянию на день написания этого поста, сколько я не гуглил, не удалось найти ответ на вопрос, как задействовать нужную модель VirtueMart в своём php скрипте (запускаемом самостоятельно, не через главный index.php Joomla). Методом проб и ошибок нашёл-таки решение! Делюсь.

Краткость - сестра таланта! Поэтому - сразу к делу! :)

Приведён пример скрипта, когда нужно получить доступ к модели Категории товаров (в частности через модель получаем список подкатегорий). По аналогии можно получать и другие модели.

<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

// SETTING
$root_path = '/home/.../public_html'; // абсолютный путь к корню Joomla
// ... другие настройки
$sale_cat_id = 652; // id категории, для которой будем искать подкатегории

if (!defined('DS')) define('DS', DIRECTORY_SEPARATOR);

// Подключаем фреймворк Joomla
define('_JEXEC', 1);
define('JPATH_BASE', $root_path);
require_once JPATH_BASE.DS.'includes'.DS.'defines.php';
require_once JPATH_BASE.DS.'includes'.DS.'framework.php';

$app = JFactory::getApplication('site');

if (!class_exists('VmConfig')) require JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php';
if (!class_exists('VirtueMartModelCategory')) require_once JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'models'.DS.'category.php';

// VmConfig::loadConfig();
$modelCategory = new VirtueMartModelCategory();

// Какие подкатегории есть в Распродаже
$childCatList = $modelCategory->getChildCategoryList(1, $sale_cat_id);

echo '<pre>';
print_r($childCatList);
echo '</pre>';
Тестировано на Joomla 3.9.14 и VM 3.4.2. PHP 7.2.

Не исключаю, что этот вариант ещё можно улучшать. Поэтому если будут мысли - welcome в комментарии!

Комментариев нет:

Отправить комментарий