Мы добавили партнёрский поиск авиабилетов Kupibilet.ru.
Это очень крутой проект. Прямо очень.
Например, они нашли, что людям нужны пересадки.
Они нашли, что люди готовы платить МНОГО за пересадку, где их с гарантией, пусть и с опозданием, пересадят.
И что за эту гарантию авиакомпании берут ОФИГИТЕЛЬНО много баблища.
Между ОФИГИТЕЛЬНО много и «нам норм» - огромный диапазон куда Kupibilet и смог влезть: он берёт риск непересадки на себя, и отправит вас первым рейсом, если разрывное бронирование не срастётся.
Идея граничащая с гениальностью, нам приятно работать с гениями.
и нам будет приятно и сильно, (а иногда очень сильно поможет), если вы будете искать авиабилеты через нас, по вполне понятным причинам.
Поверьте, более дешёвых сложных билетов вы не найдёте.
(а простых на международке сейчас и не очень много)
.kupibilet-wrapper {
background-color: #F0F5FA;
padding: 15px;
margin-bottom: 1.27rem;
}
.kupibilet-heading {
display: block;
}
.kupibilet-heading h1 {
font-size: 1.25rem;
padding-bottom: .6rem;
}
.kupibilet-finder {
display: grid;
/* grid-template-columns: repeat(6, 1fr);
grid-template-rows: repeat(2, 1fr); */
grid-template-columns: 1fr;
grid-template-rows: repeat(5, 1fr);
grid-column-gap: 10px;
grid-row-gap: 10px;
}
.kupibilet-finder input {
margin-bottom: .2rem;
}
.kupibilet-finder__airport_select_from { grid-area: 1 / 1 / 2 / 3; }
.kupibilet-finder__airport_select_to { grid-area: 2 / 1 / 3 / 3; }
.kupibilet-finder__date_input_from { grid-area: 3 / 1 / 4 / 3; }
.kupibilet-finder__date_input_to { grid-area: 4 / 1 / 5 / 3; }
.kupibilet-finder__find_button { grid-area: 5 / 1 / 6 / 3; }
.kupibilet-finder__promo { grid-area: 6 / 1 / 7 / 2; }
.kupibilet-finder__promo_link { grid-area: 6 / 2 / 7 / 3; }
.kupibilet-finder__autocomplete.ui-autocomplete {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
float: left;
display: none;
min-width: 160px;
padding: 0;
margin: 0 0 10px 25px;
list-style: none;
background-color: #ffffff;
border: none;
border-radius: 0;
background-clip: padding-box;
max-height: 400px;
overflow-y: auto;
overflow-x: hidden;
}
.kupibilet-finder__autocomplete .ui-menu-item > a.ui-corner-all {
display: block;
padding: 10px;
clear: both;
font-weight: normal;
line-height: 18px;
white-space: nowrap;
text-decoration: none;
}
.kupibilet-finder__autocomplete .ui-state-hover, .kupibilet-finder__autocomplete .ui-state-active {
color: #ffffff;
text-decoration: none;
background-color: #0088cc;
border-radius: 0;
background-image: none;
}
.kupibilet-finder__autocomplete .ui-state-focus {
border-radius: 0;
}
.kupibilet-finder__date_input_from input[type='text'],
.kupibilet-finder__date_input_to input[type='text'] {
background-color: #ffffff !important;
}
.kupibilet-finder input[type='text'] {
border: 1px solid #777777;
}
.kupibilet-finder__find_button input[type='button'] {
background-color: #FF7D03;
color: #ffffff;
font-weight: bold;
font-size: 1rem;
height: 2.4375rem;
width: 100%;
}
.kupibilet-finder__find_button input[type='button']:hover {
color: #ffffff;
background-color: #FC6100;
}
.kupibilet-finder__promo {
display: block;
margin-top: 0;
color: #777777;
}
.kupibilet-finder__promo a, .kupibilet-finder__promo a:hover {
text-decoration: none;
}
.kupibilet-finder__promo a span {
font-size: .9rem;
color: #0088cc;
margin-left: .2rem;
vertical-align: middle;
}
.kupibilet-finder__promo img {
border-radius: 3px;
border: 1px solid rgba(0, 136, 204, .4);
}
.kupibilet-finder__promo_link {
}
.kupibilet-finder__promo_link a {
padding: 3px 8px 1px;
background-color: #ffffff;
border-radius: 50px;
font-weight: bold;
font-size: 1.2rem;
line-height: 1.1;
}
@media (max-width: 768px) {
.kupibilet-wrapper {
margin-bottom: 1rem;
padding: 10px;
}
.kupibilet-finder__promo, .kupibilet-finder__promo a span {
font-size: .8rem;
}
.kupibilet-finder__promo img {
width: 20px;
height: 20px;
}
.kupibilet-heading h1 {
font-size: 1.15rem;
padding-bottom: .6rem;
}
.kupibilet-finder input[type='text'], .kupibilet-finder input[type='text']:focus {
font-size: 16px;
padding: .4rem .5rem;
margin-bottom: 0;
}
.kupibilet-finder input[type='button'] {
font-size: 16px;
}
}
Поиск авиабилетов
window.addEventListener('load', function () {
var outerlink = '';
var from_date_outer = '';
var to_date_outer = '';
$(function() {
_paq.push(['trackEvent', 'KupibiletWidget', 'show_form', 'form']);
$('#airport_select_from').autocomplete({
minLength: 0,
create: function() {
$(this).data('ui-autocomplete')._renderItem = function( ul, item ) {
return $( '
.append( '' + item.label + '
' + item.group + ', ' + item.value + '' )
.appendTo( ul );
}
},
source: function( request, response ) {
let params = {
action: 'get_kupibilet_data',
filter: request.term
};
jQuery.post( ajaxurl, params ).done( function( response_from ) {
if( response_from.length ) {
let data = JSON.parse( response_from );
if( data.value ) {
response( data.value );
}
}
}).fail( function( xhr, textStatus, errorThrown ) {
});
},
focus: function( event, ui ) {
event.preventDefault();
// $('#airport_select_from').val( ui.item.group + ', ' + ui.item.value );
// $('#airport_select_from_value').val( ui.item.value );
},
select: function( event, ui ) {
event.preventDefault();
$('#airport_select_from').val( ui.item.group + ', ' + ui.item.value );
$('#airport_select_from_value').val( ui.item.value );
let params = {
action: 'get_kupibilet_data',
port: ui.item.value
};
jQuery.post( ajaxurl, params ).done( function( response_from ) {
if( response_from.length ) {
let data = JSON.parse( response_from );
if( data.value ) {
//$('#airport_select_to').val( data.value );
$('#airport_select_to').autocomplete('search', data.value);
}
}
}).fail( function( xhr, textStatus, errorThrown ) {
});
}
})
.autocomplete( 'widget' ).addClass( 'kupibilet-finder__autocomplete' );
$('#airport_select_to').autocomplete({
minLength: 0,
create: function() {
$(this).data('ui-autocomplete')._renderItem = function( ul, item ) {
return $( '
.append( '' + item.group + '
' + item.label + ', ' + item.value + '' )
.appendTo( ul );
}
},
source: function( request, response ) {
let params = {
action: 'get_kupibilet_data',
filter: request.term
};
jQuery.post( ajaxurl, params ).done( function( response_from ) {
if( response_from.length ) {
let data = JSON.parse( response_from );
if( data.value ) {
response( data.value );
}
}
}).fail( function( xhr, textStatus, errorThrown ) {
});
},
focus: function( event, ui ) {
event.preventDefault();
// $('#airport_select_to').val( ui.item.group + ', ' + ui.item.value );
// $('#airport_select_to_value').val( ui.item.value );
},
select: function( event, ui ) {
event.preventDefault();
$('#airport_select_to').val( ui.item.group + ', ' + ui.item.value );
$('#airport_select_to_value').val( ui.item.value );
picker_from.show();
}
})
.autocomplete( 'widget' ).addClass( 'kupibilet-finder__autocomplete' );
const picker_from = new easepick.create({
element: '#from_date',
css: [
'/wp-content/plugins/kupibilet/assets/easepick/index.css'
],
zIndex: 10,
lang: 'ru-RU',
format: 'DD.MM.YYYY',
calendars: 2,
grid: 2,
RangePlugin: {
strict: false,
tooltip: true,
locale: {
zero: 'дней', one: 'день', two: 'дня', few: 'дня', many: 'дней'
},
elementEnd: '#to_date'
},
LockPlugin: {
minDate: Date.now()
},
plugins: [
'RangePlugin', 'LockPlugin'
],
setup(picker) {
picker.on('select', (e) => {
const DateTime = easepick.DateTime;
if( e.detail.start !== null ) {
let from_date = new DateTime(e.detail.start);
from_date_outer = from_date.format( 'DDMMM' ).toUpperCase();
}
if( e.detail.end !== null ) {
let to_date = new DateTime(e.detail.end);
to_date_outer = to_date.format( 'DDMMM' ).toUpperCase();
}
});
}
});
$('#airport_select_from').click(function() {
_paq.push(['trackEvent', 'KupibiletWidget', 'click_airport_select_from', 'airport_select_from']);
if( $('#airport_select_from_value').val().length == 0 ) {
$('#airport_select_from').autocomplete('search', 'Москва');
}
});
$('#airport_select_to').click(function() {
_paq.push(['trackEvent', 'KupibiletWidget', 'click_airport_select_to', 'airport_select_to']);
if( $('#airport_select_from_value').val().length == 0 && $('#airport_select_to_value').val().length == 0 ) {
$('#airport_select_to').autocomplete('search', 'Сочи');
}
});
$('#from_date').click(function() {
_paq.push(['trackEvent', 'KupibiletWidget', 'click_from_date', 'from_date']);
});
$('#to_date').click(function() {
_paq.push(['trackEvent', 'KupibiletWidget', 'click_to_date', 'to_date']);
});
$(".kupibilet-finder__find_button input[type='button']").click(function() {
_paq.push(['trackEvent', 'KupibiletWidget', 'click_find_button', 'find_button']);
if( from_date_outer.length && $('#airport_select_from_value').val().length && $('#airport_select_to_value').val().length ) {
outerlink = 'Y100';
outerlink += from_date_outer;
outerlink += $('#airport_select_from_value').val();
outerlink += $('#airport_select_to_value').val();
}
if( to_date_outer.length ) {
outerlink += to_date_outer;
}
if( outerlink.length ) {
window.open( 'https://www.kupibilet.ru/search/' + outerlink + '?agent=roem_ru' );
} else {
$('#airport_select_from').focus();
}
});
});
});