2015-02-26 2 views
1

Я работаю с Joomla и Mijoshop в настоящее время, но они не соответствуют моим потребностям, так как мне также необходимо интегрировать их с jCalPro. Идея состоит в том, что пользователи могут создавать события на jCalPro, и участники могут зарегистрироваться для них.Mijoshop "Добавить в корзину" с настраиваемыми опциями

Проблема заключается в том, как интегрировать jCalPro в MijoShop, чтобы участники могли оплачивать событие и правильно ли отслеживать его в таблицах заказов при покупке. У нас есть продукты в Mijoshop для типов событий с ценами и деталями. Эти продукты примерно соответствуют нашим событиям jCalPro. Мне нужно будет поместить товар в корзину покупок Mijoshop, который добавит продукт (событие), но также заполнит параметр, который содержит идентификатор события jCalPro, чтобы я мог его отслеживать. Как только у меня есть это, я могу написать пользовательские страницы, чтобы вытащить отчетные данные и тому подобное. Я использую пользовательский PHP, который я написал, и просто добавляю их в приложение Joomla.

Я знаю MijoShop имеет функцию «addToShoppingCart», как я могу видеть его в файле:

components/com_mijoshop/assets/js/product.js 

Вопрос заключается в том, что я не знаю, как загрузить класс MijoShop на страницу, так что я могу использовать функция. Загружается ли он по умолчанию, когда я включаю страницу в приложение Joomla. Я использую следующий код, который отлично работает для большинства функций Joomla:

// Joomla session enable 
define('_JEXEC', 1); 
// define('JPATH_BASE', realpath(dirname(__FILE__))); 
define('JPATH_BASE', '/my/path/'); 
require_once (JPATH_BASE.'/includes/defines.php'); 
require_once (JPATH_BASE.'/includes/framework.php'); 
$mainframe = JFactory::getApplication('site'); 
$mainframe->initialise(); 
$user  = JFactory::getUser(); 
$config  =& JFactory::getConfig(); 
$session =& JFactory::getSession(); 

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

Любая помощь будет оценена, поскольку я нашел небольшую документацию о MijoShop и даже меньше о том, как ее интегрировать с подобными jCalPro.

+0

, если я знал, как изменить Баунти 1000 я бы ... :) ... нужно это решить как можно скорее – Silvertiger

ответ

1

Пока я нашел решение, которое приравнивает примерно следующим:

try { 
    // Now we add the product to the user's shopping cart 
    // First we'll get the product ID of the event in question 
    // My JCalPro has a custom field called "Event type" that I have manually populated with the select 
    // Mijoshop product ID's and thier associated "Model" into. The easiest way I could see to make them line up. 
    // the event ID used here was provided to my script prior to this query 
    $queryText = "SELECT * FROM jcalpro_events WHERE id = '".$eventID."'"; 
    $db->setQuery($queryText); 
    $eventInfo = $db->loadAssoc(); 
    $eventData = json_decode($eventInfo['params']); 
    $product_id = $eventData->Event; 
    // Get the product info, including the currently defined option 
    // for my purposes the product only has one option in mijoshop_product_option called "eventid" 
    // which is a blank text field that is not required. 
    $queryText = " 
     SELECT p.*, po.product_option_id 
     FROM mijoshop_product p 
     LEFT JOIN mijoshop_product_option po ON po.product_id = p.product_id 
     WHERE p.product_id = '".$product_id."'"; 
    $db->setQuery($queryText); 
    $productInfo = $db->loadAssoc(); 
    // $userInfo is a previous query where i grabbed the user's details 
    // including Joomla User ID, Mijoshop User ID, email, etc 
    $mUID = $userInfo['mUID']; // get mijoshop user ID for use 
    $jUID = $userInfo['jUID']; // get Joomla user ID for use 
    // First we have to log out the user in question so thier shopping cart will remain once we update it. 
    // If we don't do this, the shopping cart will be overwritten any time they reload thier page. 
    if ($mainframe->logout($jUID)) { 
     // Replace the user's shopping cart to have the event's product in MijoShop 
     $quantity = 1;              // Default value for this project 
     $option = array($productInfo['product_option_id'] => $eventID); // Define array with option ID and value 
     $serOption = serialize($option);         // Serialize the options 
     $product_key = (int)$product_id . ':' . base64_encode($serOption); // Generate the Product info for the Cart 
     $products = array($product_key => $quantity);      // Put the products into an array, product type => quantity 
     $serProducts = serialize($products);        // Serialize that array for the cart 
     // Now we can insert the product into the shopping cart 
     $queryText = "UPDATE mijoshop_customer SET cart = '".$serProducts."' WHERE customer_id = '".$mUID."'"; 
     $db->setQuery($queryText); 
     $db->execute(); 
     if ($debug) {echo "Step 8 - Placed the product in the ueser's Mijoshop cart.<br>\n";} 
    } else { 
     echo '<script type="text/javascript">alert("Unable to update the shopping cart for '.$name.'. You may need admin assitance.<br>\n");</script>'; 
    } 
} 
catch (Exception $e){ 
    echo $e->getMessage(); 
} 
Смежные вопросы