Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Проверка корректности заполнения поля в форме

Автор johnРаздел Custom макросы

Ответов: 7
Просмотров: 4264
Последний ответ 30 Августа 2014, 22:11:55
от john
проверка наличия дочерних элементов списка

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

Ответов: 4
Просмотров: 3084
Последний ответ 07 Октября 2014, 09:19:38
от idu.kuru
Яндекс.Касса где происходить проверка платежей

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

Ответов: 8
Просмотров: 2490
Последний ответ 11 Августа 2016, 00:12:28
от aghigay
Проверка существования под-уровня меню

Автор johnРаздел Custom макросы

Ответов: 7
Просмотров: 4053
Последний ответ 29 Сентября 2012, 00:43:49
от john
Проверка на наличие товара в корзине

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

Ответов: 2
Просмотров: 1195
Последний ответ 08 Февраля 2016, 17:40:14
от sam

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

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #30 : 23 Декабря 2015, 17:06:31 »
Вызов будет произведен из object-view.xsl после цены, наличии и информации о стоимости доставки. Как в таком случае вызвать макрос?

И еще, обязательно сделать следующую проверку - нельзя убрать это (наличие всегда имеет какой-либо статус)?
if (!$element instanceof umiHierarchyElement) {
throw new publicException(getLabel('error-page-does-not-exist'));
}

И последнее - можно ли код сделать так, как было при xslt - если available=10692 (есть в наличии) то выводить инфо из case 5, case 6, case 0, case 7, default (что-то одно в зависимости от условия), а при остальных статусах (нет, ожидается, под заказ и т.д.) выводить case 8?
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #31 : 23 Декабря 2015, 17:28:37 »
тогда скорее всего <xsl:value-of select="document(concat('udata://custom/getDeliveryDate/',page/@id))/udata" />

можно и не делать проверку

        if (isset($available) && $available != 10692) {
           $weekday = 8;
        }

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #32 : 23 Декабря 2015, 19:39:12 »
1. Если я правильно понял по коду, если статус не равно "есть в наличии", то выводить "после прихода" - правильно?
        if (isset($available) && $available != 10692) {
           $weekday = 8;
        }
2. И еще, вот конечный код - все ли верно?
		public function getDeliveryDate() {
if ($element_id) {
$element = umiHierarchy::getInstance()->getElement($element_id);
$available = $element->getValue('available');
}
$weekday = date('w'); //from 0 to 6, 6 - saturday, 0 - sunday
$day = date('d/m');
$holidays = array('31/12', '01/01', '02/01', '03/01', '04/01', '05/01', '06/01', '07/01', '08/01', '09/01', '10/01', '22/02', '07/03', '30/05', '08/05', '11/06', '03/11');
if (in_array($day, $holidays)) {
$weekday = 7; //for day equals holidays
}
if (isset($available) && $available != 10692) {
$weekday = 8; //for is not available
}
switch($weekday) {
case 5:
return 'понедельник и позже';
break;
case 6: case 0:
return 'вторник и позже';
break;
case 7:
return 'после праздника';
break;
case 8:
return 'после прихода';
break;
default:
return 'завтра и позже';
break; 
}
}
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #33 : 23 Декабря 2015, 19:57:35 »
ну вроде должно быть все верно, проверьте как работает

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #34 : 23 Декабря 2015, 20:12:55 »
OK! Спасибо! Ночью буду испытывать. Напишу, если что-то пойдет не так.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #35 : 24 Декабря 2015, 00:18:50 »
Попробовал макрос вместе с вызовом - в качестве праздничного дня для проверки, взял сегодняшний день, инфо из case 7 выводится (после праздника), но система выводит следующую ошибку:
Цитировать
Notice: Undefined variable: element_id in /docs/classes/modules/custom.php on line 12

На этой 12-й строке if ($element_id). Проверка на переменную есть, а самой переменной нет, видимо на это?! К чему должна равняться эта переменная - $element_id = ?!

И еще, есть одно противоречие - когда наличие товара равно "под заказ"/"ожидается", и в праздничные дни должно выводиться case 8 (после прихода), а выводится case 7 (после праздника)?! Как это противоречие исправить?

А когда не праздничный/обычный день, выводится default (завтра и позже) для любого статуса, будто это "в наличии", "под заказ" или "ожидается", а согласно нашему условию должна производиться проверка, и выводиться соответствующая информация.

P.S. После всего, мне хочется вернуться к варианту от e.ioffe, и начать испытывать все на том варианте - если с этим вариантом не справлюсь, так и поступлю, думаю.
« Последнее редактирование: 24 Декабря 2015, 01:47:07 от sam »
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #36 : 24 Декабря 2015, 04:04:20 »
написал же выше, что нужно передавать переменную!!! public function getDeliveryDate($element_id = false) { исправьте и тогда уже посмотрите что дальше

*

sam

  • ***
  • 216
  • +3/-1
  • "Век живи - век учись!"
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #37 : 24 Декабря 2015, 11:01:21 »
Спасибо! Как раз это я и не перенёс. Теперь вроде все работает, согласно логике макроса, без противоречий. Протестировал по-разному - если сегодня праздник - в наличии - доставка "после праздника", а для отсутствующих товаров "после прихода", если выходные дни, то такая-же логика - в наличии - доставка "понедельник/вторник и позже", а для отсутствующих "после прихода".
Теперь, только раз в год даты новогодних праздников отредактировать - у всех остальных даты не меняются.
Жизнь слишком коротка, чтобы выучить и знать всё на свете. Тем более, что мир быстро меняется, и технологии за ним тоже. Но это не повод, чтобы перестать учиться к чему-то новому. "Век живи - век учись!" Иначе жизнь будет прожита без пользы, как для себя, так и для окружающих.

*

crazygeorgio

  • ***
  • 140
  • +7/-0
    • Просмотр профиля
Re: Проверка по дням недели
« Ответ #38 : 24 Декабря 2015, 14:27:58 »
бывает что и меняются, перенос дней и все такое... так же как и не все выходные бывают выходными по этой же причине)
« Последнее редактирование: 24 Декабря 2015, 14:56:43 от crazygeorgio »