Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Вывод всех объектов каталога в шаблоне на основе макроса getObjectsList

Автор s.kirillРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 2068
Последний ответ 15 Июня 2017, 17:42:12
от s.kirill
XSLT: вызов существующего раздела из вновь созданной пустой старницы

Автор samРаздел Шаблоны XSLT

Ответов: 9
Просмотров: 3261
Последний ответ 16 Ноября 2014, 23:19:20
от admin
Отказ работы макроса при переходе на другую страницу

Автор SeweryssРаздел Настройка системы и модулей

Ответов: 4
Просмотров: 2763
Последний ответ 02 Декабря 2013, 22:09:51
от Seweryss
как вставить cut в админке для макроса %blogs20 postsList()%

Автор SuilinadРаздел Макросы UMI.CMS

Ответов: 12
Просмотров: 8621
Последний ответ 18 Сентября 2011, 22:24:11
от admin
Обработка ошибки вызова кастомного макроса.

Автор MIkeРаздел Шаблоны XSLT

Ответов: 4
Просмотров: 4843
Последний ответ 31 Мая 2013, 13:17:34
от admin

0 Пользователей и 1 Гость просматривают эту тему.

*

psw2020

  • *
  • 11
  • +3/-0
    • Просмотр профиля
Есть 2 макроса, 1 тащит напрямую из БД значение, второй пытается это значение сложить с еще некоторым значением. Во втором макросе пытаюсь вызвать первый %custom getValue(param1,param2)%, но со сложением ничего не выходит, т.к. вызов является строкой а не вернувшимся значением, т.е. сначала интерпретируется php код, а только потом макрос  :(. Как можно это правильно реализовать?

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
а в чем сложность сделать один макрос из двух???

*

psw2020

  • *
  • 11
  • +3/-0
    • Просмотр профиля
а в чем сложность сделать один макрос из двух???
в том, что зачем дублировать функционал? и вопрос все таки стоит в вызове макроса из макроса, а не в их количестве.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
тогда опишите суть проблемы более понятным языком с примером кода и что получается на выходе, из того что вы написали вообще мало что понятно...

*

psw2020

  • *
  • 11
  • +3/-0
    • Просмотр профиля
тогда опишите суть проблемы более понятным языком с примером кода и что получается на выходе, из того что вы написали вообще мало что понятно...

Макрос получающий значение, в данном случае стоимость услуг.
public function getToBasePrice($complectationId, $kmCount, $toType){
$basePrice = 0;
$dopPrice = 0;

if($toType == "m"){$dopPrice = 990;}
if($toType == "f"){$dopPrice = 990 + 1850;}

$dopPriceCUV = 0;
$CUVArray = array(1,2,3,16,17,37,38,39,40,41,42);
$searchCUV = array_search($complectationId, $CUVArray);

if($searchCUV !== false && $toType == "f"){$dopPriceCUV = 400;}

$getBasePriceQuery = mysql_query("SELECT to".$kmCount." FROM renaultToPrice WHERE complectationId = ".$complectationId."");
while ($getBasePrice = mysql_fetch_array($getBasePriceQuery)){
$basePrice = $getBasePrice[0];
}

return $basePrice + $dopPrice + $dopPriceCUV;
}

Пытаюсь вызвать его в другом макросе:
$ololo="%custom getToBasePrice(".$complectationId.",15,c)%";
return $ololo+ 111;

Если не производить с этой переменной никаких действий (сложение, вычитание и т.д.) то значение нормально возвращается. Но если попытаться сложить её с чем либо то ничего не выходит, т.к. вызов этого макроса еще не интерпретировался и равен строке "%custom getToBasePrice(".$complectationId.",15,c)%", а не результату выполнения макроса.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
аааа, так вы прямо в коде метода вызываете)))

методы внутри других методов вызываются как-то так

$custom = cmsController::getInstance()->getModule($macros['custom']);
$ololo = $custom->getToBasePrice($complectationId, 15, 'c');

если сам метод getToBasePrice в кастомс, то наверное можно и так

$ololo = $this->getToBasePrice($complectationId, 15, 'c');

*

psw2020

  • *
  • 11
  • +3/-0
    • Просмотр профиля
аааа, так вы прямо в коде метода вызываете)))

методы внутри других методов вызываются как-то так

$custom = cmsController::getInstance()->getModule($macros['custom']);
$ololo = $custom->getToBasePrice($complectationId, 15, 'c');

если сам метод getToBasePrice в кастомс, то наверное можно и так

$ololo = $this->getToBasePrice($complectationId, 15, 'c');

Рад что мы пришли к взаимопониманию)) позже протестирую - отпишусь ;)

*

psw2020

  • *
  • 11
  • +3/-0
    • Просмотр профиля
Получилось методом $ololo = $this->getToBasePrice($complectationId, 15, 'c'); crazygeorgio спасибо за помощь ;)