Jump to content
thirty bees forum

Beeta

Trusted Members
  • Posts

    398
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by Beeta

  1. I'm trying to upgrade my TB 1.0.7 sandbox to 1.0.8 and I'm getting this error: ``` Analyzing the situation... Testing directories... Downloading... (this can take a while) Download complete. Now extracting... File extraction complete. Now backing up files. [Ajax / Server Error for action backupFiles] textStatus: "error " errorThrown:" " jqXHR: " " Archives will come from https://github.com/thirtybees/thirtybees/releases/download/1.0.8/thirtybees-v1.0.8.zip and https://api.thirtybees.com/updates/packs/thirtybees-extra-v1.0.8.zip md5 hashes for core and extra should be resp. 805bf1b9e8ee6abf17e5e32f0b433a9f and cc9ea91c50ea0c2390f2af2a79efbdad Downloads took 0 seconds. "/latest" directory has been emptied Archive /home/nginx/domains/domain.com/public/admin2254x5srx/autoupgrade/download/thirtybees-v1.0.8.zip extracted Archive /home/nginx/domains/domain.com/public/admin2254x5srx/autoupgrade/download/thirtybees-extra-v1.0.8.zip extracted ``` I already read the 1.07 thread where someone got the same error but I can't understand what I need to do to fix it. Manual upgrade? I can't see error on logs. The pgrade from 1.0.6 to 1.0.7 went smooth (Debian and php5.6), 1.0.7 to 1.0.8 (CentOS 7 and php 7.1) is giving me that error. File and Directories permissions are ok: find ./ -type d -exec chmod 755 {} \ ; find ./ -type f -exec chmod 644 {} \;
  2. Examples: You want to clone/duplicate a PUT-SOMETHING-HERE*, every time you have to create a new one and configure it from zero even though 90% of the times you need to change only a little thing. *PUT-SOMETHING-HERE: Carrier Cart rule Customer Order etc
  3. I have a list of product with very long names. In the product names there are features values (color, year, country) Product Name Germany Black 1963 With prestools I can search for the value in the name and modify/add the "true" features value.
  4. @datakick said in [Free Module]Revws - Product Reviews: I will add a new dedicated hook to the module for this particular use case. That way, you will be able to call this hook anywhere in the product template, and it will not impact other modules. wait! I didn't "mess" with templates so much but I always thought that was possible to add a hook from TB/PS backend, and then attach to it what module view you want... it has to be done the other way around instead?!
  5. @musicmaster said in Prestools - the mass edit toolset: Of course Prestools has quite a lot of different functions and it depends what you want to do. But in general it is not possible. I would like to set up some automatic mass edits once or twice a week adding features from a product name search. I don't want to do it by a plain sql query because I'm afraid to mess up with the DB... prestools do that with an plain sql query?
  6. is it possible to configure a cronjob that run a specific prestools mass edit?
  7. I noticed that my problem is still there if I try to filter with blocklayered the ROOT category that includes all the other categories. In case I filter a sub-category the block layered works correctly.
  8. @traumflug said in Product list BO with manufacturers and suppliers columns: Why not? PageCache has its flaws, but the other cache systems should work just fine. Even for development I keep Smarty cache turned on, with “recompile if something has changed”. It's a sandbox. I have no TB installation in production right now. I'm going to follow your advice for "recompile if something has changed".
  9. @wakabayashi worked! (I have no cache active, didn't think to it) thank you
  10. done... but the issue is still there. I think it's not possible that the issue is my nginx config because the issue is there without friendly urls too no js errors in console p.s. I'm using the italian translation (no other languages are installed)... I have to try with english (UK or USA)?
  11. @datakick I just installed 1.0.21 and the issue is there. I disable all the third parties module and the issue is there.
  12. I cloned the original file AdminProductsController.php, modified as instructions and copied in the directory: override/controllers/admin/ Permissions are correct.
  13. this is working but not if I try to override it. :( I would like to override, @zimmer-media is your code working override in 1.0.7? p.s. Overrides are not disabled in "performance"
  14. Now I disabled friendly URLs and the issue is still there
  15. @traumflug I applied one of the commits, the others were already applied but the issue is still there: this is my blocklayered.js: ``` /* global paramproducturl */ var ajaxQueries = []; var sliderList = []; var slidersInit = false; function hideFilterValueAction($toggle) { var $list = $toggle.closest('ul'); var listId = $list.attr('id'); var expand = !!window.layeredhiddenlist[listId]; $list.find('.hiddable').toggle(expand); $list.find('.hide-action.less').toggle(expand); $list.find('.hide-action.more').toggle(!expand); } function addSlider(type, data, unit, format) { sliderList = sliderList.filter(slider => slider.type !== type); sliderList.push({ type: type, data: data, unit: unit, format: format }); } function initSliders() { $(sliderList).each(function (i, slider) { var $slider = $('#layered' + slider.type + 'slider'); var $sliderRange = $('#layered' + slider.type + 'range'); $slider.slider(slider.data); var from = ''; var to = ''; switch (slider.format) { case 1: case 2: case 3: case 4: from = window.formatCurrency($slider.slider('values', 0), slider.format, slider.unit); to = window.formatCurrency($slider.slider('values', 1), slider.format, slider.unit); break; case 5: from = $slider.slider('values', 0) + slider.unit; to = $slider.slider('values', 1) + slider.unit; break; } if (isRtl) { $sliderRange.html(to + ' - ' + from); } else { $sliderRange.html(from + ' - ' + to); } }); } function paginationButton(nbProductsIn, nbProductOut) { if (typeof window.currentfriendlyurl === 'undefined') { window.currentfriendlyurl = '#'; } $('.content_sortPagiBar .pagination a').each(function () { var page; if ($(this).attr('href').search(/(\?|&)p=/) === -1) { page = 1; } else { page = parseInt($(this).attr('href').replace(/^.*(\?|&)p=(\d+).*$/, '$2'), 10); } var location = window.location.href.replace(/#.*$/, ''); $(this).attr('href', location + window.current_friendly_url.replace(/\/page-(\d+)/, '') + '/page-' + page); }); //product count refresh if (nbProductsIn) { var $productCount = $('.product-count'); if (!isNaN(nbProductsIn)) { // add variables var productCountRow = $productCount.html(); var currentPageText = $('.content_sortPagiBar .pagination li.current').first().text(); var nbPage = parseInt(currentPageText, 10) || 1; var nbProducts = nbProductsIn; var nbPerPage; var $option = $('#nb_item').find('option:selected'); if ($option.length === 0) { nbPerPage = nbProducts; } else { nbPerPage = parseInt($option.val(), 10); } nbPage = isNaN(nbPage) ? 1 : nbPage; window.productShowing = (nbPerPage * nbPage) < nbProducts ? nbPerPage * nbPage : ((nbPerPage * nbPage) - nbProducts - (nbPerPage * nbPage)) * -1; window.productShowingStart = nbPage === 1 ? 1 : (nbPerPage * nbPage) - nbPerPage + 1; // insert values into a .product-count productCountRow = $.trim(productCountRow); productCountRow = productCountRow.split(' '); var backStart = []; for (var row in productCountRow) { if (productCountRow.hasOwnProperty(row)) { if (parseInt(productCountRow[row], 10) + 0 == parseInt(productCountRow[row], 10)) { backStart.push(row); } } } if (typeof backStart[0] !== 'undefined') { productCountRow[backStart[0]] = window.productShowingStart; } if (typeof backStart[1] !== 'undefined') { productCountRow[backStart[1]] = (typeof nbProductOut !== 'undefined') && (nbProductOut > window.productShowing) ? nbProductOut : window.productShowing; } if (typeof backStart[2] !== 'undefined') { productCountRow[backStart[2]] = nbProducts; } if (typeof backStart[1] !== 'undefined' && typeof backStart[2] !== 'undefined' && productCountRow[backStart[1]] > productCountRow[backStart[2]]) { productCountRow[backStart[1]] = productCountRow[backStart[2]]; } productCountRow = productCountRow.join(' '); $productCount.html(productCountRow).show(); } else { $productCount.hide(); } } } function reloadContent(paramsPlus) { var $form = $('#layered_form'); var $categoryProducts = $('#category-products'); stopAjaxQuery(); $form.addClass('loading-overlay'); $categoryProducts.addClass('loading-overlay'); var data = $form.serialize(); $('.layeredslider').each(function () { var sliderStart = $(this).slider('values', 0); var sliderStop = $(this).slider('values', 1); if ($.isNumeric(sliderStart) && $.isNumeric(sliderStop)) { data += '&' + $(this).attr('id') + '=' + sliderStart + '' + sliderStop; } }); $(['price', 'weight']).each(function (it, sliderType) { var $sliderRangeMin = $('#layered' + sliderType + 'rangemin'); var $sliderRangeMax = $('#layered' + sliderType + 'rangemax'); if ($sliderRangeMin.length) { data += '&layered_' + sliderType + '_slider=' + $sliderRangeMin.val() + '_' + $sliderRangeMax.val(); } }); $form.find('select option').each(function () { if ($(this).attr('id') && $(this).parent().val() == $(this).val()) { data += '&' + $(this).attr('id') + '=' + $(this).val(); } }); var $selectProductSort = $('.selectProductSort'); if ($selectProductSort.length && $selectProductSort.val()) { var splitData; if ($selectProductSort.val().search(/orderby=/) > 0) { // Old ordering working splitData = [ $selectProductSort.val().match(/orderby=(\w)/)[1], $selectProductSort.val().match(/orderway=(\w)/)[1] ]; } else { // New working for default theme 1.4 and theme 1.5 splitData = $selectProductSort.val().split(':'); } data += '&orderby=' + splitData[0] + '&orderway=' + splitData[1]; } var $selectN = $('select[name=n]:first'); if ($selectN.length) { if (paramsPlus) { data += '&n=' + $selectN.val(); } else { data += '&n=' + $('.showall').find('input[name="n"]').val(); } } var slideUp = true; if (typeof paramsPlus === 'undefined' || !(typeof paramsPlus === 'string')) { paramsPlus = ''; slideUp = false; } // Get nb items per page var n = ''; if (paramsPlus) { var $opt = $('.js-per-page select[name=n]').find('option:selected'); if ($opt.length) { n = '&n=' + $opt.val(); } } window.ajaxQuery = $.ajax({ type: 'GET', url: window.baseDir + 'modules/blocklayered/blocklayered-ajax.php', data: data + '&' + paramsPlus + n, dataType: 'json', cache: false, // @todo see a way to use cache and to add a timestamps parameter to refresh cache each 10 minutes for example success: function (result) { if (typeof result === 'undefined') { return; } if (result.meta_description !== '') { $('meta[name="description"]').attr('content', result.meta_description); } if (result.meta_keywords !== '') { $('meta[name="keywords"]').attr('content', result.meta_keywords); } if (result.meta_title !== '') { $('title').html(result.meta_title); } if (result.heading !== '') { $('.page-heading .cat-name').html(result.heading); } $('#layered_block_left').replaceWith(utf8_decode(result.filtersBlock)); $('.category-product-count, .heading-counter').replaceWith(result.categoryCount); if (result.nbRenderedProducts == result.nbAskedProducts) { $('.js-per-page').hide(); } if (result.productList) { $('.product_list').replaceWith(utf8_decode(result.productList)); } else { $('.product_list').html(''); } $categoryProducts.removeClass('loading-overlay'); $form.removeClass('loading-overlay'); if (result.pagination.search(/[^\s]/) >= 0) { var pagination = $('<div/>').html(result.pagination); var pagination_bottom = $('<div/>').html(result.pagination_bottom); if ($('<div/>').html(pagination).find('#pagination').length) { $('#pagination').show().replaceWith(pagination.find('#pagination')); } else { $('#pagination').hide(); } if ($('<div/>').html(pagination_bottom).find('#pagination_bottom').length) { $('#pagination_bottom').show().replaceWith(pagination_bottom.find('#pagination_bottom')); } else { $('#pagination_bottom').hide(); } } else { $('#pagination, #pagination_bottom').hide(); } // On submitting nb items form, reload with the good nb of items $('.showall form').on('submit', function (e) { e.preventDefault(); var num = $(this).find('input[name="n"]').val(); $('.content_sortPagiBar select[name="n"] option').each(function () { var $opt = $(this); if ($opt.val() === num) { $opt.attr('selected', true); } else { $opt.removeAttr('selected'); } }); // Reload products and pagination reloadContent(); }); if (typeof ajaxCart !== 'undefined') { ajaxCart.overrideButtonsInThePage(); } if (typeof(reloadProductComparison) == 'function') { reloadProductComparison(); } window.filters = result.filters; initFilters(); initSliders(); window.current_friendly_url = result.current_friendly_url; if (typeof window.current_friendly_url === 'undefined') { window.current_friendly_url = '#'; } // Get all sliders value $(['price', 'weight']).each(function (it, sliderType) { var $slider = $('#layered_' + sliderType + '_slider'); var $sliderRangerMin = $('#layered_' + sliderType + '_range_min'); var $sliderRangeMax = $('#layered_' + sliderType + '_range_max'); if ($slider.length) { // Check if slider is enable & if slider is used if (typeof $slider.slider('values', 0) !== 'object') { if ($slider.slider('values', 0) !== $slider.slider('option', 'min') || $slider.slider('values', 1) !== $slider.slider('option', 'max')) { window.current_friendly_url += '/' + sliderType + '-' + $slider.slider('values', 0) + '-' + $slider.slider('values', 1); } } } else if ($sliderRangerMin.length) { window.current_friendly_url += '/' + sliderType + '-' + $slider.slider('values', 0) + '-' + $slider.slider('values', 1); } }); paginationButton(result.nbRenderedProducts, result.nbAskedProducts); if (history.pushState) { history.pushState(null, '', window.current_friendly_url); } else { window.location.hash = window.current_friendly_url; } if (window.current_friendly_url !== '#/show-all') { $('.js-per-page').show(); } window.lockLocationChecking = true; if (slideUp) { $.scrollTo('.product_list', 400); } updateProductUrl(); $('.hide-action').each(function () { hideFilterValueAction($(this)); }); if (display instanceof Function) { var view = $.totalStorage('display'); if (view && view !== 'grid') { display(view); } } } }); ajaxQueries.push(ajaxQuery); } function cancelFilter() { $(document).on('click', '#enabledfilters a', function (e) { var rel = $(this).data('rel'); var $el = $('#' + rel); var $rangeMin = $('#' + rel.replace(/slider$/, 'rangemin')); if (rel.search(/_slider$/) > 0) { if ($el.length) { $el.slider('values', 0, $el.slider('option', 'min')); $el.slider('values', 1, $el.slider('option', 'max')); $el.slider('option', 'slide')(0, { values: [$el.slider('option', 'min'), $el.slider('option', 'max')] }); } else if ($rangeMin.length) { var $rangeMax = $('#' + rel.replace(/_slider$/, '_range_max')); $rangeMin.val($rangeMin.attr('limitValue')); $rangeMax.val($rangeMax.attr('limitValue')); } } else if ($('option#' + rel).length) { $el.parent().val(''); } else { $el.attr('checked', false); $('.' + rel).attr('checked', false); $('#layered_form').find('input[type=hidden][name=' + rel + ']').remove(); } reloadContent(true); e.preventDefault(); }); } function stopAjaxQuery() { if (typeof ajaxQueries === 'undefined') { ajaxQueries = []; } for (var i = 0; i < ajaxQueries.length; i++) { ajaxQueries[i].abort(); } ajaxQueries = []; } function initLocationChange(func, time) { if (!time) { time = 500; } var currentFriendlyUrl = getUrlParams(); setInterval(function () { if (getUrlParams() != currentFriendlyUrl && !window.lockLocationChecking) { // Don't reload page if currentfriendlyurl and real url match if (currentFriendlyUrl.replace(/^#(\/)?/, '') === getUrlParams().replace(/^#(\/)?/, '')) { return; } window.lockLocationChecking = true; reloadContent('&selected_filters=' + getUrlParams().replace(/^#/, '')); } else { window.lockLocationChecking = false; currentFriendlyUrl = getUrlParams(); } }, time); } function getUrlParams() { if (typeof window.currentfriendlyurl === 'undefined') { window.currentfriendlyurl = '#'; } var params = currentfriendlyurl; if (window.location.href.split('#').length == 2 && window.location.href.split('#')[1] != '') { params = '#' + window.location.href.split('#')[1]; } return params; } function updateProductUrl() { // Adding the filters to URL product if (typeof paramproducturl !== 'undefined' && paramproducturl !== '' && paramproducturl !== '#') { $.each($('ul.productlist li.ajaxblockproduct .productimglink,' + 'ul.productlist li.ajaxblockproduct h5 a,' + 'ul.productlist li.ajaxblockproduct .productdesc a,' + 'ul.productlist li.ajaxblockproduct .lnkview'), function () { $(this).attr('href', $(this).attr('href') + paramproducturl); }); } } /** * Copy of the php function utf8decode() */ function utf8decode(utfstr) { var res = ''; for (var i = 0; i < utfstr.length;) { var c = utfstr.charCodeAt(i); var c1; var c2; if (c < 128) { res += String.fromCharCode(c); i++; } else if ((c > 191) && (c < 224)) { c1 = utfstr.charCodeAt(i + 1); res += String.fromCharCode(((c & 31) << 6) | (c1 & 63)); i += 2; } else { c1 = utfstr.charCodeAt(i + 1); c2 = utfstr.charCodeAt(i + 2); res += String.fromCharCode(((c & 15) << 12) | ((c1 & 63) << 6) | (c2 & 63)); i += 3; } } return res; } function initFilters() { if (typeof filters !== 'undefined') { for (var key in filters) { var filter; if (filters.hasOwnProperty(key)) { filter = filters[key]; } if (typeof filter.slider !== 'undefined' && parseInt(filter.filter_type, 10) === 0) { var filterRange = parseInt(filter.max, 10) - parseInt(filter.min, 10); var step = filterRange / 100; if (step > 1) { step = parseInt(step, 10); } var sliderOptions = { range: true, step: step, min: parseInt(filter.min, 10), max: parseInt(filter.max, 10), values: [filter.values[0], filter.values[1]], slide: function (event, ui) { stopAjaxQuery(); var from, to, span; if (parseInt($(event.target).data('format'), 10) < 5) { from = window.formatCurrency(ui.values[0], parseInt($(event.target).data('format'), 10), $(event.target).data('unit')); to = window.formatCurrency(ui.values[1], parseInt($(event.target).data('format'), 10), $(event.target).data('unit')); } else { from = ui.values[0] + $(event.target).data('unit'); to = ui.values[1] + $(event.target).data('unit'); } if (isRtl) { span = to + ' - ' + from; } else { span = from + ' - ' + to; } $('#layered_' + $(event.target).data('type') + '_range').html(span); }, stop: function () { reloadContent(true); } }; addSlider(filter.type, sliderOptions, filter.unit, parseInt(filter.format, 10)); } else if (typeof filter.slider !== 'undefined' && parseInt(filter.filter_type, 10) === 1) { $('#layered_' + filter.type + '_range_min').attr('limitValue', filter.min); $('#layered_' + filter.type + '_range_max').attr('limitValue', filter.max); } $('.layered_' + filter.type).show(); } } } function initLayered() { initFilters(); initSliders(); initLocationChange(); updateProductUrl(); if (window.location.href.split('#').length === 2 && window.location.href.split('#')[1] !== '') { var params = window.location.href.split('#')[1]; reloadContent('&selected_filters=' + params); } } (function () { function initBlockLayered() { if (typeof $ === 'undefined') { setTimeout(initBlockLayered, 100); return; } $(function () { cancelFilter(); // Click on color $(document).on('click', '#layered_form input[type=button], #layered_form label.layered_color', function () { var $hiddenInput = $('input[name=' + $(this).attr('name') + '][type=hidden]'); if (!$hiddenInput.length) { $('<input />').attr('type', 'hidden').attr('name', $(this).attr('name')).val($(this).data('rel')).appendTo('#layered_form'); } else { $hiddenInput.remove(); } reloadContent(true); }); // @TODO Click on label $(document).on('click', '#layered_form input[type=checkbox]', function () { reloadContent(true); }); // Doesn't work with document element $('body').on('change', '#layered_form select, #layered_form input[type=radio]', function () { reloadContent(true); }); // Changing content of an input text $(document).on('keyup', '#layered_form input.layered_input_range', function () { if ($(this).attr('timeout_id')) { window.clearTimeout($(this).attr('timeout_id')); } // IE Hack, setTimeout do not accept the third parameter var reference = this; $(this).attr('timeout_id', window.setTimeout(function (it) { if (!$(it).attr('id')) { it = reference; } var filter = $(it).attr('id').replace(/^layered_(.+)_range_.*$/, '$1'); var $filterRangeMin = $('#layered_' + filter + '_range_min'); var $filterRangeMax = $('#layered_' + filter + '_range_max'); var valueMin = parseInt($filterRangeMin.val(), 10) || 0; $filterRangeMin.val(valueMin); var valueMax = parseInt($filterRangeMax.val(), 10) || 0; $filterRangeMax.val(valueMax); if (valueMax < valueMin) { $filterRangeMin.val($(it).val()); $filterRangeMax.val($(it).val()); } reloadContent(); }, 500, this)); }); $(document).on('click', '#layered_block_left .radio', function () { var name = $(this).attr('name'); $.each($(this).parent().parent().find('input[type=button]'), function (it, item) { if ($(item).hasClass('on') && $(item).attr('name') !== name) { $(item).click(); } }); return true; }); // Click on label $(document).on('click', '#layered_block_left label:not(.layered_color) a', function (e) { e.preventDefault(); var disable = $(this).parent().parent().find('input').attr('disabled'); if (!disable) { $(this).parent().parent().find('input').click(); } }); // Global var window.layered_hidden_list = {}; $(document).on('click', '.hide-action', function () { var id = $(this).closest('ul').attr('id'); window.layered_hidden_list[id] = !window.layered_hidden_list[id]; hideFilterValueAction($(this)); }); $('.hide-action').each(function () { hideFilterValueAction($(this)); }); $(document).off('change', '.selectProductSort').on('change', '.selectProductSort', function () { $('.selectProductSort').val($(this).val()); if ($('#layered_form').length > 0) { reloadContent('forceSlide'); } }); $(document).off('change', 'select[name="n"]').on('change', 'select[name="n"]', function () { $('select[name=n]').val($(this).val()); reloadContent('forceSlide'); }); paginationButton(false); initLayered(); }); } initBlockLayered(); }());```
  16. @traumflug oh I thought that default theme get updated during the normal update process... if it's not I'm going to do a manual full default theme update.
  17. Same problem in my 1.0.7 sand box with default theme... please add some product to the demo here on TB so it will be possible to test this on the official demo, too. I think that it's the same issue I just posted, right?
  18. is it a bug? or only my sandbox? I activated the block layered module on the main category. The filter works and in case the results are more than 12 items the page navigation is correctly displayed. When I click on page 2 (for example) the filter reset and it displays page 2 of the NOT FILTERED root category. I can't reproduce in the demo here because there are not enough products to display the page navigation.
  19. @traumflug said in Sort Cart controller by total amount: Maybe even hardcoding such a criterion. Like removing empty carts after the time which is also used for cookie timeout. I can hardly see any use for empty carts, but maybe I'm missing something. I vote to adding it to the core
  20. What a difference from xenforo 1.5 to 2.0! 1.X addons obviously not working in 2.X... but if you upgrade the core from 1.5 to 2.x the data of the 1.X addons is still there (and the addons get deactivated), if you install a 2.0 compatible addon it will find the old data and convert it to the new "format". Plus many developers simply updated their addons and if you have an active license with them you get the 2.x version of the addon.
  21. Please stay away from IPB! Plus the IPB Gallery is not meant to do that, the XF Resource Manager can include to each specific resource (a resource can be for example an addon/plugin/theme) images, discussion, reviews, changelogs and internal/external link to download/pay it, etc. Maybe "Downloads" from IPB can do some of that. Another thing is that IPB and addons cost more (license expire in 6 months and not 12.) Xenforo have some great and reliably thirtparty developers, one of them is "Bob". He developed some great addons like Article Manager System seamless integrated with the forum, take a look here: https://xenaddons.com/ He strictly follows XenForo code standards so his add-ons are very solid and really close to the official ones. Contact him directly and chitchat a little bit with him I think that he will give better info about his addons. https://xenaddons.com/misc/contact One example from a production law website with AMS: https://www.thelaw.com/ One example from a production film school portal website with AMS and Blogs https://www.filmschool.org/blogs/ Some different examples are MacRumors.com and IGN.com that are using XenForo for their forum/communities. Blogs can be used with comments and/or thread discussion attached to it. If a new blog is created a new thread can be created to a specific forum/node automatically. Take a look to the XF2 developer's docs too. https://xenforo.com/xf2-docs/dev/ p.s. About the specific and very solid Blog add-on for XenForo, I will contact you in private.
  22. @lesley PLEASE PLEASE PLEASE migrate to Xenforo!!!! The resource manager of xenforo could be really great for addons/tutorials and other content. take a look here: https://xenforo.com/community/forums/have-you-seen/ https://xenforo.com/community/resources/ Resource example (with dedicated tabs for updates, threads, versions and more): https://xenforo.com/community/resources/conversation-essentials.6694/ The resource manager is great for listing but also for give feedback to users about the specific addon.
  23. @foolab solving that I found this: https://forum.thirtybees.com/topic/2164/thirtybees-and-prestashop-on-nginx-expose-tpl-and-other-files
  24. I think that all the prestashop (and thirtybees?) nginx configuration I saw publicized are exposing tpl files. Please test is your thirtybees installation is doing with this link (change the domain and theme dir) https://domain.com/themes/themedir/404.tpl If the .tpl file get downloaded your template files are exposed. to block this behavior add this o your vhost nginx configuration file: location ~* \.tpl$ { deny all; } the only post I saw that talk about blocking tpl and others file types inside tb and ps installation is this: https://www.prestashop.com/forums/topic/351975-using-nginx-with-ps-16-what-to-pay-attention-to/#comment-1775268
  25. problem found... was a rule inside an included file in the nginx configuration (more info here)
×
×
  • Create New...