1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

[Помощь] VM2 - Редактирование фреймового всплывающего окна купленного товара

Тема в разделе "Virtuemart", создана пользователем maxi2013, 20 май 2013.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
  1. RussianDozhdevik

    RussianDozhdevik Писатель

    Регистр.:
    16 июл 2015
    Сообщения:
    6
    Симпатии:
    0
    Вот то, что выводится: NULL

    но если прописать не var_dump($product); а var_dump($this->product);
    то выводит много всякой информации:
    Код:
    ["virtuemart_manufacturer_id"]=> array(0) { } ["mf_name"]=> string(0) "" ["mf_desc"]=> string(0) "" ["mf_url"]=> string(0) "" ["categories"]=> array(1) { [0]=> string(2) "16" } ["virtuemart_category_id"]=> string(2) "16" ["ordering"]=> string(1) "0" ["id"]=> string(3) "439" ["category_name"]=> string(29) "Плащи-дождевики" ["packaging"]=> int(0) ["box"]=> int(0) ["customfields"]=> array(0) { } ["customfieldsRelatedCategories"]=> array(0) { } ["customfieldsRelatedProducts"]=> array(0) { } ["customfieldsCart"]=> array(1) { [0]=> object(stdClass)#247 (11) { ["virtuemart_custom_id"]=> string(2) "75" ["custom_title"]=> string(13) "Размер:" ["show_title"]=> string(1) "1" ["custom_value"]=> string(0) "" ["custom_field_desc"]=> string(0) "" ["custom_tip"]=> string(0) "" ["field_type"]=> string(1) "V" ["virtuemart_customfield_id"]=> string(4) "1149" ["is_hidden"]=> string(1) "0" ["options"]=> array(2) { [1149]=> object(stdClass)#243 (9) { ["virtuemart_product_id"]=> string(3) "194" ["custom_params"]=> string(1) "0" ["custom_element"]=> string(1) "0" ["virtuemart_custom_id"]=> string(2) "75" ["virtuemart_customfield_id"]=> string(4) "1149" ["custom_value"]=> string(5) "48-50" ["custom_price"]=> NULL ["custom_param"]=> string(0) "" ["text"]=> string(6) "48-50 " } [1150]=> object(stdClass)#242 (9) { ["virtuemart_product_id"]=> string(3) "194" ["custom_params"]=> string(1) "0" ["custom_element"]=> string(1) "0" ["virtuemart_custom_id"]=> string(2) "75" ["virtuemart_customfield_id"]=> string(4) "1150" ["custom_value"]=> string(5) "50-52" ["custom_price"]=> NULL ["custom_param"]=> string(0) "" ["text"]=> string(6) "50-52 " } } ["display"]=> string(141) " " } } ["customsChilds"]=> array(0) { } ["orderable"]=> bool(true) ["product_template"]=> string(0) "" ["canonical"]=> string(103) "index.php?
    выбрал этот кусок, потому что в нём как раз кастомные поля встречаются. Но как благодаря этому всё же вывести во всплывающее окно именно то значение из списка, которое выбрано в тот момент, когда нажимается кнопка добавить в корзину?
     
    Последнее редактирование модератором: 21 июл 2015
  2. d0ublezer0

    d0ublezer0

    Регистр.:
    21 май 2009
    Сообщения:
    331
    Симпатии:
    172
    Genk0, товарищ говорит о Virtuemart2, там немного по другому устроено
     
  3. Genk0

    Genk0

    Регистр.:
    2 июн 2010
    Сообщения:
    9
    Симпатии:
    18
    Значит ему следовало бы указывать точные версии, я смотрел 2.6.х
    Принцип почти такой же.

    Я подразумеваю что в товаре был выбран размер 48-50, если так, то
    Ищем в массиве customfieldsCart значение virtuemart_customfield_id
    И выводим получившееся значение из options, оно как раз первое
     
  4. RussianDozhdevik

    RussianDozhdevik Писатель

    Регистр.:
    16 июл 2015
    Сообщения:
    6
    Симпатии:
    0
    Умоляю, скажите, как это сделать? Virtuemart 2.0.18
     
  5. d0ublezer0

    d0ublezer0

    Регистр.:
    21 май 2009
    Сообщения:
    331
    Симпатии:
    172
    Genk0
    В массиве передается почему-то всегда первый virtuemart_customfield_id из списка options
    Можно попробовать например доставать из JSON который попадает в padded, но там с мусором


    Upd: Я понял. Этот массив ($this->product->customfieldscart) содержит поля которые являются атрибутом корзины для этого товара, а не реально передаваемые в корзину параметры. Так же есть массив ($this->product->customfields) который содержит в себе остальные поля, не являющиеся атрибутом корзины.
    Надо ковырять именно объект $cart, как предложено далее.

    to RussianDozhdevik:


    попробуйте взять за основу предложенный мной файл padded.php
    вам нужно ковырять кусок кода, отвечающий за вывод товаров из переменной корзины:
    PHP:
    if(!class_exists('VirtueMartCart')) require(JPATH_VM_SITE.DS.'helpers'.DS.'cart.php');
    $cart VirtueMartCart::getCart(false);

    foreach (
    $cart->products as $product)
    {
    var_dump($product->customfields); // тут должны быть ваши кастомные поля для каждого продукта
    }
    На коленке проверил - вроде должно работать. Однако тесты показали что содержимое там появляется только после посещения страницы корзины.
     
    Последнее редактирование: 21 июл 2015
  6. RussianDozhdevik

    RussianDozhdevik Писатель

    Регистр.:
    16 июл 2015
    Сообщения:
    6
    Симпатии:
    0
    К сожалению, это не решило задачу..
    Мне удавалось вывести во всплывающее окно кастомные поля и даже без предварительного посещения корзины. Проблема в том, что отображались все значения из списка. А нужно показывать только тот размер товара, который сейчас выбран и добавляется в корзину. Во всплывающем окошке не нужен список товаров из корзины. Нужно, чтобы при нажатии кнопки Добавить в корзину появлялось окно, где будет только добавляемый товар(его название, артикул, фото - это выводится и количество, но не общее в корзине, а только то которое добавляется в данный момент и размер товара(либо цвет) - это вывести мне не удаётся). Можно ли это как то решить?
     
  7. RussianDozhdevik

    RussianDozhdevik Писатель

    Регистр.:
    16 июл 2015
    Сообщения:
    6
    Симпатии:
    0
    Хорошо, я спрошу по-другому. Все знают в Virtuemart 2 когда указываешь количество перед нажатием кнопки купить (или добавить в корзину) происходит какое-то ajax-обновление, то есть пересчёт без перезагрузки страницы. Так вот куда записывается это значение. Я указал количество товара, но ещё не нажал кнопку купить. Но Virtuemart уже знает ту цифру, которую я указал и когда я нажму купить, во всплывающем окне он её покажет. Где хранится эта цифра пока я не нажму кнопку купить(добавить в корзину)?
     
  8. Messir

    Messir

    Регистр.:
    24 июл 2011
    Сообщения:
    332
    Симпатии:
    59
    Джентльмены, опять возник вопрос по этому долбаному фреймовому окну для ВМ2. Куда нужно вставить счетчик, чтобы это окно само закрывалось, скажем, через 3 секунды?
     
  9. serbga123

    serbga123 Создатель

    Регистр.:
    20 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    скрипт таймера надо вставлять сюда components/com_virtuemart/views/cart/tmpl/padded.php.
    или вот сюда, если у вас в шаблон перенесен этот файл (дабы избежать потери макета во время обновления ядра) templates/ваш_шаблон/html/com_virtuemart/cart/padded.php
     
  10. Messir

    Messir

    Регистр.:
    24 июл 2011
    Сообщения:
    332
    Симпатии:
    59
    Да про этот файлик я знаю, вот только вставка туда счетчика ничего не дает...