Guia da Extensão #13 - Avaliação e Comentários
Como usar e inserir corretamente nos websites - requer a Extensão de Usuários #8
Essa extensão permite que usuários logados possam criar comentários com avaliação para, a princípio, páginas de produtos.
⚠️ Funcionalidade como artigo útil (sim/não), avaliação de compras, entre outros, ainda estão em stand by.
⚠️ Por enquanto o www.etalproduto.com.br está com esta extensão, ela não vem com a instalação de lojas.
Sobre as configurações (e limitações atuais)
1) As avaliações são aplicadas nas páginas dos produtos, somente. O rating precisa estar associado à um item, no caso, ao produto.
2) Apesar de ter a chance de escolha, somente Estrelas está funcional;
3) Mesmo que possa escolher, todos os comentários precisam ser aprovados via painel;
4) O usuário pode enviar outro nome além do seu de usuário
5) O usuário poderá enviar telefone e e-mail (somente o site pode ver, outros usuários, não);
6) Habilitar notificações (apesar de estar presente, não há disparos);
🚨 Os scripts são gerados a partir das opções, então, sempre que houver alterações, é necessário atualizar os scripts e, consequentemente, o catálogo de produtos.
Scripts e uso no website
Como o usuário precisa estar logado, é necessário o uso da função loggedInEvents(). Para tudo funcionar há script JS e também elementos no front-end obrigatórios.
Elementos no frontend
<div class="col-12" id="productRating"> <div id="productRatingResume"></div></div>
Este é o conteiner que irá exibir o resumo de avaliações e o convite para votar. E
<div class="col-12" id="productRatingComment"></div>
onde irá carregar os comentários e o formulário para votar caso esteja logado. Normalmente esse vem abaixo. Veja como eles ficam, exemplo extraído od etalproduto.com.br
Scripts
Para funcionar corretamente é necessário inserir o script, conforme na aba Scripts da extensão o script que é exclusivo para seu website (token próprio), conforme o exemplo abaixo:
<script data-productRatingEnabled="true" data-productRatingType="1" data-productRatingComments="true" data-productRatingCustomName="true" data-productRatingSendContactData="true" data-productRatingNotifications="true" src="https://www.craft.interago.com.br/App/Extensions/13/tag/ratingComments.js" data-t="K1p0aHZuSDJPSjBnUWhCTGw4cXBvQT09" data-resume="productRatingResume" data-comm="productRatingComment" data-productId=""></script>
Este script precisa ser inserido após o script de login. Uma vez inserido, é possível chamar a função que carrega os comentários e habilita o usuário a comentar, caso esteja logado. A função enableUserToVote (que habita o usuário a logar precisa estar dentro do login, desta forma:
function checkAccEvents() { let validateUserCallback = validateUser(); console.log(validateUserCallback); }; function loggedInEvents() { if(localStorage.getItem("uvc") === null) { let accountButtonsContainer = document.getElementById('accountButtonsContainer'); accountButtonsContainer.innerHTML = `<a href="https://www.etalproduto.com.br/conta/account.php" id="accountButtonEnter" class="accountButtonItem">Conta</a>`; } else { let userInfo = JSON.parse(localStorage.getItem("uvc")); let accountButtonsContainer = document.getElementById('accountButtonsContainer'); accountButtonsContainer.innerHTML = `<a href="https://www.etalproduto.com.br/conta/account.php" id="accountButtonEnter" class="accountButtonItem">${userInfo.profileName}</a>`; } //usuário logado, habilitar para votar enableUserToVote()}
Estilos personalizados
A extensão cria diversos elementos na página que podem ser customizados de acordo com o CSS, abaixo está o CSS do etalproduto. É necessário a inserção dos scripts, inclusive, para aparecer as estrelas de avaliação.
<!-- rating --><style> /* Desktop styles */ @media (min-width: 768px) { #ratingCommentName, #ratingCommentEmail, #ratingCommentPhone { width: 30%; } #ratingCommentTextArea { width: 100%; } }/* Mobile styles */ @media (max-width: 767px) { #ratingCommentName, #ratingCommentEmail, #ratingCommentPhone, #ratingCommentTextArea { width: 100%; } } .ratingCommentStar { cursor:pointer; font-size: 22px; margin: 2px 0; }/* Shake animation */ @keyframes shake { 0% { transform: translateX(0); } 20% { transform: translateX(-3px); } 40% { transform: translateX(3px); } 60% { transform: translateX(-1px); } 80% { transform: translateX(1px); } 100% { transform: translateX(0); } }
#productRatingComment { background-color: white; padding: 20px; border-radius: 20px; } #ratingCommentTextArea { margin-top: 10px; border: 1px solid #c4c4c4; border-radius: 5px; padding: 8px; font-size: 16px; color: #333; } #ratingCommentName, #ratingCommentEmail, #ratingCommentPhone { margin-right: 15px; margin-top: 20px; border-radius: 5px; border: 1px solid #c4c4c4; padding: 12px; font-size: 16px; margin-bottom: 10px; } #ratingCommentConsentMessage { display: block; font-size: 11px; color: #555; margin:15px 0px; }
#ratingCommentSendButton { background-color: #412293; color: white !important; padding: 8px 50px; margin-top: 10px; display: inline-block; border-radius: 5px; font-size: 18px; font-weight: bold; transition: 0.3s ease; cursor:pointer; }
#ratingCommentFirstCommentLabel { display:block; margin-top:10px; } .ratingCommentStar { display:inline-flex; width:32px; height:32px; background-image:url(https://www.interago.com.br/App/Sites/416/mc/rating/starRatingEmpty.svg); background-size:contain; } .activeRatingStar { background-image:url(https://www.interago.com.br/App/Sites/416/mc/rating/starRating.svg); }
.ratingResumeStar { display:inline-flex; width:24px; height:24px; background-size:contain; background-image:url(https://www.interago.com.br/App/Sites/416/mc/rating/starRatingEmpty.svg); }
.resumeActiveRatingStar { background-image:url(https://www.interago.com.br/App/Sites/416/mc/rating/starRating.svg); }
.resumeHalfRatingStar { background-image:url(https://www.interago.com.br/App/Sites/416/mc/rating/starRatingHalf.svg); }
#ratingCommentRating { display:inline-flex; align-items:center; grid-gap:5px; }
#ratingCommentInviteToRating { background-color: #ffa333; padding: 4px 16px; font-size: 12px; font-weight: bold; border-radius: 5px; margin-right: 5px; cursor: pointer; margin-left:10px; display:inline-block; } #ratingCommentFirstRatingLabel { color:#555; font-size:13px; } #ratingCommentTextAreaCounter { font-size:13px; display:block; } #ratingCommentTextAreaMessage { font-weight:bold; margin-left:10px; } #ratingCommentFirstCommentLabel { color:#555; font-size:13px; margin-top:30px; } #ratingCommentInviteUserToLogIn { display: block; font-size: 14px; margin: 10px 0; background-color: #de1857; color: white; padding: 5px 20px; border-radius: 5px; font-weight: bold; width: fit-content; }
#ratingCommentSendingMessage { display: block; color: #ffa332; margin: 10px; font-weight: bold; } #ratingCommentErrorMessage { display:block; color:red; font-weight:bold; margin:10px; } #ratingCommentSuccessfullSent { font-weight: normal; background-color: #e5fde5; padding: 10px; border-radius: 10px; } .ratingComment { background-color: white; padding: 10px; border-radius: 10px; margin-bottom: 30px; font-size: 13px; line-height: 18px; } .ratingCommentsStarsOnComments { display:block; margin-bottom:15px; } .ratingCommentsStarsOnComments .ratingResumeStar { width:18px; height:18px; }</style>