Создаем таблицу в БД
CREATE TABLE IF NOT EXISTS `oc_city` (
`city_id` int(11) NOT NULL AUTO_INCREMENT,
`zone_id` int(11) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`free_shipping` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`city_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
В файле catalogviewthemedefaulttemplateaccountregister.tpl после
<script type="text/javascript"><!-- добавляем
var $state = $('#zone_id'), $province = $('#city');
$state.change(function () {
if ($state.val() > 0) {
$province.removeAttr('disabled');
} else {
$province.attr('disabled', 'disabled').val('');
}
}).trigger('change');
$(function(){
function ShowTip(content) {
$("#resSearch").show("slow");
$("#resSearch").html(content);
};
$('#city').autocomplete({
source: function(request, response) {
$.ajax({
url: "s.php",
dataType: "json",
async: true,
data: {
term : request.term,
country : $('#zone_id').val()
},
success: function(data) {
response(data);
}
});
},
select: function(value, data){
if (data.item.free == 0) { ShowTip("Платная доставка. <a href="#">Подробнее</a>"); } else { ShowTip("Бесплатная доставка. <a href="#">Подробнее</a>"); }
},
minLength: 2
}).data('autocomplete')._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( '<a>' + item.label + '</a>' )
.appendTo( ul );
};
});
Так как я не смог разобраться как добавить это в controller движка, я сделал отдельный файл для выборки результатов.
Содержимое s.php в корне сайта
include ('config.php');
if ( !isset($_REQUEST['term']) )
exit;
$dblink = mysql_connect(DB_HOSTNAME,DB_USERNAME,DB_PASSWORD) or die( mysql_error() );
mysql_select_db(DB_DATABASE);
$rs = mysql_query("SELECT `name`, `free_shipping` FROM `".DB_PREFIX."city` WHERE `zone_id`= ".mysql_real_escape_string($_REQUEST['country'])." AND `name` LIKE '%".mysql_real_escape_string($_REQUEST['term']). "%' ORDER BY `name` LIMIT 5", $dblink);
$data = array();
if ( $rs && mysql_num_rows($rs) )
{
while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
{
$data[] = array('value' => $row['name'], 'free' => $row['free_shipping']);
}
}
else $data[] = array('value' => 'Не найдено ничего');
echo json_encode($data);
flush();
Буду благодарен кто поможет файл s.php "втулить" в файл движка ))
Прикрепляю таблицу с небольшим списком городов Украины
base_city.zip