Fórum OpenCart Brasil

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

Suporte geral sobre problemas técnicos para OpenCart v2.x.
#74429
É possível adicionar isso com uma alteração no código.

Se você quiser fazer manualmente, segue o tutorial abaixo.

Template:
- Abra o arquivo catalog/view/theme/*/template/account/edit.tpl
- Antes de
Código: Selecionar todos
<?php echo $header; ?>
adicione o código abaixo
Código: Selecionar todos
<?php
    $inputsDisabled = [
        ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
        ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
    ];
?>
- Substitua o código
Código: Selecionar todos
<input type="text" name="custom_field[<?php echo $custom_field['custom_field_id']; ?>]" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" placeholder="<?php echo $custom_field['name']; ?>" id="input-custom-field<?php echo $custom_field['custom_field_id']; ?>" class="form-control" />
por
Código: Selecionar todos
<?php if (in_array($custom_field['custom_field_id'], $inputsDisabled)) { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" disabled />
<?php } else { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" />
<?php } ?>
'
'
'
Controller:
- Abra o arquivo catalog/controller/account/edit.php
- Procure esse código abaixo
Código: Selecionar todos
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
- Na linha de baixo (antes de $this->model_account_customer->editCustomer($this->request->post);, adicione o código abaixo.
Código: Selecionar todos
$inputsDisabled = [
    ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
    ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
];

foreach($inputsDisabled as $inputId) {
    if (isset($this->request->post[$inputId])) {
        unset($this->request->post[$inputId]);
    }
}
'
'
'
Se você tiver conhecimento básico em PHP e HTML, é possível transformar esse código em um módulo e fazer com outros campos do tipo data, select, checkbox, radio, etc.

Identificando o ID do campo customizado:
Na administração, acesse o menu Customers -> Custom Fields (Clientes -> Personalizar cadastro), na coluna "Id" fica o id do campo customizado.

Ps.: Fiz baseado na versão 2.0.1.1
Marcs gostou disso
#74435
valdeir2000 escreveu: 23 Jul 2017, 18:51 É possível adicionar isso com uma alteração no código.

Se você quiser fazer manualmente, segue o tutorial abaixo.

Template:
- Abra o arquivo catalog/view/theme/*/template/account/edit.tpl
- Antes de
Código: Selecionar todos
<?php echo $header; ?>
adicione o código abaixo
Código: Selecionar todos
<?php
    $inputsDisabled = [
        ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
        ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
    ];
?>
- Substitua o código
Código: Selecionar todos
<input type="text" name="custom_field[<?php echo $custom_field['custom_field_id']; ?>]" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" placeholder="<?php echo $custom_field['name']; ?>" id="input-custom-field<?php echo $custom_field['custom_field_id']; ?>" class="form-control" />
por
Código: Selecionar todos
<?php if (in_array($custom_field['custom_field_id'], $inputsDisabled)) { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" disabled />
<?php } else { ?>
<input type="text" value="<?php echo (isset($account_custom_field[$custom_field['custom_field_id']]) ? $account_custom_field[$custom_field['custom_field_id']] : $custom_field['value']); ?>" class="form-control" />
<?php } ?>
'
'
'
Controller:
- Abra o arquivo catalog/controller/account/edit.php
- Procure esse código abaixo
Código: Selecionar todos
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
- Na linha de baixo (antes de $this->model_account_customer->editCustomer($this->request->post);, adicione o código abaixo.
Código: Selecionar todos
$inputsDisabled = [
    ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO,
    ID-DO-CAMPO-QUE-DEVE-SER-DESABILITADO
];

foreach($inputsDisabled as $inputId) {
    if (isset($this->request->post[$inputId])) {
        unset($this->request->post[$inputId]);
    }
}
'
'
'
Se você tiver conhecimento básico em PHP e HTML, é possível transformar esse código em um módulo e fazer com outros campos do tipo data, select, checkbox, radio, etc.

Identificando o ID do campo customizado:
Na administração, acesse o menu Customers -> Custom Fields (Clientes -> Personalizar cadastro), na coluna "Id" fica o id do campo customizado.

Ps.: Fiz baseado na versão 2.0.1.1
Obrigado pela resposta! Não tenho muito conhecimento em html, minha versão é 2.3.0.2 será que funciona? Isto seria um módulo essencial para o Opencart, pois ajudaria até mesmo na prevenção de possíveis fraudes. O cliente podendo alterar todas as informações inclusive nome e CPF é sopa no mel para fraudadores.
#74461
Não sei te dizer se é possível, mas você pode fazer um backup da loja loja, tentar e postar seu feedback. Isso ajuda os outros usuários e nós podemos adaptar na sua loja.

Só um adendo, ao fazer essas modificações, o ideal é acessar o Painel de Admin > Extensions > Modification > Refresh.
#74663
valdeir2000 escreveu: 25 Jul 2017, 02:26 Não sei te dizer se é possível, mas você pode fazer um backup da loja loja, tentar e postar seu feedback. Isso ajuda os outros usuários e nós podemos adaptar na sua loja.

Só um adendo, ao fazer essas modificações, o ideal é acessar o Painel de Admin > Extensions > Modification > Refresh.
Desculpe a demora em responder, funcionou na versão 2.3.0.2. Criei um cliente de testes e sua dica funcionou perfeitamente, os campos que fiz o teste foram CPF e data de nascimento. Após implementar suas dicas os campos citados ficam em cinza, impedindo a alteração pelo cliente. Parabéns!!!

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]