Após concluir o passo anterior, visto na página A estrutura do plugin, caminhos e arquivos necessários, se você compilar e publicar seu plugin, ele já vai aparecer na página de gerenciamento de plugins (Admin area > Configuration > Plugins), porém, apesar de aparecer, ele ainda não tem nenhuma página de configuração e também ainda não faz nada. Portanto, vamos criar uma página de configuração para o plugin.

O que precisamos fazer agora é criar um controller, um model e uma view.

  1. Controllers MVC são os responsáveis por responsáveis por responder as requisições (requests) feitas para o site criado com ASP.NET MVC. Cada requisição feita pelo browser é mapeada para um controller específico.
  2. A view contém o código HTML que é enviado para o browser. A view é o equivalente à uma página web quando se está utilizando uma aplicação ASP.NET MVC.
  3. O model contém toda a lógica, regras de negócio e dados da aplicação.

Você pode achar mais informações sobre o padrão MVC clicando aqui.

Então, mãos a obra:

  1. Criação do model: Crie uuma pasta chamada “Models” no seu plugin. Dentro da nova pasta, crie uma classe que que represente seu modelo (model) contendo as regras de negócio e dados necessários para seu plugin.
  2. Criação da view: Crie uma pasta chamada “Views” no seu plugin, e dentro dessa pasta, crie uma outra pasta com o nome do seu plugin. Finalmente, crie um arquivo .cshtml com o nome Configure.cshtml. Um ponto importante: para as versões 2.00 até 3.30, a propriedade “Build action” da view deve ser definida para “Embedded Resource”. A partir da versão 3.40 do nopCommerce, a propriedade “Build Action” deve ser definida como “Content” e a propriedade “Copy to Output Directory” seja definida como “Copy if newer”.
  3. Criação do controller: Crie uma pasta chamada “Controllers”, e crie uma classe para o controller. É uma boa prática que a classe do controller tenha o nome composto por {Grupo}{Nome}Controller.cs. Por exemplo, para nosso caso de um plugin de pagamento do PagSeguro, ficaria PaymentPagSeguroController. Crie um método para fazer a configuração do plugin, sendo que o método deve retornar um ActionResult. Chame o método de “Configure”. No método, instancie a classe model, e passe-a para a view. Para as versões 2.00 até 3.30 você deve passar o caminho da view que está embutida (embedded) na aplicação: “Nop.Plugin.{Grupo}.{Nome}.Views. {Grupo}{Nome}.Configure”. A partir da versão 3.40, você deve passar o caminho físico da view: “~/Plugins/{Grupo}.{Nome}/Views/{Grupo}{Nome}/Configure.cshtml”.

Dica 1: Um jeito fácil de realizar os passos acima, é abrir o código de algum outro plugin, e copiar os arquivos para seu projeto. Após isso, renomeie os diretórios e arquivos conforme necessário para seu plugin.

Dica 2: Se você precisar limitar o acesso à certos métodos de seu controller apenas para administradores (store owners), apenas coloque o atributo [AdminAuthorize] nos métodos que deseja restringir.

Dica 3: Certifique que todas as propriedades “Copy local” das bibliotecas de terceiros que são usadas por seu plugin estejam definidas como “False” (não copiar). Isso vai reduzir de forma significativa o tamanho do package que você vai precisar distribuir para utilizarem seu plugin.

Segue abaixo uma imagem que mostra a estrutura de um plugin de pagamento
plugin.4