Detalhes do produto
Página responsável por mostrar os detalhes do produto e sequencialmente adicioná-lo ao carrinho.
# obtendo informações do produto em questão
# instanciar o produto
{% set produto = store.productDetail(productId) %}
O parâmetro productId é obrigatório para a consulta dos dados do produto.
Para obter o ID do produto (productId) a partir da rota (URL), utilize a variável extra.id, exemplo: store.productDetail(extra.id)
IMPORTANTE!
Para incluir a parte dinâmica do produto, ou seja, onde aparecem o preço, quantidade, botão de adicionar ao carrinho e demais, você tem 02 opções.
- Na primeira você pode usar o modelo padrão wBuy, ao qual irá carregar dinamicamente o conteúdo sem a possibilidade de personalização do HTML.
- Na segunda opção você poderá adicionar os blocos disponíveis, respeitando a regra pré-estabelecida e descrita abaixo.
Opção 1 - Modelo dinâmico padrão wBuy
# copie e cole onde deseja que o conteúdo dinâmico apareça em seu template
{{ dynamic_include|raw }}
O resultado será parecido um dos modelos abaixo, dependendo se está ativa a grade ou não na loja virtual:
![]() |
![]() |
Opção 2 - Modelo dinâmico personalizado
# exemplo de utilização
# insira onde deseja que o conteúdo dinâmico apareça em seu template
{% set sku = extra.sku ? extra.sku : produto.sku %} // define o sku que deverá inicializar
# faça um include do seu widget dentro de uma div#inc_sku
<div id="inc_sku">
{{ include('caminho-do-seu-widget.html') }}
</div>
O seu widget de inclusão deverá ser construído seguindo as instruções e parâmetros encontrados aqui, em html.productDetailSKU(sku, extra.id).
# includes padrões
Para resgatar os últimos 03 comentários ativos do produto usando o widget padrão, chame-o com o seguinte trecho:
{{ include('includes/product_comments.html') }}
Abaixo segue o conteúdo padrão do widget product_comments.html. Caso deseje alterar o conteúdo do include padrão, crie um novo widget com o conteúdo desejado e chame-o no lugar. Você também pode utilizar a documentação do método store.getCommentsProduct(productId) para encontrar seus comentários.
{% set comentarios = store.getCommentsProduct(extra.id) %}
<h2 class="t">AVALIAÇÕES ({{ comentarios.total }})</h2>
{% if comentarios.total == 0 %}
<div class="block margin-bottom text-center">
<p class="text-warning">Você conhece este produto?<br>O que pode nos contar sobre ele?</p>
</div>
{% else %}
<div class="itens">
{% for comentario in comentarios.items %}
<div class="item">
<div class="h">
<span>{{ comentario.nome }} - {{ comentario.data|date('d/m/Y') }}</span>
<div class="rat">
{{ comentario.estrelas|raw }}
</div>
</div>
{% if comentario.comentario %}
<p class="c">{{ comentario.comentario }}</p>
{% endif %}
</div>
{% endfor %}
<div itemprop="review" itemtype="http://schema.org/Review" itemscope>
<div itemprop="author" itemtype="http://schema.org/Person" itemscope>
<meta itemprop="name" content="{{ comentarios.items[0].nome }}" />
</div>
<div itemprop="reviewRating" itemtype="http://schema.org/Rating" itemscope>
<meta itemprop="ratingValue" content="{{ comentarios.items[0].voto }}" />
<meta itemprop="bestRating" content="{{ comentarios.items[0].voto }}" />
</div>
</div>
</div>
{% endif %}
{% if comentarios.items|length >= 1 %}
<a href="#" class="b mymodal" data-include="inc.php?meio=produtos_det_comentarios&id={{ extra.id }}" data-title="Avaliações"><i class="fa fa-list-alt"></i> ver todas avaliações</a>
{% endif %}
<a href="#" class="b mymodal{{ comentarios.items|length == 0 ? ' block' : '' }}" data-include="inc.php?meio=produtos_det_comentar&id={{ extra.id }}" data-width="400" data-title="Avaliar"><i class="fa fa-pencil"></i> deixe sua avaliação</a>
Para incluir os botões de compartilhamento do produto, adicione o seguinte trecho:
<div class="row">
<div class="col">
<p class="text-muted mb-1">Compartilhe</p>
{{ include('includes/share.html') }}
</div>
</div>
# session / produtos curtidos
Através do método store.getSession() você conseguirá obter todos os produtos que foram curtidos pelo usuário na sessão atual, evitando assim que ele possa curtir novamente o produto. Exemplo:
{% set session = store.getSession() %}
{% if extra.id not in session.curtidos %}
<a href="" class="btn btn-light curtir"><i class="fa fa-fw fa-heart-o text-danger"></i> Curtir</a>
{% else %}
<span class="btn btn-light disabled"><i class="fa fa-fw fa-heart text-success"></i> Curtiu!</span>
{% endif %}
# avaliações TrustVox (quando disponível na loja virtual)
# estrelas de votação
{% trustvoxStars = html.trustvoxProductStars(produtoId) %}
# bloco de avaliações
{% trustvoxRating = html.trustvoxProductRating() %}
# variáveis disponíveis através de store.productDetail(productId)
Todas variáveis disponíveis encontra-se aqui: store.productDetail(produto_id)
Aqui você encontra um modelo completo padrão da página de detalhes do produto: Página de detalhes do produto

