Модуль вызова Prestashop AJAX

Поэтому я не могу заставить этот модуль prestashop работать для быстрого просмотра, который я пытаюсь добавить по клику для каждого продукта.

У меня есть модуль в базовом каталоге /modules/quicklook.

Файлы следующие

/модули/quicklook.php

class QuickLook extends Module {

private $_html= '';

function __construct() {
    $this->name = 'quicklook';
    $this->tab = 'other';
    $this->version = '0.2.0';
    $this->author = 'Carl';
    parent::__construct();
    $this->displayName = $this->l('Quick Look');
    $this->description = $this->l('AJAX Quick Look');
}

public function install() {
    parent::install();
    if(!$this->registerHook('header')) return false;
    return true;
}

public function getContent()
                        {
                                $this->_displayForm();
                                return $this->_html;
                        }



public function ajaxCall() {

                $this->smartyOutputContent($this->getTemplatePath() . 'quicklook.tpl');
        }

} 

/модули/quicklook.tpl

Включает в себя все из product.tpl.

/modules/quicklook-ajax.tpl включает:

include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../init.php');
include(dirname(__FILE__).'/quicklook.php');

$quicklook = new QuickLook();
echo $quicklook->ajaxCall();

Затем, чтобы вызвать модуль, я добавил это в product-list.tpl:

<script type="text/javascript">
function QuickLook() {
        $.ajax({
                                        url: '{$base_dir}modules/quicklook/quicklook-ajax.php',
                                        type: 'get',
                                        data: 'ajax=true',
                                        success: function(data) {
                                                console.log('success');
                                                $('#ajax').text(data);
                                        }
                                });
    return false;
    }
</script>

Потом к ссылке на каждый товар добавляю

onclick="QuickLook();"

я собираюсь

Failed to load resource: the server responded with a status of 404 (Not Found) 

Для undefined.. И продукт не загружается.

Итак, в основном я пытаюсь, чтобы ссылка href для каждого продукта выполняла javascript, который вызывает файл моста ajax, который затем вызывает quicklook.php, который затем вызывает quicklook.tpl, который показывает продукт, надеюсь, мой ход мыслей правильный (это это моя первая попытка модуля!).

Был бы очень признателен за некоторые указания в правильном направлении. На данный момент я не уверен, что происходит не так. :(


person Community    schedule 29.08.2013    source источник


Ответы (1)


1) в первую очередь проверьте наличие файла quicklook-ajax.php.

2) проверьте возможность получения доступа через url: {$base_dir}modules/quicklook/quicklook-ajax.php, иначе тоже получите ошибку 404.

3) лучше всего создать для этой цели собственный контроллер (как это сделать: http://blog.belvg.com/how-to-implement-a-controller.html) и использует Link::getModuleLink() для получения URL.

С уважением

person Alexander Simonchik    schedule 29.08.2013
comment
Здравствуйте, Александр, большое спасибо за ответ. Ошибка 404 на самом деле исчезла, так как я думаю, что она была связана с лайтбоксом, который я использовал, но теперь я переключился на Fancybox, уже встроенный в Prestashop. Итак, теперь я получаю успех в консоли, но мне не удается загрузить ресурс в лайтбоксе. Я использую '$(a#single_image).fancybox();' а затем по ссылке с помощью '‹a onclick=QuickLook() id=single_image title={$product.name|escape:'htmlall':'UTF-8'} ›{$product.name|escape:'htmlall': 'UTF-8'|truncate:26:'...':true}‹/a›'. Может быть, проблема с моим вызовом AJAX через Javascript? - person ; 01.09.2013