Здравствуйте. Установил модуль статусы товаров 1.0 при закидывании файла vqmod главная не открывается ошибка вот такая PHP Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 187 нашел строку но скорее всего не она 'p.model', чуть выше вот это Код: } else { return array(); } просмотрев vqmod файл product_statuses.xml нашел строку со знаком '=>' Код: <operation> <search position="after"><![CDATA[ return array( ]]></search> <add><![CDATA[ 'statuses' => $this->model_catalog_product_status->getHTMLProductStatuses($query->row['product_id']); ]]></add> </operation> подскажите пожалуйста как можно решить проблему.
В коде лишних или недостающих символов не заметил. vqmod последней версии? модуль совместим с версией движка? Как на счет версии php на сервере? Мне кажется что это проблема совместительства. Я устанавливал этот модуль. Никаких проблем не было.
заменить на Код: <operation> <search position="after"><![CDATA[ return array( ]]></search> <add><![CDATA[ 'statuses' => $this->model_catalog_product_status->getHTMLProductStatuses($query->row['product_id']), ]]></add> </operation>
vqmod последняя. а какую лучше версию php выставить т.к. есть возможность выбрать любой --- Добавлено, 19 дек 2014 --- не чего не изменилось таже ошибка
Код: <modification> <id>Product statuses</id> <version>1.0</version> <vqmver>2.1.6</vqmver> <author>sv2109</author> <file name="catalog/controller/product/product.php"> <operation> <search position="after"><![CDATA[ if ($product_info) { ]]></search> <add><![CDATA[ $this->data['statuses'] = $product_info['statuses']['product']; ]]></add> </operation> </file> <file name="catalog/controller/product/category.php"> <operation> <search position="after"><![CDATA[ $this->data['products'][] = array( ]]></search> <add><![CDATA[ 'statuses' => $result['statuses']['category'], ]]></add> </operation> </file> <file name="catalog/model/catalog/product.php"> <operation> <search position="after"><![CDATA[ public function getProduct($product_id) { ]]></search> <add><![CDATA[ $this->load->model('catalog/product_status'); ]]></add> </operation> <operation> <search position="after"><![CDATA[ return array( ]]></search> <add><![CDATA[ 'statuses' => $this->model_catalog_product_status->getHTMLProductStatuses($query->row['product_id']), ]]></add> </operation> </file> <file name="admin/controller/catalog/product.php"> <operation> <search position="before"><![CDATA[ $this->template = 'catalog/product_form.tpl'; ]]></search> <add><![CDATA[ $this->load->language('module/product_status'); $this->data['status_show_in_category'] = $this->language->get('status_show_in_category'); $this->data['status_show_in_product'] = $this->language->get('status_show_in_product'); $this->data['tab_statuses'] = $this->language->get('tab_statuses'); $this->data['status_image'] = $this->language->get('status_image'); $this->data['status_name'] = $this->language->get('status_name'); $this->data['button_add_status'] = $this->language->get('button_add_status'); $this->load->model('catalog/product_status'); if (isset($this->request->get['product_id'])) { $this->data['product_statuses'] = $this->model_catalog_product_status->getProductStatuses($this->request->get['product_id']); } else { $this->data['product_statuses'] = array(); } ]]></add> </operation> </file> <file name="admin/model/catalog/product.php"> <operation> <search position="after"><![CDATA[ public function editProduct($product_id, $data) { ]]></search> <add><![CDATA[ $this->load->model('catalog/product_status'); $this->model_catalog_product_status->addProductStatuses($product_id, $data); ]]></add> </operation> <operation> <search position="after"><![CDATA[ public function deleteProduct($product_id) { ]]></search> <add><![CDATA[ $this->load->model('catalog/product_status'); $this->model_catalog_product_status->deleteProductStatuses($product_id); ]]></add> </operation> <operation> <search position="after"><![CDATA[ $product_id = $this->db->getLastId(); ]]></search> <add><![CDATA[ $this->load->model('catalog/product_status'); $this->model_catalog_product_status->addProductStatuses($product_id, $data); ]]></add> </operation> </file> <file name="admin/view/template/catalog/product_form.tpl"> <operation> <search position="before"><![CDATA[ <div id="tab-discount"> ]]></search> <add><![CDATA[ <div id="tab-statuses"> <table id="status" class="list"> <thead> <tr> <td></td> <td class="left"><?php echo $status_image; ?></td> <td class="left"><?php echo $status_show_in_category; ?></td> <td class="left"><?php echo $status_show_in_product; ?></td> <td class="left"><?php echo $entry_sort_order; ?></td> <td></td> </tr> </thead> <?php $status_row = 0; ?> <?php foreach ($product_statuses as $product_status) { ?> <tbody id="status-row<?php echo $status_row; ?>"> <tr> <td class="left"> <input type="text" name="product_status[<?php echo $status_row; ?>][name]" value="<?php echo $product_status['name']; ?>" /> <input type="hidden" name="product_status[<?php echo $status_row; ?>][status_id]" value="<?php echo $product_status['status_id']; ?>" /> </td> <td class="left status-image"> <img src='<?php echo $product_status['thumb']; ?>' ?> </td> <td class="left status-category"> <input type="checkbox" name="product_status[<?php echo $status_row; ?>][category_show]" value="1" <?php echo isset($product_status['category_show']) && $product_status['category_show'] ? "checked='checked'" : ''; ?>/> </td> <td class="left status-product"> <input type="checkbox" name="product_status[<?php echo $status_row; ?>][product_show]" value="1" <?php echo isset($product_status['product_show']) && $product_status['product_show'] ? "checked='checked'" : ''; ?>/> </td> <td class="left sort-order"> <input type="text" name="product_status[<?php echo $status_row; ?>][sort_order]" value="<?php echo isset($product_status['sort_order']) ? $product_status['sort_order'] : ''; ?>"/> </td> <td class="left"><a onclick="$('#status-row<?php echo $status_row; ?>').remove();" class="button"><?php echo $button_remove; ?></a></td> </tr> </tbody> <?php $status_row++; ?> <?php } ?> <tfoot> <tr> <td colspan="5"></td> <td class="left"><a onclick="addStatus();" class="button"><?php echo $button_add_status; ?></a></td> </tr> </tfoot> </table> <style> .status-autocomplete-list { height: 44px; } .status-autocomplete-list .image { float: left; padding: 0; margin-right: 3px; } .status-autocomplete-list .image img { width: 40px; height: 35px; margin-bottom: 0; } .status-autocomplete-list .name { margin-top: 2px; } </style> <script type="text/javascript"><!-- $(document).ready(function() { $('#tabs a[href="#tab-option"]').after('<a href="#tab-statuses"><?php echo $tab_statuses; ?></a>'); $('#tabs a').tabs(); }); var status_row = <?php echo $status_row; ?>; function addStatus() { html = '<tbody id="status-row' + status_row + '">'; html += ' <tr>'; html += ' <td class="left"><input type="text" name="product_status[' + status_row + '][name]" value="" /><input type="hidden" name="product_status[' + status_row + '][status_id]" value="" /></td>'; html += ' <td class="left status-image"></td>'; html += ' <td class="left status-category"><input type="checkbox" name="product_status[' + status_row + '][category_show]" value="1" checked="checked"/></td>'; html += ' <td class="left status-product"><input type="checkbox" name="product_status[' + status_row + '][product_show]" value="1" checked="checked"/></td>'; html += ' <td class="left sort-order"><input type="text" name="product_status[' + status_row + '][sort_order]" value="" /></td>'; html += ' <td class="left"><a onclick="$(\'#status-row' + status_row + '\').remove();" class="button"><?php echo $button_remove; ?></a></td>'; html += ' </tr>'; html += '</tbody>'; $('#status tfoot').before(html); statusautocomplete(status_row); status_row++; } function statusautocomplete(status_row) { $('input[name=\'product_status[' + status_row + '][name]\']').autocomplete({ delay: 500, source: function(request, response) { $.ajax({ url: 'index.php?route=module/product_status/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request.term), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { url: item.url, thumb: item.thumb, label: item.name, value: item.status_id } })); } }); }, select: function(event, ui) { $('input[name=\'product_status[' + status_row + '][name]\']').attr('value', ui.item.label); $('input[name=\'product_status[' + status_row + '][status_id]\']').attr('value', ui.item.value); $('#status-row' + status_row + ' td.status-image').html('<img src="' + ui.item.thumb + '"/>'); //var name = ui.item.url ? '<a href="' + ui.item.url + '">' + ui.item.label + '</a>' : ui.item.label; //$('#status-row' + status_row + ' td.status-name').html(name); return false; }, focus: function(event, ui) { return false; } }).data( "autocomplete" )._renderItem = function( ul, item ) { var thumb = item.thumb ? '<img src="' + item.thumb + '">' : ''; var attributes = item.attributes ? '<div class="attributes">' + item.attributes + '</div>' : ''; return $( "<li></li>" ) .data( "item.autocomplete", item ) .append( '<a class="status-autocomplete-list"><div class="image">' + thumb + '</div><div class="name">' + item.label + '</div></a>' ) .appendTo( ul ); }; } $('#status tbody').each(function(index, element) { statusautocomplete(index); }); //--></script> </div> ]]></add> </operation> </file> </modification>