首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prestashop自动完成

Prestashop自动完成
EN

Stack Overflow用户
提问于 2015-12-02 22:05:55
回答 6查看 3.9K关注 0票数 2

我正在尝试添加非常简单的自动完成功能到我的prestashop插件输入。我想要实现的东西是这样的:

city.php

代码语言:javascript
复制
<label for="city">City: </label>

和auto.js

代码语言:javascript
复制
$(function() {
var availableTags = [
  "London",
  "Manchester",
  "Liverpool",
];
$( "#city" ).autocomplete({
  source: availableTags
});

问题是我不知道如何在prestashop中调用jquery库。我正试着在我的addon类中添加类似这样的东西:

代码语言:javascript
复制
$this->context->controller->addJqueryPlugin('autocomplete');

如果没有运气..。

EN

回答 6

Stack Overflow用户

发布于 2015-12-15 19:15:26

在Prestashop 1.6中,使用钩子函数,你可以这样做(实际上我在一个自定义模块中使用它):

全部公共函数$this->context->controller->addCSS('//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css',(){ //Jquery原生Prestashop插件$this->context->controller->addJQueryPlugin('fancybox');//CSS $this->context->controller->addCSS(‘//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css’,‘$this->context->controller->addCSS('//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css',’);

‘hookHeader’);$this->context->controller->addCSS('//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.15.35/css/bootstrap-datetimepicker.css','all');$this->context->controller->addCSS('//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.15.35/css/bootstrap-datetimepicker.min.css','all');//Javascript $this->context->controller->addJS('//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js','all');$this->context->controller->addJS('//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.js','all');$this->context->controller->addJS('//cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.js','all');$this->context->controller->addJS('//cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js','all');$this->context->controller->addJS('//cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/locale/fr.js','all');$this->context->controller->addJS('//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.15.35/js/bootstrap-datetimepicker.min.js','all');}

如你所见,我添加了Fancybox、Bootstrap和DateTimePicker。你应该在js目录中,在你的主题或模块中添加你自己的插件。

在主题中调用插件很容易使用smarty (我猜是$js_dir,或者$tpl_dir)

编辑:

以下是Prestashop中的自动完成示例:

第三方物流:

代码语言:javascript
复制
<!-- Block eversearch module TOP -->
<div id="search_block_top" class="col-sm-4 clearfix">
    <form id="searchbox" method="get" action="{$link->getPageLink('search')|escape:'html':'UTF-8'}" >
        <input type="hidden" name="controller" value="search" />
        <input type="hidden" name="orderby" value="position" />
        <input type="hidden" name="orderway" value="desc" />
        <input class="search_query form-control" type="text" id="search_query_top" name="search_query" placeholder="{l s='Search' mod='blocksearch'}" value="{$search_query|escape:'htmlall':'UTF-8'|stripslashes}" />
        <button type="submit" name="submit_search" class="btn btn-default button-search">
            <span>{l s='Search' mod='blocksearch'}</span>
        </button>
    </form>

下面是使用Jquery的自动补全:

代码语言:javascript
复制
$(document).ready(function(){
//console.log('Autocomplete loaded');
var baseUrl = $('#baseURL').val();
var evertrade_module_dir = baseUrl+'/useful';
var form = $('.ever_search_query_top');
//console.log(baseUrl);
//Autocomplete
$('#ever_search_query_top').autocomplete(evertrade_module_dir+'/ajax_product_list.php', {
    minChars: 1,
    autoFill: true,
    max:20,
    matchContains: true,
    mustMatch:true,
    scroll:false,
    cacheLength:0,
    formatItem: function(item) {
        return item[1];

    }
}).result(function(e,i){ 
    console.log(i);
    if(i != undefined)
        $('#ever_search_query_top').val(i[1]);
        window.location.href = baseUrl+"recherche?orderby=position&orderway=desc&search_query="+i[1]+"";
});

假设你的php文件返回了正确的值。最好使用你自己HTML,在你的主题中覆盖tpl。

票数 3
EN

Stack Overflow用户

发布于 2015-12-03 16:41:20

将" js“文件保存在模块的js文件夹中,并通过$this->addJS(array(_MODULE_DIR_.$this->module->name.'/views/js/yourPlugin.js'));在模块控制器的setMedia函数中设置它

票数 2
EN

Stack Overflow用户

发布于 2015-12-03 06:30:17

在控制器中,您可以使用以下命令添加任何JS文件

代码语言:javascript
复制
$this->addJS(_THEME_JS_DIR_.'index.js');

因此,您可以将此插件放到主题文件夹/js/plugins/autoComplite.js中,并使用$this->addJS(_THEME_JS_DIR_.'plugins/autocomplite.js');添加它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34044757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档