問題是使用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