问题是使用jQuery插件。这是AjaxUpload这似乎是由不同的开发人员(完全)和重做(完全)接管,并且原始(旧)文档的链接已经完全失效。
嗯,探索那jQuery插件,我发现,它以这种方式工作后:在ptoduct.tpl
你可以看到:
<?php foreach ($options as $option) { ?>
<?php if ($option['type'] == 'file') { ?>
<script type="text/javascript"><!--
new AjaxUpload('#button-option-<?php echo $option['product_option_id']; ?>', {
//...
});
//--></script>
<?php } ?>
<?php } ?>
这意味着,对于文件类型的每个选项这个AjaxUpload被实例化。基本上它只创建一个DIV,其中包含输入为0的不透明度的FILE类型的输入,该输出在上传文件按钮上方呈现。这意味着当用户点击上传文件时,他点击了FILE类型的INPUT(不知道这一点)。现在,看着我的代码可以看到,有没有可能设置该属性accept="image/*"
因为有这个(原代码)不支持:
_createInput: function(){
var self = this;
var input = document.createElement("input");
input.setAttribute('type', 'file');
input.setAttribute('name', this._settings.name);
addStyles(input, {
// ...
});
// ...
},
所以,现在如果你想添加这个支持,你只需要修改这个代码这个(文件:catalog/view/javascript/jquery/ajaxupload.js
,围绕线350):
var input = document.createElement("input");
input.setAttribute('type', 'file');
input.setAttribute('name', this._settings.name);
if (this._settings.accept) {
input.setAttribute('accept', this._settings.accept);
}
而且在product.tpl
更改插件initializiation代码:
<?php foreach ($options as $option) { ?>
<?php if ($option['type'] == 'file') { ?>
<script type="text/javascript"><!--
new AjaxUpload('#button-option-<?php echo $option['product_option_id']; ?>', {
<?php if ($option['product_option_id'] == <IMAGE_FILE_OPTION_ID>) { ?>
accept: 'image/*',
<?php } else if ($option['product_option_id'] == <VIDEO_FILE_OPTION_ID>) { ?>
accept: 'video/*',
<?php } ?>
//...
});
//--></script>
<?php } ?>
<?php } ?>
这应该够了。
这听起来不错,有点作品。首先我必须添加一个来自其他的,如果没有得到意外的其他错误。我还有其他问题,如果其他语句。基本上,当我将它添加到文件并上传时,它不允许我单击按钮。只有我输入的第一个作品。如果我删除else if语句,它们都起作用(尽管它不限制其中之一,因为代码不在那里)。是否有一个原因,两个命令不适用于ajax代码? – MattM
<?php if($ option ['product_option_id'] == 228){?> \t \t accept:'video/*', <?php} elseif($ option ['product_option_id'] == 227){ ?> \t \t accept:'image/*'; – MattM
以下网址为:http://zing-cards.com/dev/storefront/index.php?route=product/product&path=59&product_id=50 – MattM