Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
XSLT: вызов существующего раздела из вновь созданной пустой старницы

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

Ответов: 9
Просмотров: 1515
Последний ответ 16 Ноябрь 2014, 23:19:20
от admin
Вывод всех объектов каталога в шаблоне на основе макроса getObjectsList

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

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

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

Ответов: 4
Просмотров: 1316
Последний ответ 02 Декабрь 2013, 22:09:51
от Seweryss
Вызов рубрики и alt-name в новость, разделение на прошедшие и действующие

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

Ответов: 6
Просмотров: 437
Последний ответ 01 Июнь 2017, 13:06:43
от Sumrakrnd
как вставить cut в админке для макроса %blogs20 postsList()%

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

Ответов: 12
Просмотров: 5750
Последний ответ 18 Сентябрь 2011, 22:24:11
от 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 спасибо за помощь ;)