Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v1.x.
#4221
Hoje na área administrativa do opencart (1.4.7), há uma restrição de caracteres para o "MODELO" do produto (24 caracteres) e necessito de apenas 1 caracter a mais, para poder inserir um código especial que o meu cliente quer deixar padrão.

Aguem sabe como alterar esse limíte?

Grato
#4343
virtuopolis, mude o arquivo admin/controller/catalog/product.php na linha (dentro da função validateForm):
Código: Selecionar todos
if ((strlen(utf8_decode($this->request->post['model'])) < 3) || (strlen(utf8_decode($this->request->post['model'])) > 24)) {
para
Código: Selecionar todos
if ((strlen(utf8_decode($this->request->post['model'])) < 3) || (strlen(utf8_decode($this->request->post['model'])) > 64)) {
No banco de dados já dá suporte a 64 caracteres.

Até mais.
#4344
Poxa, Julio Cesar!!! MAGNÍFICO...... Funcionou perfeitamente!!!!

Imagine um cliente chato! É o cara que me pediu essa alteração!!!

Agora ele achou mais uma alteração para que eu "rebusque" o código.... na administração o campo de busca (filtro) difere maiuscula e minuscula (case sensitive) e não apresenta resultados para pesquisa de um produto em minuscula, caso for cadastrado em maiuscula e vice-versa!

Se o produto que cadastrei for: Máquinas

Eu digitar no campo de filtro: máquinas, MÁQUINAS, mÁQUINAS

Não me apresenta resultados e o cara quer que apresente....

Será que conseguiria me indicar onde altero?

Grato,
#4356
virtuopolis, eu testei na versão do OpenCart 1.4.7 que tenho aqui e ele busca normalmente, ou seja, tanto faz digitar maiúscula quando minúscula.

Mas em todo caso, no arquivo admin/model/catalog/product.php procure a função getProducts (por volta da linha 270) e dentro se o código que busca pelo nome e modelo do produto está dessa forma:
Código: Selecionar todos
			if (isset($data['filter_name']) && !is_null($data['filter_name'])) {
				$sql .= " AND LCASE(pd.name) LIKE '%" . $this->db->escape(strtolower($data['filter_name'])) . "%'";
			}

			if (isset($data['filter_model']) && !is_null($data['filter_model'])) {
				$sql .= " AND LCASE(p.model) LIKE '%" . $this->db->escape(strtolower($data['filter_model'])) . "%'";
			}
Mas creio que o problema reside no acento de 'máquinas'. Quanto você converte para minúscula ou maiúscula como acima:

strtolower($data['filter_model'])

e

strtolower($data['filter_name'])

o acento de 'máquina' é perdido. Então no caso você está procurando na realidade algo como 'mquina' ou 'MQUINA' que nunca vai ser encontrado.

Pode-se usar a função mb_strtolower ao invés da strtolower acima, mas não são todos os servidores que dão suporte a esta função.

até mais.