ПредишенСледващото

Формулиране на проблема:
Трябва да добавим скрипт в количката интуитивен и накъсана и число на стоки, в зависимост от това как се определя цената: Unit (числа), или на квадратен метър (Float).

Touch решение на този проблем (Joomla 2.5 + Virtuemart 2) може да бъде в този сайт.

За OpenCart (OcStore) разтвор тук.

Тези, които искат да се получи готов разтвор, в кутия с лък, трябва да се напише писмо до нас.

Във всеки случай, винаги трябва да се помни, че съдържанието на файловете Virtuemart (не всички, разбира се), са различни версия на версия. Дори в рамките 2.h.h версия има нови функции и класове, така че губи всякакъв смисъл да се опише подробно кой файл и коя линия да промените нещо в него. Както се казва, "аутопсията ще покаже."

Virtuemart фракционна количество стоки
Снимка 1.
Можете да поръчате само цялото количество (плочки). Но в кошницата отива дробно число на квадратни метра, ако цената е за квадратен метър
Virtuemart фракционна количество стоки
Снимка-2.
В кошницата плочки и парчета, и в квадратни метри. Моля, имайте предвид, че премахнахме възможността за промяна номер на продукта на страница "Кошница". За да промените броя трябва да следвате връзката на картата елемент.

Тук е нашият план за действие (опростен)

параграф 2 Проблемът е решен в досиетата: site.com/components/com_virtuemart/views/productdetails/tmpl/default.php и default_addtocart.php

За удобство, ние сме се комбинира кодовете на тези два файла в един. Това е останало от дизайна ехо $ това-> loadTemplate ( "addtocart ');

  • Добавяне в количката и актуализират броя на дробни продукти.
    Позоваване необходими четири функции във файла:


    1) публична функция за добавяне ($ virtuemart_product_ids = нула, $ ERRORMSG = '')

    в съответствие: $ quantityPost = (междинно съединение) $ публикация [ "количество"] [$ p_key];
    промяна на: $ quantityPost = (флоат) $ публикация [ "количество"] [$ p_key];

    след ред: $ продукт -> product_sku = $ tmpProduct -> product_sku;
    Добавете реда $ продукт -> product_mpn = $ tmpProduct -> product_mpn;

    в съответствие: $ продуктов> количество = (междинно съединение) $ quantityPost;
    промяна на: $ продуктов> количество = (флоат) $ quantityPost;


    2) публичен функция updateProductCart ($ cart_virtuemart_product_id = 0, $ количество = нула)

    в линията: ако ($ количество === нула) $ количество = vRequest :: getInt ( "количество");
    промени на: ако ($ количество === нула) $ количество = vRequest :: getFloat ( "количество");

    3) лично функционални checkForQuantities ($ продукт, $ Количество = 0, $ ERRORMSG = '')

    в линията: ако ($ количество <1) меняем на: if ($quantity <0.01)

    4) функция prepareAjaxData ($ checkAutomaticSelected = фалшива)

    намерите: $ това-> data-> продукти [$ Ь] [ 'product_sku'] = $ продуктов> product_sku;
    добавете долу: $ това-> data-> продукти [$ Ь] [ 'product_mpn'] = $ продуктов> product_mpn;

  • Сключването на частична брой продукти на страницата "Кошница".
    Редактирайте файла: site.com/components/com_virtuemart/views/cart/tmpl/default_pricelist.php

    След функции за редактиране функция prepareAjaxData () обект в променливата $ каруцата получава product_mpn.
    И тя стане достъпна default_pricelist.php файл:

    foreach ($ това-> cart-> продукти като $ PKEY => $ нос).
    ехо $ prow-> product_mpn;
    .
    >

  • Ние извлече единици на стоки в администратор на страницата за поръчка.
    За да направите това:
    Добави в областта на база данни таблица #__virtuemart_order_items, например, order_item_mpn VARCHAR (255)
    и редактиране на трите файлове:
    1) site.com/administrator/components/com_virtuemart/tables/order_items.php
    следните линии:
    Var $ order_item_sku = NULL;
    добави:
    Var $ order_item_mpn = NULL;

    2) site.com/administrator/components/com_virtuemart/models/orders.php
    функция (приблизително 1145 ред) лично функционални _createOrderLines ($ _ номер, $ _cart)
    следните линии:
    $ _orderItems-> order_item_sku = $ _prod-> product_sku;
    добави:
    $ _orderItems-> order_item_mpn = $ _prod-> product_mpn;

    функция (за линия 173) публична функция getOrder ($ virtuemart_order_id) в заявката
    (Приблизително 201 линия) $ р = 'SELECT virtuemart_order_item_id, product_quantity.
    добави
    $ = Q "SELECT virtuemart_order_item_id, product_quantity, order_item_mpn,.

    3) site.com/administrator/components/com_virtuemart/views/orders/tmpl/order.php
    Добави глава колона в таблица (приблизително 430 линия)
    Unit.
    и списъкът на стоки О цикъл, за да добавите колона (около 500 линии):

    След добавяне на колона не е излишно да се определи обединението на клетки в по-ниските редове на таблицата.
    Ние имаме по-долу е само един ред в таблицата с общи суми.
    Ето защо, ние се коригира код за , тя е около 566 ред.

  • Остава да добавим product_mpn в тялото на имейла на купувача по сметката. Вие познахте, трябва да редактирате файла с шаблона.
    а именно,
    site.com/components/com_virtuemart/views/invoice/tmpl/invoice_items.php


    В точното място на масата въведете заглавие на колона (около 40 storoka):
    Unit.

    и самата колона (в foreach линия):


  • Подкрепете проекта - споделете линка, благодаря!