4:17 PM Вывод предполагаемой даты доставки товара |
Честно признаться - задача не из легких и чтобы реализовать ее самостоятельно мне потребовалось много времени. Сейчас я уже полностью завершил статью и с момента написания первых строк прошло более месяца. Столько я шел к ее решению, попутно пытаясь оптимизировать и упростить восприятие. К сожалению банальное прибавление срока доставки к операторам DAY, MONTH, YEAR не дает нужного результата. Например в конце месяца мы бы получили 32 апреля - это никуда не годится. Постановка задачи и ключевые моментыВывести предполагаемую дату доставки вида DD.MM.YYYY, если известно, что доставка производится по средам.
Написание кодаСамо по себе написание кода не требует каких-либо разъяснений. Это
простое перенесение блок-схемы. Поэтому приступим сразу к делу. Code <?if $MONTH$='2'?> <?if $YEAR$='2012' or $YEAR$='2016' or $YEAR$='2020'?> <?if $WDAY$='Пн'?> <?if $DAY$+2>=30?> 0<?$DAY$-27?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вт'?> <?if $DAY$>=30?> 01.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Ср'?> <?if $DAY$+7>=30?> 0<?$DAY$-22?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Чт'?> <?if $DAY$+6>=30?> 0<?$DAY$-23?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Пт'?> <?if $DAY$+5>=30?> 0<?$DAY$-24?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Сб'?> <?if $DAY$+4>=30?> 0<?$DAY$-25?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вс'?> <?if $DAY$+3>=30?> 0<?$DAY$-26?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?else?> <?if $WDAY$='Пн'?> <?if $DAY$+2>=29?> 0<?$DAY$-26?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вт'?> <?if $DAY$>=29?> 01.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Ср'?> <?if $DAY$+7>=29?> 0<?$DAY$-21?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Чт'?> <?if $DAY$+6>=29?> 0<?$DAY$-22?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Пт'?> <?if $DAY$+5>=29?> 0<?$DAY$-23?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Сб'?> <?if $DAY$+4>=29?> 0<?$DAY$-24?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вс'?> <?if $DAY$+3>=29?> 0<?$DAY$-25?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?endif?> <?else?> <?if $MONTH$='4' or $MONTH$='6' or $MONTH$='9' or $MONTH$='11'?> <?if $WDAY$='Пн'?> <?if $DAY$+2>=31?> 0<?$DAY$-28?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вт'?> <?if $DAY$>=31?> 01.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Ср'?> <?if $DAY$+7>=31?> 0<?$DAY$-23?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Чт'?> <?if $DAY$+6>=31?> 0<?$DAY$-24?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Пт'?> <?if $DAY$+5>=31?> 0<?$DAY$-25?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Сб'?> <?if $DAY$+4>=31?> 0<?$DAY$-26?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вс'?> <?if $DAY$+3>=31?> 0<?$DAY$-27?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?endif?> <?if $MONTH$='1' or $MONTH$='3' or $MONTH$='5' or $MONTH$='8' or $MONTH$='10'?> <?if $WDAY$='Пн'?> <?if $DAY$+2>=32?> 0<?$DAY$-29?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вт'?> <?if $DAY$>=32?> 01.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Ср'?> <?if $DAY$+7>=32?> 0<?$DAY$-24?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Чт'?> <?if $DAY$+6>=32?> 0<?$DAY$-25?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Пт'?> <?if $DAY$+5>=32?> 0<?$DAY$-26?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Сб'?> <?if $DAY$+4>=32?> 0<?$DAY$-27?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вс'?> <?if $DAY$+3>=32?> 0<?$DAY$-28?>.<?$MONTH$+1?>.$YEAR$ <?else?> <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?endif?> <?if $MONTH$='12'?> <?if $WDAY$='Пн'?> <?if $DAY$+2>=32?> 15.01.<?$YEAR$+1?> <?else?> <?if$DAY$+2<10?>0<?endif?><?$DAY$+2?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вт'?> <?if $DAY$>=32?> 15.01.<?$YEAR$+1?> <?else?> <?if$DAY$+1<10?>0<?endif?><?$DAY$+1?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Ср'?> <?if $DAY$+7>=32?> 15.01.<?$YEAR$+1?> <?else?> <?if$DAY$+7<10?>0<?endif?><?$DAY$+7?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Чт'?> <?if $DAY$+6>=32?> 15.01.<?$YEAR$+1?> <?else?> <?if$DAY$+6<10?>0<?endif?><?$DAY$+6?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Пт'?> <?if $DAY$+5>=32?> 15.01.<?$YEAR$+1?> <?else?> <?if$DAY$+5<10?>0<?endif?><?$DAY$+5?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Сб'?> <?if $DAY$+4>=32?> 15.01.<?$YEAR$+1?> <?else?> <?if$DAY$+4<10?>0<?endif?><?$DAY$+4?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?if $WDAY$='Вс'?> <?if $DAY$+3>=32?> 15.01.<?$YEAR$+1?> <?else?> <?if$DAY$+3<10?>0<?endif?><?$DAY$+3?>.$MONTH$.$YEAR$ <?endif?> <?endif?> <?endif?> <?endif?> Что мы в итоге получилиВ итоге мы получили код, который выведет нам дату ближайшей среды. Если сегодня среда, то выведет дату следующей среды. Это позволит Вашим покупателям ориентироваться в предполагаемой дате доставки. Это своего рода гарантия, что "мы к Вам уже выехали, только оформите заказ". Положительно влияет на доверие посетителя к магазину. Является одним из маст-хэв пунктов по улучшению конверсии интернет-магазина и ведет к снижению отказов на странице чекаута (оформления заказа). Я желаю Вам увеличения конверсии и интересных идей. До новых встреч |
|
Всего комментариев: 7 | 1 2 3 ... 6 7 » |
| |
1-1 2-2 3-3 ... 6-6 7-7 | |