Kosjak76 Опубликовано 19 июля, 2014 Жалоба Поделиться Опубликовано 19 июля, 2014 Для всех, кто использует НЕСТАНДАРТНУЮ Симплу с доработками:С вероятностью 90% вам не удастся обновиться простой заменой файлов.Потому что эти файлы подходят только к стандартной Симпле. Ссылка на сообщение Поделиться на другие сайты
Djep Опубликовано 19 июля, 2014 Жалоба Поделиться Опубликовано 19 июля, 2014 Как вариант для нестандартной Симплы с доработками, попробуйте заменить simpla/ajax/get_info.php, а simpla/design/html/product.tpl весь можно не менять, только заменить после{* On document load *}кусок кода, между тегами {literal} {/literal} {* On document load *} {literal} {/literal} на вот этот <script src="design/js/autocomplete/jquery.autocomplete-min.js"></script> <script> $(function() { // Добавление категории $('#product_categories .add').click(function() { $("#product_categories ul li:last").clone(false).appendTo('#product_categories ul').fadeIn('slow').find("select[name*=categories]:last").focus(); $("#product_categories ul li:last span.add").hide(); $("#product_categories ul li:last span.delete").show(); return false; }); // Удаление категории $("#product_categories .delete").live('click', function() { $(this).closest("li").fadeOut(200, function() { $(this).remove(); }); return false; }); // Сортировка вариантов $("#variants_block").sortable({ items: '#variants ul' , axis: 'y', cancel: '#header', handle: '.move_zone' }); // Сортировка вариантов $("table.related_products").sortable({ items: 'tr' , axis: 'y', cancel: '#header', handle: '.move_zone' }); // Сортировка связанных товаров $(".sortable").sortable({ items: "div.row", tolerance:"pointer", scrollSensitivity:40, opacity:0.7, handle: '.move_zone' }); // Сортировка изображений $(".images ul").sortable({ tolerance: 'pointer'}); // Удаление изображений $(".images a.delete").live('click', function() { $(this).closest("li").fadeOut(200, function() { $(this).remove(); }); return false; }); // Загрузить изображение с компьютера $('#upload_image').click(function() { $("<input class='upload_image' name=images[] type=file multiple accept='image/jpeg,image/png,image/gif'>").appendTo('div#add_image').focus().click(); }); // Или с URL $('#add_image_url').click(function() { $("<input class='remote_image' name=images_urls[] type=text value='http://'>").appendTo('div#add_image').focus().select(); }); // Или перетаскиванием if(window.File && window.FileReader && window.FileList) { $("#dropZone").show(); $("#dropZone").on('dragover', function (e){ $(this).css('border', '1px solid #8cbf32'); }); $(document).on('dragenter', function (e){ $("#dropZone").css('border', '1px dotted #8cbf32').css('background-color', '#c5ff8d'); }); dropInput = $('.dropInput').last().clone(); function handleFileSelect(evt){ var files = evt.target.files; // FileList object // Loop through the FileList and render image files as thumbnails. for (var i = 0, f; f = files[i]; i++) { // Only process image files. if (!f.type.match('image.*')) { continue; } var reader = new FileReader(); // Closure to capture the file information. reader.onload = (function(theFile) { return function(e) { // Render thumbnail. $("<li class=wizard><a href='' class='delete'><img src='design/images/cross-circle-frame.png'></a><img onerror='$(this).closest(\"li\").remove();' src='"+e.target.result+"' /><input name=images_urls[] type=hidden value='"+theFile.name+"'></li>").appendTo('div .images ul'); temp_input = dropInput.clone(); $('.dropInput').hide(); $('#dropZone').append(temp_input); $("#dropZone").css('border', '1px solid #d0d0d0').css('background-color', '#ffffff'); clone_input.show(); }; })(f); // Read in the image file as a data URL. reader.readAsDataURL(f); } } $('.dropInput').live("change", handleFileSelect); }; // Удаление варианта $('a.del_variant').click(function() { if($("#variants ul").size()>1) { $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); } else { $('#variants_block .variant_name input[name*=variant][name*=name]').val(''); $('#variants_block .variant_name').hide('slow'); $('#variants_block').addClass('single_variant'); } return false; }); // Загрузить файл к варианту $('#variants_block a.add_attachment').click(function() { $(this).hide(); $(this).closest('li').find('div.browse_attachment').show('fast'); $(this).closest('li').find('input[name*=attachment]').attr('disabled', false); return false; }); // Удалить файл к варианту $('#variants_block a.remove_attachment').click(function() { closest_li = $(this).closest('li'); closest_li.find('.attachment_name').hide('fast'); $(this).hide('fast'); closest_li.find('input[name*=delete_attachment]').val('1'); closest_li.find('a.add_attachment').show('fast'); return false; }); // Добавление варианта var variant = $('#new_variant').clone(true); $('#new_variant').remove().removeAttr('id'); $('#variants_block span.add').click(function() { if(!$('#variants_block').is('.single_variant')) { $(variant).clone(true).appendTo('#variants').fadeIn('slow').find("input[name*=variant][name*=name]").focus(); } else { $('#variants_block .variant_name').show('slow'); $('#variants_block').removeClass('single_variant'); } return false; }); function show_category_features(category_id) { $('ul.prop_ul').empty(); $.ajax({ url: "ajax/get_features.php", data: {category_id: category_id, product_id: $("input[name=id]").val()}, dataType: 'json', success: function(data){ for(i=0; i<data.length; i++) { feature = data[i]; line = $("<li><label class=property></label><input class='simpla_inp' type='text'/></li>"); var new_line = line.clone(true); new_line.find("label.property").text(feature.name); new_line.find("input").attr('name', "options["+feature.id+"]").val(feature.value); new_line.appendTo('ul.prop_ul').find("input") .autocomplete({ serviceUrl:'ajax/options_autocomplete.php', minChars:0, params: {feature_id:feature.id}, noCache: false }); } } }); return false; } // Изменение набора свойств при изменении категории $('select[name="categories[]"]:first').change(function() { show_category_features($("option:selected",this).val()); }); // Автодополнение свойств $('ul.prop_ul input[name*=options]').each(function(index) { feature_id = $(this).closest('li').attr('feature_id'); $(this).autocomplete({ serviceUrl:'ajax/options_autocomplete.php', minChars:0, params: {feature_id:feature_id}, noCache: false }); }); // Добавление нового свойства товара var new_feature = $('#new_feature').clone(true); $('#new_feature').remove().removeAttr('id'); $('#add_new_feature').click(function() { $(new_feature).clone(true).appendTo('ul.new_features').fadeIn('slow').find("input[name*=new_feature_name]").focus(); return false; }); // Удаление связанного товара $(".related_products a.delete").live('click', function() { $(this).closest("div.row").fadeOut(200, function() { $(this).remove(); }); return false; }); // Добавление связанного товара var new_related_product = $('#new_related_product').clone(true); $('#new_related_product').remove().removeAttr('id'); $("input#related_products").autocomplete({ serviceUrl:'ajax/search_products.php', minChars:0, noCache: false, onSelect: function(suggestion){ $("input#related_products").val('').focus().blur(); new_item = new_related_product.clone().appendTo('.related_products'); new_item.removeAttr('id'); new_item.find('a.related_product_name').html(suggestion.data.name); new_item.find('a.related_product_name').attr('href', 'index.php?module=ProductAdmin&id='+suggestion.data.id); new_item.find('input[name*="related_products"]').val(suggestion.data.id); if(suggestion.data.image) new_item.find('img.product_icon').attr("src", suggestion.data.image); else new_item.find('img.product_icon').remove(); new_item.show(); }, formatResult: function(suggestions, currentValue){ var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')'; return (suggestions.data.image?"<img align=absmiddle src='"+suggestions.data.image+"'> ":'') + suggestions.value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>'); } }); // infinity $("input[name*=variant][name*=stock]").focus(function() { if($(this).val() == '?') $(this).val(''); return false; }); $("input[name*=variant][name*=stock]").blur(function() { if($(this).val() == '') $(this).val('?'); }); // Волшебные изображения name_changed = false; $("input[name=name]").change(function() { name_changed = true; images_loaded = 0; }); images_num = 8; images_loaded = 0; old_wizar_dicon_src = $('#images_wizard img').attr('src'); $('#images_wizard').click(function() { $('#images_wizard img').attr('src', 'design/images/loader.gif'); if(name_changed) $('div.images ul li.wizard').remove(); name_changed = false; key = $('input[name=name]').val(); $.ajax({ url: "ajax/get_images.php", data: {keyword: key, start: images_loaded}, dataType: 'json', success: function(data){ for(i=0; i<Math.min(data.length, images_num); i++) { image_url = data[i]; $("<li class=wizard><a href='' class='delete'><img src='design/images/cross-circle-frame.png'></a><a href='"+image_url+"' target=_blank><img onerror='$(this).closest(\"li\").remove();' src='"+image_url+"' /><input name=images_urls[] type=hidden value='"+image_url+"'></a></li>").appendTo('div .images ul'); } $('#images_wizard img').attr('src', old_wizar_dicon_src); images_loaded += images_num; } }); return false; }); // Волшебное описание name_changed = false; captcha_code = ''; $("input[name=name]").change(function() { name_changed = true; }); old_prop_wizard_icon_src = $('#properties_wizard img').attr('src'); $('#properties_wizard').click(function() { $('#properties_wizard img').attr('src', 'design/images/loader.gif'); $('#captcha_form').remove(); if(name_changed) $('div.images ul li.wizard').remove(); name_changed = false; key = $('input[name=name]').val(); $.ajax({ url: "ajax/get_info.php", data: {keyword: key, captcha: captcha_code}, dataType: 'json', success: function(data){ captcha_code = ''; $('#properties_wizard img').attr('src', old_prop_wizard_icon_src); // Если запрашивают капчу if(data.captcha) { captcha_form = $("<form id='captcha_form'><img src='data:image/png;base64,"+data.captcha+"' align='absmiddle'><input id='captcha_input' type=text><input type=submit value='Ok'></form>"); $("#properties_wizard").parent().append(captcha_form); $('#captcha_input').focus(); captcha_form.submit(function() { captcha_code = $('#captcha_input').val(); $(this).remove(); $('#properties_wizard').click(); return false; }); } else if(data.product) { $('li#new_feature').remove(); for(i=0; i<data.product.options.length; i++) { option_name = data.product.options[i].name; option_value = data.product.options[i].value; // Добавление нового свойства товара exists = false; if(!$('label.property:visible').filter(function(){ return $(this).text().toLowerCase() === option_name.toLowerCase();}).closest('li').find('input[name*=options]').val(option_value).length) { f = $(new_feature).clone(true); f.find('input[name*=new_features_names]').val(option_name); f.find('input[name*=new_features_values]').val(option_value); f.appendTo('ul.new_features').fadeIn('slow').find("input[name*=new_feature_name]"); } } } }, error: function(xhr, textStatus, errorThrown){ alert("Error: " +textStatus); } }); return false; }); // Автозаполнение мета-тегов meta_title_touched = true; meta_keywords_touched = true; meta_description_touched = true; url_touched = true; if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '') meta_title_touched = false; if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '') meta_keywords_touched = false; if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '') meta_description_touched = false; if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '') url_touched = false; $('input[name="meta_title"]').change(function() { meta_title_touched = true; }); $('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; }); $('textarea[name="meta_description"]').change(function() { meta_description_touched = true; }); $('input[name="url"]').change(function() { url_touched = true; }); $('input[name="name"]').keyup(function() { set_meta(); }); $('select[name="brand_id"]').change(function() { set_meta(); }); $('select[name="categories[]"]').change(function() { set_meta(); }); }); function set_meta() { if(!meta_title_touched) $('input[name="meta_title"]').val(generate_meta_title()); if(!meta_keywords_touched) $('input[name="meta_keywords"]').val(generate_meta_keywords()); if(!meta_description_touched) $('textarea[name="meta_description"]').val(generate_meta_description()); if(!url_touched) $('input[name="url"]').val(generate_url()); } function generate_meta_title() { name = $('input[name="name"]').val(); return name; } function generate_meta_keywords() { name = $('input[name="name"]').val(); result = name; brand = $('select[name="brand_id"] option:selected').attr('brand_name'); if(typeof(brand) == 'string' && brand!='') result += ', '+brand; $('select[name="categories[]"]').each(function(index) { c = $(this).find('option:selected').attr('category_name'); if(typeof(c) == 'string' && c != '') result += ', '+c; }); return result; } function generate_meta_description() { if(typeof(tinyMCE.get("annotation")) =='object') { description = tinyMCE.get("annotation").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512); return description; } else return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512); } function generate_url() { url = $('input[name="name"]').val(); url = url.replace(/[\s]+/gi, '-'); url = translit(url); url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase(); return url; } function translit(str) { var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-") var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-") var res = ''; for(var i=0, l=str.length; i<l; i++) { var s = str.charAt(i), n = ru.indexOf(s); if(n >= 0) { res += en[n]; } else { res += s; } } return res; } </script> <style> .autocomplete-suggestions{ background-color: #ffffff; overflow: hidden; border: 1px solid #e0e0e0; overflow-y: auto; } .autocomplete-suggestions .autocomplete-suggestion{cursor: default;} .autocomplete-suggestions .selected { background:#F0F0F0; } .autocomplete-suggestions div { padding:2px 5px; white-space:nowrap; } .autocomplete-suggestions strong { font-weight:normal; color:#3399FF; } </style> Ссылка на сообщение Поделиться на другие сайты
Djep Опубликовано 19 июля, 2014 Жалоба Поделиться Опубликовано 19 июля, 2014 Как вариант для нестандартной Симплы с доработками, попробуйте заменить simpla/ajax/get_info.php, а simpla/design/html/product.tpl весь можно не менять, только заменить после{* On document load *}кусок кода, между тегами {literal} {/literal} {* On document load *} {literal} {/literal} на вот этот <script src="design/js/autocomplete/jquery.autocomplete-min.js"></script> <script> $(function() { // Добавление категории $('#product_categories .add').click(function() { $("#product_categories ul li:last").clone(false).appendTo('#product_categories ul').fadeIn('slow').find("select[name*=categories]:last").focus(); $("#product_categories ul li:last span.add").hide(); $("#product_categories ul li:last span.delete").show(); return false; }); // Удаление категории $("#product_categories .delete").live('click', function() { $(this).closest("li").fadeOut(200, function() { $(this).remove(); }); return false; }); // Сортировка вариантов $("#variants_block").sortable({ items: '#variants ul' , axis: 'y', cancel: '#header', handle: '.move_zone' }); // Сортировка вариантов $("table.related_products").sortable({ items: 'tr' , axis: 'y', cancel: '#header', handle: '.move_zone' }); // Сортировка связанных товаров $(".sortable").sortable({ items: "div.row", tolerance:"pointer", scrollSensitivity:40, opacity:0.7, handle: '.move_zone' }); // Сортировка изображений $(".images ul").sortable({ tolerance: 'pointer'}); // Удаление изображений $(".images a.delete").live('click', function() { $(this).closest("li").fadeOut(200, function() { $(this).remove(); }); return false; }); // Загрузить изображение с компьютера $('#upload_image').click(function() { $("<input class='upload_image' name=images[] type=file multiple accept='image/jpeg,image/png,image/gif'>").appendTo('div#add_image').focus().click(); }); // Или с URL $('#add_image_url').click(function() { $("<input class='remote_image' name=images_urls[] type=text value='http://'>").appendTo('div#add_image').focus().select(); }); // Или перетаскиванием if(window.File && window.FileReader && window.FileList) { $("#dropZone").show(); $("#dropZone").on('dragover', function (e){ $(this).css('border', '1px solid #8cbf32'); }); $(document).on('dragenter', function (e){ $("#dropZone").css('border', '1px dotted #8cbf32').css('background-color', '#c5ff8d'); }); dropInput = $('.dropInput').last().clone(); function handleFileSelect(evt){ var files = evt.target.files; // FileList object // Loop through the FileList and render image files as thumbnails. for (var i = 0, f; f = files[i]; i++) { // Only process image files. if (!f.type.match('image.*')) { continue; } var reader = new FileReader(); // Closure to capture the file information. reader.onload = (function(theFile) { return function(e) { // Render thumbnail. $("<li class=wizard><a href='' class='delete'><img src='design/images/cross-circle-frame.png'></a><img onerror='$(this).closest(\"li\").remove();' src='"+e.target.result+"' /><input name=images_urls[] type=hidden value='"+theFile.name+"'></li>").appendTo('div .images ul'); temp_input = dropInput.clone(); $('.dropInput').hide(); $('#dropZone').append(temp_input); $("#dropZone").css('border', '1px solid #d0d0d0').css('background-color', '#ffffff'); clone_input.show(); }; })(f); // Read in the image file as a data URL. reader.readAsDataURL(f); } } $('.dropInput').live("change", handleFileSelect); }; // Удаление варианта $('a.del_variant').click(function() { if($("#variants ul").size()>1) { $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); } else { $('#variants_block .variant_name input[name*=variant][name*=name]').val(''); $('#variants_block .variant_name').hide('slow'); $('#variants_block').addClass('single_variant'); } return false; }); // Загрузить файл к варианту $('#variants_block a.add_attachment').click(function() { $(this).hide(); $(this).closest('li').find('div.browse_attachment').show('fast'); $(this).closest('li').find('input[name*=attachment]').attr('disabled', false); return false; }); // Удалить файл к варианту $('#variants_block a.remove_attachment').click(function() { closest_li = $(this).closest('li'); closest_li.find('.attachment_name').hide('fast'); $(this).hide('fast'); closest_li.find('input[name*=delete_attachment]').val('1'); closest_li.find('a.add_attachment').show('fast'); return false; }); // Добавление варианта var variant = $('#new_variant').clone(true); $('#new_variant').remove().removeAttr('id'); $('#variants_block span.add').click(function() { if(!$('#variants_block').is('.single_variant')) { $(variant).clone(true).appendTo('#variants').fadeIn('slow').find("input[name*=variant][name*=name]").focus(); } else { $('#variants_block .variant_name').show('slow'); $('#variants_block').removeClass('single_variant'); } return false; }); function show_category_features(category_id) { $('ul.prop_ul').empty(); $.ajax({ url: "ajax/get_features.php", data: {category_id: category_id, product_id: $("input[name=id]").val()}, dataType: 'json', success: function(data){ for(i=0; i<data.length; i++) { feature = data[i]; line = $("<li><label class=property></label><input class='simpla_inp' type='text'/></li>"); var new_line = line.clone(true); new_line.find("label.property").text(feature.name); new_line.find("input").attr('name', "options["+feature.id+"]").val(feature.value); new_line.appendTo('ul.prop_ul').find("input") .autocomplete({ serviceUrl:'ajax/options_autocomplete.php', minChars:0, params: {feature_id:feature.id}, noCache: false }); } } }); return false; } // Изменение набора свойств при изменении категории $('select[name="categories[]"]:first').change(function() { show_category_features($("option:selected",this).val()); }); // Автодополнение свойств $('ul.prop_ul input[name*=options]').each(function(index) { feature_id = $(this).closest('li').attr('feature_id'); $(this).autocomplete({ serviceUrl:'ajax/options_autocomplete.php', minChars:0, params: {feature_id:feature_id}, noCache: false }); }); // Добавление нового свойства товара var new_feature = $('#new_feature').clone(true); $('#new_feature').remove().removeAttr('id'); $('#add_new_feature').click(function() { $(new_feature).clone(true).appendTo('ul.new_features').fadeIn('slow').find("input[name*=new_feature_name]").focus(); return false; }); // Удаление связанного товара $(".related_products a.delete").live('click', function() { $(this).closest("div.row").fadeOut(200, function() { $(this).remove(); }); return false; }); // Добавление связанного товара var new_related_product = $('#new_related_product').clone(true); $('#new_related_product').remove().removeAttr('id'); $("input#related_products").autocomplete({ serviceUrl:'ajax/search_products.php', minChars:0, noCache: false, onSelect: function(suggestion){ $("input#related_products").val('').focus().blur(); new_item = new_related_product.clone().appendTo('.related_products'); new_item.removeAttr('id'); new_item.find('a.related_product_name').html(suggestion.data.name); new_item.find('a.related_product_name').attr('href', 'index.php?module=ProductAdmin&id='+suggestion.data.id); new_item.find('input[name*="related_products"]').val(suggestion.data.id); if(suggestion.data.image) new_item.find('img.product_icon').attr("src", suggestion.data.image); else new_item.find('img.product_icon').remove(); new_item.show(); }, formatResult: function(suggestions, currentValue){ var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')'; return (suggestions.data.image?"<img align=absmiddle src='"+suggestions.data.image+"'> ":'') + suggestions.value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>'); } }); // infinity $("input[name*=variant][name*=stock]").focus(function() { if($(this).val() == '?') $(this).val(''); return false; }); $("input[name*=variant][name*=stock]").blur(function() { if($(this).val() == '') $(this).val('?'); }); // Волшебные изображения name_changed = false; $("input[name=name]").change(function() { name_changed = true; images_loaded = 0; }); images_num = 8; images_loaded = 0; old_wizar_dicon_src = $('#images_wizard img').attr('src'); $('#images_wizard').click(function() { $('#images_wizard img').attr('src', 'design/images/loader.gif'); if(name_changed) $('div.images ul li.wizard').remove(); name_changed = false; key = $('input[name=name]').val(); $.ajax({ url: "ajax/get_images.php", data: {keyword: key, start: images_loaded}, dataType: 'json', success: function(data){ for(i=0; i<Math.min(data.length, images_num); i++) { image_url = data[i]; $("<li class=wizard><a href='' class='delete'><img src='design/images/cross-circle-frame.png'></a><a href='"+image_url+"' target=_blank><img onerror='$(this).closest(\"li\").remove();' src='"+image_url+"' /><input name=images_urls[] type=hidden value='"+image_url+"'></a></li>").appendTo('div .images ul'); } $('#images_wizard img').attr('src', old_wizar_dicon_src); images_loaded += images_num; } }); return false; }); // Волшебное описание name_changed = false; captcha_code = ''; $("input[name=name]").change(function() { name_changed = true; }); old_prop_wizard_icon_src = $('#properties_wizard img').attr('src'); $('#properties_wizard').click(function() { $('#properties_wizard img').attr('src', 'design/images/loader.gif'); $('#captcha_form').remove(); if(name_changed) $('div.images ul li.wizard').remove(); name_changed = false; key = $('input[name=name]').val(); $.ajax({ url: "ajax/get_info.php", data: {keyword: key, captcha: captcha_code}, dataType: 'json', success: function(data){ captcha_code = ''; $('#properties_wizard img').attr('src', old_prop_wizard_icon_src); // Если запрашивают капчу if(data.captcha) { captcha_form = $("<form id='captcha_form'><img src='data:image/png;base64,"+data.captcha+"' align='absmiddle'><input id='captcha_input' type=text><input type=submit value='Ok'></form>"); $("#properties_wizard").parent().append(captcha_form); $('#captcha_input').focus(); captcha_form.submit(function() { captcha_code = $('#captcha_input').val(); $(this).remove(); $('#properties_wizard').click(); return false; }); } else if(data.product) { $('li#new_feature').remove(); for(i=0; i<data.product.options.length; i++) { option_name = data.product.options[i].name; option_value = data.product.options[i].value; // Добавление нового свойства товара exists = false; if(!$('label.property:visible').filter(function(){ return $(this).text().toLowerCase() === option_name.toLowerCase();}).closest('li').find('input[name*=options]').val(option_value).length) { f = $(new_feature).clone(true); f.find('input[name*=new_features_names]').val(option_name); f.find('input[name*=new_features_values]').val(option_value); f.appendTo('ul.new_features').fadeIn('slow').find("input[name*=new_feature_name]"); } } } }, error: function(xhr, textStatus, errorThrown){ alert("Error: " +textStatus); } }); return false; }); // Автозаполнение мета-тегов meta_title_touched = true; meta_keywords_touched = true; meta_description_touched = true; url_touched = true; if($('input[name="meta_title"]').val() == generate_meta_title() || $('input[name="meta_title"]').val() == '') meta_title_touched = false; if($('input[name="meta_keywords"]').val() == generate_meta_keywords() || $('input[name="meta_keywords"]').val() == '') meta_keywords_touched = false; if($('textarea[name="meta_description"]').val() == generate_meta_description() || $('textarea[name="meta_description"]').val() == '') meta_description_touched = false; if($('input[name="url"]').val() == generate_url() || $('input[name="url"]').val() == '') url_touched = false; $('input[name="meta_title"]').change(function() { meta_title_touched = true; }); $('input[name="meta_keywords"]').change(function() { meta_keywords_touched = true; }); $('textarea[name="meta_description"]').change(function() { meta_description_touched = true; }); $('input[name="url"]').change(function() { url_touched = true; }); $('input[name="name"]').keyup(function() { set_meta(); }); $('select[name="brand_id"]').change(function() { set_meta(); }); $('select[name="categories[]"]').change(function() { set_meta(); }); }); function set_meta() { if(!meta_title_touched) $('input[name="meta_title"]').val(generate_meta_title()); if(!meta_keywords_touched) $('input[name="meta_keywords"]').val(generate_meta_keywords()); if(!meta_description_touched) $('textarea[name="meta_description"]').val(generate_meta_description()); if(!url_touched) $('input[name="url"]').val(generate_url()); } function generate_meta_title() { name = $('input[name="name"]').val(); return name; } function generate_meta_keywords() { name = $('input[name="name"]').val(); result = name; brand = $('select[name="brand_id"] option:selected').attr('brand_name'); if(typeof(brand) == 'string' && brand!='') result += ', '+brand; $('select[name="categories[]"]').each(function(index) { c = $(this).find('option:selected').attr('category_name'); if(typeof(c) == 'string' && c != '') result += ', '+c; }); return result; } function generate_meta_description() { if(typeof(tinyMCE.get("annotation")) =='object') { description = tinyMCE.get("annotation").getContent().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512); return description; } else return $('textarea[name=annotation]').val().replace(/(<([^>]+)>)/ig," ").replace(/(\ )/ig," ").replace(/^\s+|\s+$/g, '').substr(0, 512); } function generate_url() { url = $('input[name="name"]').val(); url = url.replace(/[\s]+/gi, '-'); url = translit(url); url = url.replace(/[^0-9a-z_\-]+/gi, '').toLowerCase(); return url; } function translit(str) { var ru=("А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я").split("-") var en=("A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch-'-'-Y-y-'-'-E-e-YU-yu-YA-ya").split("-") var res = ''; for(var i=0, l=str.length; i<l; i++) { var s = str.charAt(i), n = ru.indexOf(s); if(n >= 0) { res += en[n]; } else { res += s; } } return res; } </script> <style> .autocomplete-suggestions{ background-color: #ffffff; overflow: hidden; border: 1px solid #e0e0e0; overflow-y: auto; } .autocomplete-suggestions .autocomplete-suggestion{cursor: default;} .autocomplete-suggestions .selected { background:#F0F0F0; } .autocomplete-suggestions div { padding:2px 5px; white-space:nowrap; } .autocomplete-suggestions strong { font-weight:normal; color:#3399FF; } </style> Для сохранения свойств товара, надо заменить в том же product.tpl, например такой код <!-- Свойства товара --> <script> var categories_features = new Array(); {foreach from=$categories_features key=c item=fs} categories_features[{$c}] = Array({foreach from=$fs item=f}'{$f}', {/foreach}0); {/foreach} </script> <div class="block layer" {if !$categories}style='display:none;'{/if}> <h2>Свойства товара <a href="#" id=properties_wizard><img src="design/images/wand.png" alt="Подобрать автоматически" title="Подобрать автоматически"/></a> </h2> <ul class="prop_ul"> {foreach $features as $feature} {assign var=feature_id value=$feature->id} <li feature_id={$feature_id} style='display:none;'><label class=property>{$feature->name}</label><input class="simpla_inp" type="text" name=options[{$feature_id}] value="{$options.$feature_id->value|escape}" /></li> {/foreach} </ul> <!-- Новые свойства --> <ul class=new_features> <li id=new_feature><label class=property><input type=text name=new_features_names[]></label><input class="simpla_inp" type="text" name=new_features_values[] /></li> </ul> <span class="add"><i class="dash_link" id="add_new_feature">Добавить новое свойство</i></span> <input class="button_green button_save" type="submit" name="" value="Сохранить" /> </div> <!-- Свойства товара (The End)--> на вот этот <!-- Свойства товара --> <div class="block layer" {if !$categories}style='display:none;'{/if}> <h2>Свойства товара <a href="#" id=properties_wizard><img src="design/images/wand.png" alt="Подобрать автоматически" title="Подобрать автоматически"/></a> </h2> <ul class="prop_ul"> {foreach $features as $feature} {assign var=feature_id value=$feature->id} <li feature_id={$feature_id}><label class=property>{$feature->name}</label><input class="simpla_inp" type="text" name=options[{$feature_id}] value="{$options.$feature_id->value|escape}" /></li> {/foreach} </ul> <!-- Новые свойства --> <ul class=new_features> <li id=new_feature><label class=property><input type=text name=new_features_names[]></label><input class="simpla_inp" type="text" name=new_features_values[] /></li> </ul> <span class="add"><i class="dash_link" id="add_new_feature">Добавить новое свойство</i></span> <input class="button_green button_save" type="submit" name="" value="Сохранить" /> </div> <!-- Свойства товара (The End)--> Ссылка на сообщение Поделиться на другие сайты
pavnik Опубликовано 19 июля, 2014 Жалоба Поделиться Опубликовано 19 июля, 2014 Решение от Djep у меня сработало для НЕСТАНДАРТНОЙ Симплы с доработками. Благодарю Djep. Ссылка на сообщение Поделиться на другие сайты
FreePM Опубликовано 20 июля, 2014 Жалоба Поделиться Опубликовано 20 июля, 2014 Ребята, у меня установлена чистая симпла, но парсер не срабатывает. Ссылка на сообщение Поделиться на другие сайты
LUN Опубликовано 21 июля, 2014 Жалоба Поделиться Опубликовано 21 июля, 2014 Сегодня появилось... недолгим было счастье Ссылка на сообщение Поделиться на другие сайты
ExtraBash Опубликовано 21 июля, 2014 Жалоба Поделиться Опубликовано 21 июля, 2014 Реята повторю вопрошение.На 2.2.4 директива {debug} выдавала в новом окошке все переменные, используемые в данный момент в данном шаблоне. В версии 2.3.5 это выглядит странно, открывает вместо страницы и то только переменные карты и связанные с открытием конкретного раздела переменные, то биш не выполняет всё, а строит вместо страницы в самом начале из того что запомнил. Не пойму как включить нормальный дебаг. Ссылка на сообщение Поделиться на другие сайты
Djep Опубликовано 22 июля, 2014 Жалоба Поделиться Опубликовано 22 июля, 2014 Ребята, у меня установлена чистая симпла, но парсер не срабатывает. Сегодня появилось... недолгим было счастье Думаю не все так плохо. Попробуйте в get_info.php заменить // Выполняем запрос по адресу $data = curl_exec($ch); if(!$data) { trigger_error(curl_error($ch)); return false; } на вот это // Выполняем запрос по адресу $data = curl_exec($ch); // if(!$data) // { // trigger_error(curl_error($ch)); // return false; // } Ссылка на сообщение Поделиться на другие сайты
LUN Опубликовано 22 июля, 2014 Жалоба Поделиться Опубликовано 22 июля, 2014 Думаю не все так плохо. Попробуйте в get_info.php заменить // Выполняем запрос по адресу $data = curl_exec($ch); if(!$data) { trigger_error(curl_error($ch)); return false; } на вот это // Выполняем запрос по адресу $data = curl_exec($ch); // if(!$data) // { // trigger_error(curl_error($ch)); // return false; // } Спасибо! Все работает! Ссылка на сообщение Поделиться на другие сайты
SHEVA Опубликовано 22 июля, 2014 Жалоба Поделиться Опубликовано 22 июля, 2014 Новая версия Simpla 2.3.6 Яндекс изменил алгоритм выдачи и усилил защиту от парсинга. В связи с этим парсер в Симпле обновлен и стал еще лучше. Скачать новую версию можно тут: http://simplacms.ru/simpla.zip Демо: http://demo.simplacms.ruhttp://demo.simplacms.ru/simpla Как обновить с версии 2.2, 2.3.x: Для обновления обновите все файлы кроме:/config//design//files//simpla/files//simpla/.htaccess/simpla/.passwd Если нужно обновить только парсер - достаточно обновить два файла: /simpla/ajax/get_info.php /simpla/design/html/product.tpl Так же обновление скоро будет доступно на github https://github.com/pikusov/Simpla Что нового:Новый парсер характеристик:улучшеный алгоритм парсинга, парсит больше товаровнастройка региона Яндексанастройка прокси-серверадополнительная защита от банавозможность ввести капчу и продолжить работуОбновлен метод оплаты Яндекс.ДеньгиДобавлен платежный модуль Invoicebox.ruДобавлен платежный модуль AcquiroPayДобавлен платежный модуль PayanywayИсправлена ошибка с отображением выбранных фильтров в списке товаровИсправлена ошибка с удалением заказов в редактировании пользователяДоработана синхронизация характеристик товаров с 1СКак правильно обновить, а то в админке теперь Internal Server Error Ссылка на сообщение Поделиться на другие сайты
SHEVA Опубликовано 22 июля, 2014 Жалоба Поделиться Опубликовано 22 июля, 2014 Разобрался Ссылка на сообщение Поделиться на другие сайты
Aleksey.g84 Опубликовано 23 июля, 2014 Жалоба Поделиться Опубликовано 23 июля, 2014 Ребят....привет...обновился...обновлял не только парсер....все файлы...результат...изменил конечно Config, пытаюсь зайти в админку и пипец...пароль попробовал восстановить, изменил.. и все равно пипец....не входит в админку...в чем может быть проблема?Заранее всем спасибо Ссылка на сообщение Поделиться на другие сайты
pavnik Опубликовано 23 июля, 2014 Жалоба Поделиться Опубликовано 23 июля, 2014 попробуйте переименовать simpla/.htaccess админка откроется без пароля, поменяйте пароль, и переименуйте simpla/.htaccess обратно Ссылка на сообщение Поделиться на другие сайты
Jekas Опубликовано 24 июля, 2014 Жалоба Поделиться Опубликовано 24 июля, 2014 а репост в социальные сети у всех работают при сохранения сообщения в блоге? Ссылка на сообщение Поделиться на другие сайты
Aleksey.g84 Опубликовано 25 июля, 2014 Жалоба Поделиться Опубликовано 25 июля, 2014 вопрос решил..... снес старую симплу и установил новую....)))) Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 28 июля, 2014 Жалоба Поделиться Опубликовано 28 июля, 2014 Нашелся баг в импорте.Импортируем файл CSV на выходе получаем все в нужном порядке без ошибок, далее меняем цену в товаре или товарах этого же CSV файла и заново импортируем, в итоге получаем у всех товаров стертый URL.Решение:Откройте файл simpla/ajax/import.php и замените 2 условия (строка 150): if(isset($item['url'])) $product['url'] = trim($item['url']); elseif(isset($item['name'])) $product['url'] = $this->translit($item['name']); на вот эти: if(!empty($item['url'])) { $product['url'] = trim($item['url']); } elseif(!empty($item['name'])) { $product['url'] = $this->translit($item['name']); } Ссылка на сообщение Поделиться на другие сайты
Matteus Опубликовано 30 июля, 2014 Жалоба Поделиться Опубликовано 30 июля, 2014 Платежный модуль яндекс денег, при попытке перейти к оплате : Магазин передает некорректные параметры. Пожалуйста, обратитесь в службу поддержки магазина. Ссылка на сообщение Поделиться на другие сайты
dolphin Опубликовано 30 июля, 2014 Жалоба Поделиться Опубликовано 30 июля, 2014 как правильно обновится с 2.1.0 до новой версии ? Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 30 июля, 2014 Жалоба Поделиться Опубликовано 30 июля, 2014 Похоже, это никакой не баг. Так задумал разработчик, и это естественно и логично. Если предоставлен файл для импорта, в котором поле url пустое, то импорт честно записывает его как пустое - ибо так повелел админ магазина. Про настоящие баги, связанные с импортом и полем url: http://forum.simplacms.ru/topic/4808-2-импорт-корректировка-url/Корс не тупи. Если не задан URL для товара, то он берется из названия товара и прогоняется через функцию транслит, конечно же если задано название товара. Так действительно правильно, но увы не совсем правильно работает. Выше я описал в чем именно проблема. Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 30 июля, 2014 Жалоба Поделиться Опубликовано 30 июля, 2014 Noxter, не тупи. Все зависит от постановки задачи. Пикусов придумал и реализовал импорт одним способом, а Вы - другим. И тот и и другой способ имеют свои достоинства и недостатки, в одних случаях удобнее один способ, в других - другой. И нет тут никакой проблемы - разве что проблема выбора из разнообразия возможностей реализации.Корс не тупи. Выявлен баг и дано решение исправления этого бага, а не разная реализация совершенно разных персон. Ссылка на сообщение Поделиться на другие сайты
baarseek Опубликовано 31 июля, 2014 Жалоба Поделиться Опубликовано 31 июля, 2014 Неужели модуль оплаты Qiwi у всех работает? Или никто не пользуется? Ссылка на сообщение Поделиться на другие сайты
tled Опубликовано 7 августа, 2014 Жалоба Поделиться Опубликовано 7 августа, 2014 как очистить папку Compiled с помощью php скрипта? по ftp нет прав на ее очистку(( Ссылка на сообщение Поделиться на другие сайты
tled Опубликовано 7 августа, 2014 Жалоба Поделиться Опубликовано 7 августа, 2014 как сделать, чтобы при оплате paypal, автоматически ставился статус оплачен? Ссылка на сообщение Поделиться на другие сайты
daramal Опубликовано 8 августа, 2014 Жалоба Поделиться Опубликовано 8 августа, 2014 Обновил все файлы, а также БД до последней версии..Парсер на локальном работает, а вот на хосте не хочет.В чем может быть проблема? Спасибо за любую инфу. Ссылка на сообщение Поделиться на другие сайты
lazareff Опубликовано 8 августа, 2014 Жалоба Поделиться Опубликовано 8 августа, 2014 Похоже опять что то в яндексе поменяли, по крайней мере перестал работать парсер. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения