Ограничение количества записей для заказов в bitrix

Posted in Новости on июня 11, 2019 by admin

Штатно количество отображаемых записей регулируется GET параметром SIZEN_1 , соответственно, нам требуется узнавать параметр и в случае его превышения сбрасывать до стандартного значения. Так как в стандартном решении nginx нет необходимого компаратора, то решение написал на lua ( соответственно этот модуль должен быть включен в nginx ). Вставляем решение в location ~ \.php$ :

    set $rew 0;
    rewrite_by_lua_block {
      local rf = ngx.var.request_filename
      local args = ngx.var.args
      if rf == ngx.var.document_root .. "/bitrix/admin/sale_order.php" then
        if ngx.var.arg_SIZEN_1 and tonumber(ngx.var.arg_SIZEN_1) > 50 then
          newargs, n, err = ngx.re.gsub(args, [[\bSIZEN_1=[^&]*&?]], "SIZEN_1=50&", "jo")
          if n and n > 0 then
            ngx.var.args = newargs
            local urito = ngx.var.scheme .. "://" .. 
ngx.var.server_name .. "/bitrix/admin/sale_order.php?" .. ngx.var.args
            ngx.redirect(urito)
          end
        end
        if ngx.var.arg_SHOWALL_1 and tonumber(ngx.var.arg_SHOWALL_1) > 0 then
          newargs, n, err = ngx.re.gsub(args, [[\bSHOWALL_1=[^&]*&?]], "SIZEN_1=50&", "jo")
          if n and n > 0 then
            ngx.var.args = newargs
            local urito = ngx.var.scheme .. "://" .. 
ngx.var.server_name .. "/bitrix/admin/sale_order.php?" .. ngx.var.args
            ngx.redirect(urito)
          end
        end
      end
    }

Tags: , ,