Перейти к содержимому


Фотография
- - - - -

Как увеличить количество доп параметров

корзина дополнительные параметры цены

Лучший Ответ rihter2001 , 28 October 2014 - 16:48

Значится так.....

изменять надо 6 файлов

1

jbpriceadvance.php и  jbpriceadvance.xml

из папки

media\zoo\applications\jbuniversal\elements\jbpriceadvance\

2

edit.php

из папки

media\zoo\applications\jbuniversal\elements\jbpriceadvance\tmpl

jbpriceadvance.php

из папки

media\zoo\applications\jbuniversal\framework\elements\user\

4

jquery.jbzootools.min.js

папка 

media\zoo\applications\jbuniversal\assets\js

 

ну и дописать в файл

ru-RU.com_jbzoo.ini новые значения перевода

 

Если в кратце то через поиск ищем строки где упоминается      param1

и дополняем их новыми например

 public function edit()
    {
        $this->app->jbassets->admin();

        if ($layout = $this->getLayout('edit.php')) {

            $variations = $this->_getVariations();
            if (empty($variations) && (int)$this->config->get('mode', 0)) {
                $basic                = $this->_getBasicData();
                $basic['description'] = '';
                $variations           = array($basic);
            }

            return self::renderLayout($layout, array(
                'config'       => $this->config,
                'currencyList' => $this->_getCurrencyList($this->config),
                'variations'   => $variations,
                'basicData'    => $this->_getBasicData(),
                'param1'       => $this->_getParamOptions(1, true),
                'param2'       => $this->_getParamOptions(2, true),
                'param3'       => $this->_getParamOptions(3, true),
                'param4'       => $this->_getParamOptions(4, true),
                'param5'       => $this->_getParamOptions(5, true),
                'param6'       => $this->_getParamOptions(6, true),
                'param7'       => $this->_getParamOptions(7, true),
                'param8'       => $this->_getParamOptions(8, true),
                'param9'       => $this->_getParamOptions(9, true),
                'param10'       => $this->_getParamOptions(10, true),
                'param11'       => $this->_getParamOptions(11, true),
                'param12'       => $this->_getParamOptions(12, true),
                'param13'       => $this->_getParamOptions(13, true),
                'param14'       => $this->_getParamOptions(14, true),
                'param15'       => $this->_getParamOptions(15, true),
            ));
        }

        return null;
    }

Так же находим  p1- и дописываем

protected function _getHash(array $variant = array())
    {
        $itemId = $this->_getItemId();

        if (empty($variant)) {
            return (string)$itemId;
        }

        $paramsArr = array(
            'p1-' . (isset($variant['param1']) ? $variant['param1'] : ''),
            'p2-' . (isset($variant['param2']) ? $variant['param2'] : ''),
            'p3-' . (isset($variant['param3']) ? $variant['param3'] : ''),
            'p4-' . (isset($variant['param4']) ? $variant['param4'] : ''),
            'p5-' . (isset($variant['param5']) ? $variant['param5'] : ''),
            'p6-' . (isset($variant['param6']) ? $variant['param6'] : ''),
            'p7-' . (isset($variant['param7']) ? $variant['param7'] : ''),
            'p8-' . (isset($variant['param8']) ? $variant['param8'] : ''),
            'p9-' . (isset($variant['param9']) ? $variant['param9'] : ''),
            'p10-' . (isset($variant['param10']) ? $variant['param10'] : ''),
            'p11-' . (isset($variant['param11']) ? $variant['param11'] : ''),
            'p12-' . (isset($variant['param12']) ? $variant['param12'] : ''),
            'p13-' . (isset($variant['param13']) ? $variant['param13'] : ''),
            'p14-' . (isset($variant['param14']) ? $variant['param14'] : ''),
            'p15-' . (isset($variant['param15']) ? $variant['param15'] : ''),
        );

        if ((int)$this->config->get('adv_field_text', 0) == self::TEXT_FIELD_AS_PARAM) {
            if (isset($variant['description'])) {
                $paramsArr[] = 'd-' . $this->app->string->sluggify($variant['description']);
            } else {
                $paramsArr[] = 'd-';
            }
        }

        $result = implode('_', $paramsArr);

        if ($result === implode('_', array('p1-', 'p2-', 'p3-','p4-','p5-','p6-', 'p7-', 'p8-','p9-','p10-','p11-', 'p12-', 'p13-','p14-','p15-', 'd-')) ||
            $result === implode('_', array('p1-', 'p2-', 'p3-','p4-','p5-','p6-', 'p7-', 'p8-','p9-','p10-','p11-', 'p12-', 'p13-','p14-','p15-'))
        ) {
            return (string)$itemId;
        }

обязательно находим protected function _renderParamsControl($params)

и меняем значение $i На количество полей

protected function _renderParamsControl($params)
    {
        $jbhtml = $this->app->jbhtml;

        $paramsTmpl   = (int)$params->get('params_tmpl', 0);
        $advFieldText = (int)$this->config->get('adv_field_text', 0);
        $advShowEmpty = (int)$this->config->get('adv_show_empty', 1);

        $html = array();
/// $i количество выводимых полей
        for ($i = 1; $i <= 15; $i++) {

и $html[3] меняем 3 на количество полей +1

$paramsList = $this->_getParamOptionsDesc();

        if ($advFieldText == self::TEXT_FIELD_AS_PARAM && !empty($paramsList)) {

            if (self::PARAMS_TMPL_SELECT == $paramsTmpl) {
                $paramName = JString::trim($paramsList[''], '-');
                
                $html[16] = $jbhtml->select($paramsList, uniqid('jbprice-'), 'class="jsParamDesc" data-index="d-"');
                $html[16] = '<fieldset class="jbprice-param-select jbprice-param-list jbprice-param-list-desc">'
                        . '<legend>' . $paramName . '</legend>'
                        . $html[16] 
                        . '</fieldset>';

и главное дописать скрипт

дописываем там где p1-

b.text_start+'" /><input type="button" class="jsStop uk-button" value="'+b.text_stop+'" style="display:none;" />');var f=a("#jbprogressbar",l),s=a(".uk-progress-bar",l);a(".progress-label",l);var m=a(".jsStart",l),q=a(".jsStop",l),r=0,t=0,p=!0,n=0;m.bind("click",function(){confirm(b.text_start_confirm)&&d();return!1});q.bind("click",function(){confirm(b.text_stop_confirm)&&g();return!1});b.autoStart&&(d(),m.hide(),q.hide())};a.fn.JBZooPriceAdvance=function(b){b=a.extend({},{mainHash:"",itemId:0,identifier:"",
prices:{},addToCartUrl:"",removeFromCartUrl:"",basketUrl:"",modalUrl:"",isInCart:0},b);b.params=a.extend({},{startValue:1,multipleValue:1,currencyDefault:"EUR",advFieldText:0,advAllExistShow:0},b.params);return a(this).each(function(){function c(c){if(p(b.prices))return!1;var d;d=l();var e=h(d);d="p1-_p2-_p3-_p4-_p5-p6-_p7-_p8-_p9-_p10-p11-_p12-_p13-_p14-_p15-_d-"==e||"p1-_p2-_p3-_p4-_p5-p6-_p7-_p8-_p9-_p10-p11-_p12-_p13-_p14-_p15"==e?b.mainHash:e=b.mainHash+"-"+h(d);var e=b.prices[b.mainHash].prices[c],g="";"undefined"!=typeof b.prices[d]?(e=b.prices[d].prices[c],g=a.trim(b.prices[d].description),
0==b.params.advAllExistShow&&a(".jbprice-buttons",f).removeClass("disabled")):(0==b.params.advAllExistShow&&a(".jbprice-buttons",f).addClass("disabled"),d=b.mainHash);a(".not-paid-box",f).show();0==e.totalNoFormat&&a(".not-paid-box",f).hide();a(".jsSave",f).text(e.save);a(".jsTotal",f).text(e.total);a(".jsPrice",f).html("&nbsp;"+e.price+"&nbsp;");a(".jbcurrency-"+c.toLowerCase(),f).addClass("active");a(".jsDescription",f).text(g);a(".jbprice-balance .balance",f).hide();a(".jbprice-balance ."+d,f).show();
a(".jbprice-sku .sku",f).hide();a(".jbprice-sku ."+d,f).show();n=c}function e(){var a=l();return a=2==b.params.advFieldText?{1:a["p1-"],2:a["p2-"],3:a["p3-"],4:a["p4-"],5:a["p5-"],6:a["p6-"],7:a["p7-"],8:a["p8-"],9:a["p9-"],10:a["p10-"],11:a["p11-"],12:a["p12-"],13:a["p13-"],4:a["p14-"],5:a["p15-"],desc:a["d-"]}:{1:a["p1-"],2:a["p2-"],3:a["p3-"],4:a["p4-"],5:a["p5-"],6:a["p6-"],7:a["p7-"],8:a["p8-"],9:a["p9-"],10:a["p10-"],11:a["p11-"],12:a["p12-"],13:a["p13-"],4:a["p14-"],5:a["p15-"]}}function d(c){var d=b.params.startValue;a(".jsCount",f).length&&(d=a(".jsCount",f).val());k({url:b.addToCartUrl,data:{args:{quantity:d,params:e()}},success:function(b){a.isFunction(c)&&c(b)},error:function(a){a.message&&alert(a.message)}})}function g(){k({url:b.removeFromCartUrl,success:function(b){f.removeClass("in-cart").addClass("not-in-cart");
a.fn.JBZooPriceReloadBasket()}})}function h(a){var b=[],c;for(c in a)b.push(c+a[c]);return b.join("_")}function l(){var c={},c=2==b.params.advFieldText?{"p1-":"","p2-":"","p3-":"","p4-":"","p5-":"","p6-":"","p7-":"","p8-":"","p9-":"","p10-":"","p11-":"","p12-":"","p13-":"","p14-":"","p15-":"","d-":""}:{"p1-":"","p2-":"","p3-":"","p4-":"","p5-":"","p6-":"","p7-":"","p8-":"","p9-":"","p10-":"","p11-":"","p12-":"","p13-":"","p14-":"","p15-":""};f.find(".jbprice-param-radio").length?a(".jbprice-param-radio input:checked",f).each(function(b,d){var e=a.trim(a(d).val()),f=a(d).closest(".jbprice-param-radio");c[f.data("index")]=e}):f.find(".jbprice-param-select").length&&(a(".jsParam",f).each(function(b,d){var e=a.trim(a(d).val())

прикрепил свои вариант на 15 полей https://yadi.sk/d/4wJ0vMIdcM3SP


знаю я маниак но так надо было


вопрос к более знающим, можно ли туда прикрутить проверку чтобы если в доп поле одна позиция он выводил не селект а текст

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 17

#11 rihter2001

rihter2001

Отправлено 28 October 2014 - 16:59

завтра перенесу и объясню что имел ввиду


  • 0

#12 laRus

laRus

Отправлено 28 October 2014 - 17:31

rihter2001, спасибо!  

 

А здорово!!  :)


Сообщение отредактировал Ursa: 28 October 2014 - 17:51

  • 0
..minimum effort for maximum effect? - Oh yeah! It's good!..

#13 rihter2001

rihter2001

Отправлено 29 October 2014 - 07:14

создал тему в рецептах

по моему вопросу

мне надо чтобы получилось так (см картинку)

правая колонка это всё доп параметры но....

они не все должны быть выпадающим списком

т.к. дописывать код чтоб он принимал в доп поля ещё и текстовую строку долго, то я думаю что проще написать проверку и доп вывод даже понял где...

for ($i = 1; $i <= 15; $i++) {

            if ($paramsList = $this->_getParamOptions($i)) {

                $default   = $this->config->get('adv_field_param_' . $i . '_default', '');
                $default   = $this->app->string->sluggify($default);
                $paramName = JString::trim($paramsList[''], '-');
                reset($paramsList);

                if (!$advShowEmpty) {
                    unset($paramsList['']);

                    if (empty($default)) {
                        $default = key($paramsList);
                    }
                }

                // validate default var
                if (!isset($paramsList[$default])) {
                    $default = key($paramsList);
                }

                if (self::PARAMS_TMPL_SELECT == $paramsTmpl) {
                    $html[$i] = $jbhtml->select($paramsList, uniqid('jbprice-'), 'class="jsParam" data-index="p' . $i . '-"', $default);
                    $html[$i] = '<div class="jbprice-param-select jbprice-param-list jbprice-param-list-' . $i . '">' . '<legend>' . $paramName . '</legend>'
                        . $html[$i]
                        .  '</div>';

                } else if (self::PARAMS_TMPL_RADIO == $paramsTmpl) {

                    $html[$i] = $jbhtml->radio($paramsList, uniqid('jbprice-'), '', $default);
                    $html[$i] = '<fieldset class="jbprice-param-radio jbprice-param-list jbprice-param-' . $i . '" data-index="p' . $i . '-">'
                        . '<legend>' . $paramName . '</legend>'
                        . $html[$i]
                        . '</fieldset>';
                }

            } else {
                $html[$i] = $jbhtml->hidden('', '', 'class="jsParam" data-index="p' . $i . '-"');
            }
        }

        $paramsList = $this->_getParamOptionsDesc();

        if ($advFieldText == self::TEXT_FIELD_AS_PARAM && !empty($paramsList)) {

            if (self::PARAMS_TMPL_SELECT == $paramsTmpl) {
                $paramName = JString::trim($paramsList[''], '-');
                
                $html[16] = $jbhtml->select($paramsList, uniqid('jbprice-'), 'class="jsParamDesc" data-index="d-"');
                $html[16] = '<fieldset class="jbprice-param-select jbprice-param-list jbprice-param-list-desc">'
                        . '<legend>' . $paramName . '</legend>'
                        . $html[16] 
                        . '</fieldset>';

            } else if (self::PARAMS_TMPL_RADIO == $paramsTmpl) {
                $paramName = JString::trim($paramsList[''], '-');
                if (!$advShowEmpty) {
                    unset($paramsList['']);
                }

                reset($paramsList);
                $value = key($paramsList);

                $html[16] = $jbhtml->radio($paramsList, uniqid('jbprice-'), '', $value);
                $html[16] = '<fieldset class="jbprice-param-radio jbprice-param-list jbprice-param-list-desc" data-index="d-">'
                    . '<legend>' . $paramName . '</legend>'
                    . $html[16]
                    . '</fieldset>';
            }

        } else if ($advFieldText == self::TEXT_FIELD_AS_PARAM && empty($paramsList)) {
            $html[16] = $jbhtml->hidden('', '', 'class="jsParamDesc" data-index="d-"');
        }

        return implode("\n ", $html);
    }

но нифига не соображу как

Прикрепленные изображения

  • макет КТ.jpg

  • 0

#14 tapakan

tapakan

Отправлено 29 October 2014 - 16:41

они не все должны быть выпадающим списком
 

Чем они еще должны быть?

то я думаю что проще написать проверку и доп вывод даже понял где...
Проверку по какому признаку?
  • 0

#15 rihter2001

rihter2001

Отправлено 30 October 2014 - 06:52

если в поле списка одно значение то просто текст


  • 0

#16 tapakan

tapakan

Отправлено 30 October 2014 - 09:51

По идее как-то так

if(count($paramsList) === 1) {
    text
} else {
    select
}

  • 0

#17 rihter2001

rihter2001

Отправлено 31 October 2014 - 09:02

сделал выводит на страницу норм, но как теперь заставить его передавать это в корзину? в каком файле?

if (self::PARAMS_TMPL_SELECT == $paramsTmpl) {
                        if(count($paramsList) === 2) {
                    $paramListing = array_pop($paramsList);
                    $html[$i] = '<div class="jbprice-param-select jbprice-param-list jbprice-param-list-' . $i . '">' . '<legend>' . $paramName . '</legend>'
                        . $paramListing
                        .  '</div>';
                        } else {
                    $html[$i] = $jbhtml->select($paramsList, uniqid('jbprice-'), 'class="jsParam" data-index="p' . $i . '-"', $default);
                    $html[$i] = '<div class="jbprice-param-select jbprice-param-list jbprice-param-list-' . $i . '">' . '<legend>' . $paramName . '</legend>'
                        . $html[$i]
                        .  '</div>';
                        }

  • 0

#18 tapakan

tapakan

Отправлено 31 October 2014 - 09:29

Должно быть в методе ajaxAddToCart, если js'ом передаются параметры.


  • 0





Темы с аналогичным тегами корзина, дополнительные параметры цены

Click to return to top of page in style!