diogenesjup / Documentacao-tecnica-BeWatch

Documentação técnica BeWatch 01/2018 - 05/2020
0 stars 0 forks source link

Documentação técnica BeWatch - 2018/2020

Documentação técnica BeWatch (legado) WordPress/WooCommerce theme Janeiro de 2018 à Maio de 2020

<h2 align:"center">Informações técnicas e manual do desenvolvedor BeWatch.

Atenção:

Essa documentação irá abordar apenas os itens que foram feitos originalmente para o tema, baseados no desenvolvimento feito por Diogenes Junior. Alguns itens dentro do tema foram feitos por outros programadores, e não temos informações suficiêntes sobre o porque de algumas escolhas deles, ou suas funcionalidades, bugs e outras características.

Atenção:

Essa documentação retrata a versão antiga do site, ou seja, não serve para o site atual em novembro de 2021

Acesso aos arquivos:

Todos os arquivos de código fonte são privados e devem ser solicitados diretamente à equipe BeWatch no e-mail robertachechetto@gmail.com.

Histórico

Em 2018 eu desenvolvi esse tema usando o padrão e boas práticas para construção de temas WordPress/WooCommerce. Já em 2019, outros programadores atuaram desenvolvendo outras funcionalidade e outras correções, mas acabaram inserindo códigos e plugins de maneira incorreta ou fora dos padrões. Isso provocou alguns problemas técnicos e código sujo. Ao fazer qualquer alteração, deve-se atentar a esses problemas e na medida do possível corrigi-los. Em 2020 reassumi por alguns meses o desenvolvimento, e alguns pontos já foram melhorados, mas outros precisam de atenção, em especial cabeçalho e rodapé, e alguns templates estáticos que ainda apresentam bastante problemas. Esses problemas e falta de padrões, por hora não afetam as funcionalidades e segurança da aplicação, mas é necessário a correção para evitar problemas futuros e para buscarmos uma excelência no produto em questão: a Loja Virtual BeWatch. O tema depende de alguns plugins para funcionar, mas existem outros ativados que cumprem propósito de marketing, SEO, Frete e outras funcionalidades administrativas. Os essências para a parte técnica são:

  • Advanced Custom Fields
  • Advanced Custom Fields: Categories
  • Advanced Custom Fields: Repeater Field
  • Brazilian Market on Loja Be!
  • Claudio Sanches - Correios for Loja Be!
  • Claudio Sanches - PagSeguro for Loja Be!
  • Editor clássico
  • WooCommerce
  • Melhor Envio v2
  • Nextend Social Login
  • WP Mail SMTP
  • Todos os demais plugins instalados são opcionais

    Descrição dos diretórios e arquivos importantes:

  • assets: pasta criada por outro programador, contêm arquivos de plugins como slides e outros scripts, não é claro quais exatamente são ou não usados.
  • core: pasta com os arquivos originais do Bootstrap3 que é usado no tema, apenas para referência, não é usado no código fonte do tema
  • css: pasta com todos os arquivos principais de estilo CSS
    • animate.css: animações CSS
    • bootstrap-dropdownhover.css: menu dropdown (o menu foi removido por outro programador)
    • bootstrap-glyphicons.css: ícones do bootstrap (provavelmente alterado para FontAwesome)
    • bootstrap-theme.css: arquivo padrão estilos Bootstrap
    • bootstrap-theme.min.css: arquivo padrão estilos Bootstrap
    • bootstrap.css: arquivo padrão estilos Bootstrap
    • bootstrap.min.css: arquivo padrão estilos Bootstrap
    • font.css: fontes customizadas do site
    • large.css: CSS para telas grandes (não utilizado)
    • lightslider.css: adicionado por outro programador, não sei o que faz ou se é usado
    • phone.css: CSS para telas pequenas (não utilizado)
    • style.css: arquivo principal de estilos CSS do site
    • sweetalert2.min.css: plugin de confirmações e retornos de erros para o usuário
    • tablet.css: CSS para telas médias (não utilizado)
  • imagens: pasta criada por outro programador, contêm imagens SVG
  • images: pasta padrão para arquivos de imagens do tema
  • js: pasta padrão para os scripts JS do site
    • bootstrap-dropdownhover.js: arquivo padrão Bootstrap
    • bootstrap-notify.js: notificações para o usuário
    • bootstrap.js: arquivo padrão Bootstrap
    • bootstrap.min.js: arquivo padrão Bootstrap
    • carrinho.js: arquivo para lógicas de processamento do carrinho
    • cidades-estados-v0.2.js: arquivo para carregamento automático de cidades e estados para formulários
    • dist: diretório com arquivos dos plugins para máscara de formulários
    • html2canvas.js: arquivo com scripts para prints de uma determinada DIV, usada para prints de personalização de produtos
    • jquery-2.1.4.js: jquery usado no tema
    • scripts-beblack.js: scripts para manipulação das lógicas para o tipo de produto BEBLACK
    • scripts-digital.js: scripts para manipulação das lógicas para o tipo de produto DIGITAL
    • scripts-gift-cards-offline.js: scripts para manipulação das lógicas para o tipo de produto GIFT CARDS OFFLINE
    • scripts-gift-cards-online.js: scripts para manipulação das lógicas para o tipo de produto GIFT CARDS ONLINE
    • scripts-pulseiras.js: scripts para manipulação das lógicas para o tipo de produto PULSEIRAS
    • scripts-rings.js: scripts para manipulação das lógicas para o tipo de produto ANÉIS
    • scripts-silicone.js: scripts para manipulação das lógicas para o tipo de produto SILICONE
    • scripts.js: scripts para manipulação das lógicas para o tipo de produto METAL E OUTROS SCRIPTS GERAIS
    • style.js: criado por outro programador, não sei o propósito
    • sweetalert2.min.js: alertas e avisos para o usuário
    • wow.min.js: animações do site
  • modelo-produtos: modelos de tipo de produtos
    • antigo modelo digital.php: Backup de um modelo antigo
    • backup pulseira couro.php: Backup de um modelo antigo
    • beblack.php: modelo de produto categoria BEBLACK
    • benight.php: modelo de produto categoria BENIGHT
    • digital.php: modelo de produto categoria DIGITAL
    • gift-cards-offline.php: modelo de produto GIFT CARDS OFFLINE
    • gift-cards-online.php: modelo de produto GIFT CARDS ONLINE
    • metal.php: modelo de produto categoria METAL
    • produtos-simples.php: modelo de produto QUALQUER OUTRO PRODUTO SIMPLES
    • pulseiras.php: modelo de produto PULSEIRAS
    • rings.php: modelo de produto RINGS
    • silicone.php: modelo de produto SILICONE
  • otimizacao2020: Novos arquivos JS criados em 2020 para deixar a administração das pulseiras dos relógios e marcadores de hora dos relógios, de forma dinâmica:
    • benight.php: scripts JS pulseiras/marcadores dinâmicos para categoria BENIGHT
    • loop.php: scripts JS pulseiras/marcadores dinâmicos para categoria DIGITAL/LOOP
    • metal.php: scripts JS pulseiras/marcadores dinâmicos para categoria METAL/STEEL
    • silicone.php: scripts JS pulseiras/marcadores dinâmicos para categoria SILICONE/SPLASH
  • phpmailer: arquivos gerais de envio de e-mails (SMTP)
  • woocommerce: arquivos gerais padrão WooCommerce
  • 404.php: arquivo padrão para páginas não encontradas
  • PURPLE.png: criado por outro programador, não sei por que fora da pasta padrão
  • apagar-wishlist.php: apagar produto da lista de desejos
  • banner_mobile_black.php: criado por outro programador, não sei o propósito
  • be.svg: logo da BE em SVG (deveria estar na pasta padrão de imagens)
  • be2.svg: logo da BE em SVG (deveria estar na pasta padrão de imagens)
  • be3.svg: logo da BE em SVG (deveria estar na pasta padrão de imagens)
  • carrinho-2019.php: criado por outro programador, não sei o propósito, apresenta problemas
  • cartao-presente.php: criado por outro programador, para cartão presente, apresenta problemas
  • categoria_be_splash_nova.php: criado por outro programador, para categorias avulsas, apresenta problemas
  • categoria_be_steel_nova.php: criado por outro programador, para categorias avulsas, apresenta problemas
  • categoria_loop_nova.php: criado por outro programador, para categorias avulsas, apresenta problemas
  • cola-produto.htp: criado por outro programador, aparentemente uma copia de template
  • debug.log: arquivo de log de erros do servidor
  • enviar-revenda-2020.php: disparo de e-mail com dados do formulário de revenda (versão 2020)
  • enviar-revenda.php: disparo de e-mail com dados do formulário de revenda (versão 2019)
  • enviarmsg.php: disparo de e-mail do formulário de contato
  • error_log: arquivo de log de erros do WordPress
  • footer-comum.php: criado por outro programador, provavelmente parte do rodapé, apresenta problemas
  • footer-novo.php: criado por outro programador, provavelmente parte do rodapé, apresenta problemas
  • footer.php: arquivo padrão do rodapé do site
  • functions.php: arquivo de funções padrão do tema
  • header.php: arquivo do cabeçalho do tema
  • home3.php: versão da homepage criada por outro programador (DESATIVADO)
  • home4.php: versão da homepage criada por outro programador (DESATIVADO)
  • homepage-nova-novembro.php: versão da homepage criada por outro programador (DESATIVADO)
  • homepage.php: versão original da homepage 2018 (DESATIVADO)
  • homepage2019.php: versão 2019 da homepage (DESATIVADO)
  • homepage2020.php: versão 2020 da homepage
  • index.php: arquivo inicial do tema
  • login-false.php: criado por outro programador, não sei o que faz
  • metal.php: criado por outro programador, não sei o que faz, nem o propósito de estar fora da pasta padrão
  • minha-conta.php: template padrão da página Minha Conta
  • mobile.php: template parte das sessões exclusicas Mobile (apresenta problema, outro programador instalou plugin de terceiros para mobile)
  • modelo-carrinho.php: template padrão para o carrinho
  • modelo-categoria-1.php: template para exibição de categorias
  • modelo-categoria-2.php: template para exbição de categorias
  • modelo-categoria-3.php: template para exibição de categorias
  • modelo-revendedor.php: template página de revendedores
  • onde-encontrar.php: template página onde encontrar
  • page-modelo-2.php: template para páginas
  • page.php: template padrão para páginas
  • perfil-artista.php: template para a página de perfil do artista
  • perguntas-frequentes.php: template para a página de FAQ
  • pixel-facebook.php: template part para códigos PIXEL FACEBOOK
  • preload.php: template part para GIF de carregamento
  • proc-cep.php: template part para carregar dados do simulador de FRETE (aparentemente desativado por outro programador)
  • processa.php: criado por outro programador, não sei o que faz
  • processamento-ajax.php: processamento AJAX do carrinho
  • rastreio.php: template part para busca/consulta de código de rastreio
  • revenda-formulario.php: template para envio de mensagens dados formulário de revenda
  • revenda2020.php: template para página de SEJA UM REVENDEDOR
  • salvar-wishlist.php: salvar arquivo na lista de desejos
  • screenshot.jpg: capa do tema
  • script-db.php: scripts para corrigir problema de estoque em produtos novos da loja
  • search.php: template para exibir resultado de pesquisa
  • single.php: arquivo padrão para exibição de SINGLE POST TYPE
  • slider_produto_desktop.php: criado por outro programador não sei o que faz
  • slider_produto_new_arrivals.php: criado por outro programador não sei o que faz
  • slider_produto_quem_viu.php: criado por outro programador não sei o que faz
  • slideshow-2.php: template parte para slides rotativos do site
  • slideshow.php: template parte para slides rotativos do site
  • style.css: nome e informações do tema
  • suporte.php: template da página de suporte
  • teste-facebook.php: criada por outro programador não sei o que faz
  • validar-usuario-facebook.php: criada por outro programador não sei o que faz
  • woo-artistas.php: página para listagem dos artistas
  • woo-carrinho-antiga.php: template antigo da página de carrinho
  • woo-carrinho.php: template da página de carrinho
  • woo-categoria-filha.php: template para exibir categorias filhas de uma categoria
  • woo-categoria-pai.php: template para exibir apenas categorias pais
  • woo-categorias.php: template padrão de categorias WooCommerce
  • woo-contatos.php: template part para edição de dados de contato MINHA CONTA
  • woo-enderecos.php: template par para edição de dados de endereços MINHA CONTA
  • woo-lista-de-desejos.php: template para exibir produtos da lista de desejos MINHA CONTA
  • woo-login-cadastro.php: template do formulário de login ou cadastro MINHA CONTA
  • woo-pagina-abstrata.php: template página padrão WooCommerce
  • woo-pagina.php: template página pdrão WooCommerce
  • woo-pedidos.php: template página WooCommerce MEUS PEDIDOS - MINHA CONTA
  • woo-single-produto.php: template WooCommerce para exibir um produto
  • woocommerce.php: template padrão de integração WooCommerce
  • ## Lógica básica de exibição dos produtos BeWatch A exibição básica de um relógio BeWatch: ![Documentação técnica BeWatch - 2018/2020](https://www.diogenesjunior.com.br/docs/logica-produtos-0.jpg) As layers que compôem o produto são divididas da sequinte maneira: ![Documentação técnica BeWatch - 2018/2020](https://www.diogenesjunior.com.br/docs/logica-produtos.jpg) Onde dependendo da escolha do usuário nas pulseiras, marcadores, ícones ou escrita, vamos alterar o SRC das tags IMGS correspondêntes a cada layer. No caso da escrita, a lógica é semelhante, mas o texto personalizado do usuário, é inserido em uma div simples: ![Documentação técnica BeWatch - 2018/2020](https://www.diogenesjunior.com.br/docs/logica-produtos2.jpg) ![Documentação técnica BeWatch - 2018/2020](https://www.diogenesjunior.com.br/docs/logica-produtos3.jpg) ## Lógica de inclusão de produto no carrinho Cada produto adicionado ao carrinho, terá diferentes opções personalizadas pelo usuário. Para isso, adicionamos CUSTOM METAS a cada produto, dentro de cada pedido WooCommerce. Além disso, tiramos um "print" da DIV das layers de personalização, para que o pessoal da administração da BeWatch, veja da mesma forma que o usuário, como ficou o resultado final da personalização. Esse print é feito através da biblioteca html2canvas.js que tira um print de da DIV, transformando esse print em binário, e ai salvamos esse binário em uma imagem dentro do servidor. O fluxo de inclusão do produto no carrinho, segue o seguinte diagrama: ![Documentação técnica BeWatch - 2018/2020](https://www.diogenesjunior.com.br/docs/logica-produtos4.jpg)

    Para adicionar o CUSTOM META ao produto do carrinho WooCoommerce, temos um filtro que é acionado quando enviamos a chave via POST, como pode ser visto abaixo, usando como exemplo PULSEIRA

    https://gist.github.com/diogenesjup/2609465edcac14319153f2d55e1b6da2

    Para o print da imagem a lógica é parecida, mas precisamos salvar o código binário da imagem (BASE64) em uma imagem real dentro do servidor, isso é feito através do código:

    https://gist.github.com/diogenesjup/74594a25bd9b97ed6a1dfd85a1348fae

    As CUSTOM METAS ficam salvas no wp-admin, em cada detalhe do pedido:

    ![Documentação técnica BeWatch - 2018/2020](https://www.diogenesjunior.com.br/docs/logica-produtos5.jpg) ## Conclusão e observações finais - Qualquer dúvida técnica pode ser enviada exclusivamente nesse diretório https://github.com/diogenesjup/Documentacao-tecnica-BeWatch/issues . Dúvidas enviadas através de outros canais não serão respondidas.
    - Atualizar o WordPress ou o WooCommerce para a versão mais recente é totalmente seguro e recomendado.A única ressalva aqui é referente os plugins que não estão listados nesse documento, por que não sei como será o comportamento dele. - O bug do estoque para novos produtos (relatados na descrição do arquivo script-db.php) se da por causa que ao adicionar um novo produto, por alguma razão, ele já começa com o status do estoque OUT OF STOCK, mesmo se duplicando de um produto com estoque. Para corrigir isso, o script em questão da um UPDATE em todo o banco, deixando todos eles em estoque (a administração da BeWatch não utiliza estoque único por produto):

    meta_key = '_stock'
    meta_value = '100'

    meta_key = '_stock_status'
    meta_value = 'instock'


    - Ao fazer atualizações no código fonte, cuidado com o cache, o plugin escolhido e utilizado pela admnistração BeWatch costuma demorar para propagar alterações nos arquivos PHP, CSS e JS.