Unterstützung für die automatische Vervollständigung im Vorlagenfinder
In diesem Artikel erfährst du, wie du die autocomplete-Funktion in deine Vorlage implementierst. Diese Funktion zeigt dem Kunden eine Liste von Produkten, die am besten zu dem von ihm in die Suchmaschine eingegebenen Ausdruck passen.
Agat
In der Datei partials/common/header.html suchst du nach einem Satz id=”search-form”. Ändere das Element, zu dem diese ID gehört, so, dass es so aussieht:
<form method=“post” id=“search-form” class=“autocomplete-form” autocomplete=“off”>
In der Datei js/init.js suchst du nach einem Satz events:. Füge den obigen Code ein:
autocomplete: function(e){
\\|]*/gi, '');
Am Ende der Datei, direkt unter diesem Code:
$('body').on('blur', 'input', function () {
application.uiCheckLabels();
});
Füge diesen Code ein:
$('body').on('input', '#header-section #search-form.autocomplete-form [name="search"]', function (e) {
if(timeOutAutocomplete!=null){
clearTimeout(timeOutAutocomplete);
timeOutAutocomplete=null;
}
timeOutAutocomplete = setTimeout(function(){
self.autocomplete(e);
}, 300);
});
//variable to clearTimeout in autocomplete function
var timeOutAutocomplete = null;
$('body').on('blur', '#header-section #search-form.autocomplete-form [name="search"]', function () {
setTimeout(function () {
$('.autocomplete').remove();
$('.loader-for-autocomplete').remove();
}, 200);
});
Am Ende der Datei scss/main2.scss fügst du den Code ein:
.autocomplete{
position: absolute;
z-index: 101;
width: 100%;
@media only screen and (max-width: 1024px) {
width: calc(100% - 240px);
}
@media only screen and (max-width: 768px) {
width: calc(100% - 20px);
}
box-shadow: 0px 8px 10px 0px rgba(0, 0, 0, 0.2);
.product{
display: block;
padding: 10px;
background: $bgColor;
border: 1px solid $primaryColor;
border-bottom: none;
font-size: 16px;
color: $bgDarkerColorFont;
&:last-child{
border-bottom: 1px solid $primaryColor;
}
> div{
display: inline-block;
vertical-align: top;
margin-right: 10px;
&:last-child{
margin-right: 0;
}
}
.img{
width: 50px;
height: 50px;
position: relative;
}
img{
max-width: 100%;
max-height: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.names{
width: calc(100% - 50px - 10px);
}
.name{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.price{
margin-top: 5px;
font-size: 12px;
color: $primaryColor;
opacity: 0.63;
}
}
}
Bernstein
In der Datei page/header.html suchst du nach einem Satz SearchForm. Ändere das Element, zu dem diese ID gehört, so, dass es so aussieht:
<form method="post" class="search autocomplete-form" autocomplete="off" id="SearchForm" action="{{ page.Url }}{{ page.QueryString | H}}" >
Am Ende der Datei js/init2.js fügst du diesen Code ein:
Am Ende der Datei scss/main2.scss fügst du diesen Code ein:
.autocomplete{
position: absolute;
top: 43px;
left: 0;
z-index: 101;
width: 100%;
box-shadow: 0px 8px 10px 0px rgba(0, 0, 0, 0.2);
.product{
display: block;
padding: 10px;
background: $bgColor;
border: 1px solid $primaryColor;
border-bottom: none;
font-size: 14px;
color: $secondaryColorFont;
transition: all ease 300ms;
&:last-child{
border-bottom: 1px solid $primaryColor;
}
> div{
display: inline-block;
vertical-align: top;
margin-right: 10px;
&:last-child{
margin-right: 0;
}
}
.img{
width: 50px;
height: 50px;
position: relative;
}
img{
max-width: 100%;
max-height: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.names{
width: calc(100% – 50px – 10px);
}
.name{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.price{
margin-top: 5px;
font-size: 12px;
color: $primaryColor;
opacity: 0.63;
transition: all ease 300ms;
}
&:hover{
background: $primaryColor;
color: $primaryColorFont;
.price{
color: $primaryColorFont;
opacity: 1;
}
}
}
}
Opal
In der Datei page/header.html suchst du nach einem Satz SearchForm. Ändere das Element, zu dem diese ID gehört, so, dass es so aussieht:
<form method=“post” class=“search autocomplete-form” autocomplete=“off” id=“SearchForm” action=“{{ page.Url }}{{ page.QueryString | H}}” >
Am Ende der Datei js/init2.js diesen Code einfügen:
Am Ende der Datei scss/main2.scss fügst du diesen Code ein:
.autocomplete{
position: absolute;
left: calc(50% – 20px);
transform: translateX(-50%);
z-index: 1000;
box-shadow: 0px 8px 10px 0px rgba(0, 0, 0, 0.2);
.product{
display: block;
padding: 10px;
background: $bgColor;
border: 1px solid $primaryColor;
border-bottom: none;
font-size: 16px;
color: $secondaryColorFont;
transition: all 300ms ease;
&:last-child{
border-bottom: 1px solid $primaryColor;
}
> div{
display: inline-block;
vertical-align: top;
margin-right: 10px;
&:last-child{
width: 100px;
margin-right: 0;
text-align: right;
}
}
.img{
width: 50px;
height: 50px;
position: relative;
}
img{
max-width: 100%;
max-height: 100%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.names{
width: calc(100% – 50px – 100px – 20px);
}
.name{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.code{
font-size: 12px;
opacity: 0.63;
}
&:hover{
background: $primaryColor;
color: $primaryColorFont;
}
}
}