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


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

Как получить цену товара в шаблоне цены? Вопрос по php


Лучший Ответ Владимир Лозицкий , 24 May 2017 - 15:55

Спасибо CB9TOIIIA

Я все таки разобрался и переписал правильно.

Если кому интересно код ниже.

if ($this->checkPosition('list')) {
    $juser=JFactory::getUser();
    $groups = $juser->get('groups');
    
            if (!in_array('10', $groups)) {/** если пользователь НЕ ВХОДИТ в группу ПРОФЕССИОНАЛЫ **/ 

                    /** ID переменной определяющей скрывать ли цену для непрофессионалов **/ 
                    switch ($item->type) {
                        case "cosmetic-lanza";
                            $CB_price = 'a0b1155b-8224-40f5-845b-ca81da5c2351';
                            break;
                        case "cosmetic-insight":
                            $CB_price = 'fca32c48-0ffc-478f-8549-d22b7f4a4d10';
                            break;
                        case "cosmetic-innovatis":
                            $CB_price = '4b486488-f08e-4cba-8897-f3971f5e2223';
                            break;                        
                    }           

                    $Quest = (array)$item->getElement($CB_price)->data()['option'];
                    $Key= $Quest[0];            
                    if ($Key=='net') { /** net - отсутствие ограничений на показ цены **/ 
                        echo '<div>';
                        echo $this->renderPosition('list');
                        echo '</div>';   
                        }
                else {
                    echo "<a class='need-get-price' href='/full-access'> Узнать цену </a>";
                }
            }     
    }

Самая главная моя ошибка была в том что $CB_price для каждого сайта своя. И ID  значение можно в полях JBZooApp (серая шестеренка)

 

В этом коде я определяю входит ли пользователь в определенную группу, и если не входит, то проверяю что установлено в поле показа цены цены только для одной группы. 


Это кстати был код одного из шаблонов вывода цены.

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


Сообщений в теме: 18

#1 Владимир Лозицкий

Владимир Лозицкий

Отправлено 05 May 2017 - 16:07

Может кто-нибудь подсказать следующий вопрос.

Мне необходимо НЕ ВЫВОДИТЬ шаблон цены, в том случае если цена товара стоит 0.

 

К примеру в шаблоне цены price.php следующий код

 

if ($this->checkPosition('price')) {
    echo '<div>';
    echo $this->renderPosition('price');
    echo '</div>';
}
 
Мне необходимо из $this получить цену текущего товара и если она окажется раной нулю не выводить позицию.
То есть сделать 
if ($this->checkPosition('price')|| если цена товара не равна нулю) {
 
В php еще слаб. Никак не могу понять как это сделать?
 


#2 CB9TOIIIA

CB9TOIIIA

Отправлено 06 May 2017 - 14:05

$CB_price = 'f4483451-befa-4f92-b5bf-e2e9c3e90283';
$CB_SKU = $this->_item->getElement($CB_price)->data()->variations;
$CB_SKU_App = $this->app->data->create($CB_SKU);

$CB_SKU = $CB_SKU_App->find('0._sku.value');
$Value_Price = $CB_SKU_App->find('0._value.value');

if (empty($Value_Price)) {
  $Value_Price = $CB_SKU_App->find('1._value.value');
}
if (empty($Value_Price)) {
  $Value_Price = $CB_SKU_App->find('2._value.value');
}

$CB_SKU = trim(strip_tags($CB_SKU));
$Value_Price = trim(strip_tags($Value_Price));



if ($Value_Price != 0 || !empty($Value_Price)) {
    echo $this->renderPosition('price');
}
else {
    $pos = "callback";
    $modules = JModuleHelper::getModules($pos);
    $attribs['style'] = 'xhtml';
    foreach ($modules as $module){
        echo JModuleHelper::renderModule($module, $attribs);
    }
    echo "<a class='needgetprice' href='#' data-simplecallback-open='135' data-simplecallback-custom-data='{$cleartitle}'> Узнать цену </a>";
}

  • 0

#3 Владимир Лозицкий

Владимир Лозицкий

Отправлено 10 May 2017 - 12:45

Спасибо за ответ.

Но увы не работает

 

после

$CB_SKU = $this->_item->getElement($CB_price)->data()->variations;

 

Вываливается в ошибку.

И самое главное отладку не могу сделать, netbeans вываливает ошибку сокета.



#4 CB9TOIIIA

CB9TOIIIA

Отправлено 10 May 2017 - 12:50

Спасибо за ответ.

Но увы не работает

 

после

$CB_SKU = $this->_item->getElement($CB_price)->data()->variations;

 

Вываливается в ошибку.

И самое главное отладку не могу сделать, netbeans вываливает ошибку сокета.

 

у Вас без вариаций? 1 цена?

$DataVIP = (array)$item->getElement('02f2fc89-6bd6-4797-bd71-2783220d7d74')->data();
$modifiedFindVIP = $this->app->data->create($DataVIP);
$priceVIP = $modifiedFindVIP->find('price', NULL);

if (!empty($priceVIP)) {

//render

}

  • 0

#5 Владимир Лозицкий

Владимир Лозицкий

Отправлено 11 May 2017 - 08:46

А можно уточнить? 

 

Что это такое? getElement('02f2fc89-6bd6-4797-bd71-2783220d7d74'

Код цены? 

 

  1. $DataVIP = (array)$item->getElement('02f2fc89-6bd6-4797-bd71-2783220d7d74')->data(); вызывает ошибку.

 

item.jpg

 

this.jpg



#6 CB9TOIIIA

CB9TOIIIA

Отправлено 11 May 2017 - 08:49

Цена, все зависит от места вызова, может:

$this->_item  или $item

Но примеры выше рабочие, попробуйте jbdump 


  • 0

#7 Владимир Лозицкий

Владимир Лозицкий

Отправлено 11 May 2017 - 09:00

А цены две.

 

Одна для всех, другая для отдельной группы пользователей.

 

Идея какая.

Есть перечень товара. Товар могут видеть все.

Но на некоторые группы товара цена должна быть видна только для пользователей одной группы - "Профи". Любые другие пользователи вообще не должны видеть цену.

 

Я решил это так. Создал для товара две цены. Для каждой цены сделал свой шаблон вывода.

 

Если пользователь либо гость, либо в общей группе зарегистрированных то ему отображается одна цена.

Если он в группе "Профи" - ему показывается другая цена.

 

В шаблоне вывода цены это выглядит вот так

 
if ($this->checkPosition('list')) {
    $juser=JFactory::getUser();
    $groups = $juser->get('groups');
    if (in_array('10', $groups)) {
        echo '<div>';
        echo $this->renderPosition('list');
        echo '</div>';
        }    
}
 
и для группы "Профи" и остальных разные шаблоны вывода цены
 
Но вот из за чего вышла проблема. Как мне сделать признак для товара что ему вообще не надо выводить цену? 
Решил что просто поставлю - 0, и буду это определять в шаблоне вывода цены. если 0 то вообще ничего не выводить.
Вот и уперся не пойму как мне получить цену для товара?
Выше указанный код дает ошибку.


#8 CB9TOIIIA

CB9TOIIIA

Отправлено 11 May 2017 - 09:02

упс... все увидел, в чем трабл. Мои коды выше для full.php - а вы в цену хардкодите.


  • 0

#9 Владимир Лозицкий

Владимир Лозицкий

Отправлено 11 May 2017 - 09:09

Есть вариант по другому? 

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

Только я пытался разобраться в структуре таблиц и как что к чему привязано, но честно ничего не понял.



#10 CB9TOIIIA

CB9TOIIIA

Отправлено 11 May 2017 - 09:18

по другому? в элементе цены? не знаю... по логике в full и тизер делать это нужно.


  • 0




Click to return to top of page in style!