Pergunta

Estou tentando estilizar a visualização do produto em um site Drupal, mas estou tendo problemas. Não consigo encontrar onde a visualização do nó (produto) está montada no ubercart!

Estou usando o UC 5.x-1.7 e preciso estilizar a página de visualização do nó (produto).No momento, em meu arquivo node.tpl.php, tenho

print $body;
que exibe todos os SKU, atributos, preço, imagem etc.

O problema é que preciso ter isso em um estilo diferente - tenho que trabalhar com um design feito por um designer.Comecei a refazer minha própria versão, usando variáveis ​​como

$node->content['body']['#value']
etc.

Tive problemas ao tentar trabalhar com os vários atributos de um produto.Não consigo descobrir como colocá-los em minha página ou qualquer documentação sobre como trabalhar com eles do ponto de vista de um codificador.

Existe uma maneira mais fácil?Onde eu procuraria estilizar a exibição existente (ou seja,a variável $body)?

Editar:meu tema é baseado no tema Zen

Foi útil?

Solução

Você vai querer dar uma olhada nos modelos que estarão em um caminho como:

./sites/all/modules/ubercart/uc_product/views

Isso será um começo.É aí que o nó provavelmente será construído.

Outras dicas

Se o problema for puramente de estilo, você pode escrever seu próprio CSS para fazer isso.

Você pode usar o módulo de teatro para lhe dizer quais arquivos de modelo usar, acho que existem alguns que vêm com o ubercart que você pode substituir.Veja a seção de modelo de candidato das informações

Finalmente você pode usar hook_nodeapi op = visualizar para controlar o que realmente entra na página para exibir na variável $body.

Se você usar o módulo Devel, poderá ver a estrutura exata dos arrays e objetos e obter exatamente o que precisa do objeto $node.em seguida, crie um arquivo node-product.tpl.php e substitua a variável $content por essas partes.A maioria desses valores de variáveis ​​tem a marcação intacta.

Se você quiser alterar a marcação, digamos, dos atributos, será necessário alterar a função de pré-processamento que processa o atributo div.Se você simplesmente descartar o id="attributes" (classe talvez?esqueci) div do início e do fim, todos eles serão impressos individualmente em seu próprio wrapper class="attribute".Basta adicionar isso ao seu arquivo template.php.

Você pode então movê-los por toda a página com CSS, em vez de mantê-los todos presos em uma div.

Você também pode usar o método acima de imprimir as variáveis ​​de página separadas para mover os diferentes elementos na marcação.

Muito disso pode ser feito com CSS puro, mas é bom ter uma marcação que não quebre quando o CSS é exibido incorretamente em navegadores ruins.

Espero que isso seja útil.Não tenho certeza se tudo isso funcionará no Drupal 5, já que estava fazendo tudo isso com o 6...então, esperançosamente.

Aqui está um exemplo de uso de hook_nodeapi conforme mencionado por Jeremy French:

/**
 * Implements hook_nodeapi().
 */
function YOUR_MODULE_nodeapi(&$node, $op, $arg3 = NULL, $arg4 = NULL) {
  switch ($op) {
    case 'view':
    // Don't show list price unless set.
    if (isset($node->content['list_price']) && $node->list_price == 0) {
      unset($node->content['list_price']);
    }
    break;
  }
}

Procure uc_product_view() em module/ubercart/uc_product/uc_product.module para ver os vários campos de conteúdo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top