it-swarm-es.com

Personalizar el primer elemento en una vista

Como bloque en mi página de inicio, estoy tratando de generar:

<ul>
  <li><a><img><p>Node 1</p></a></li>
  <li><a>Node 2</a></li>
  <li><a>Node 3</a></li>
  <li><a>Node 4</a></li>
</ul>

donde cada <li> representa un nodo, y la imagen/texto suministrado por los campos CCK adjuntos a cada nodo.

Actualmente, estoy usando una vista de bloque para generar los nodos 2-4, y una vista de Adjunto para presentar el primer nodo como se describe aquí: http://www.agileapproach.com/blog-entry/the-views2 -adjunto-pantalla

El problema es que mi salida termina más así:

<div class="attachment attachment-before">
  <div class="view view-homepage-news ..">
    <div class="item-list">
      <ul>
        <li class="views-row ...">  
          <a><img><p>Node 1</p></a>            
        </li>
      </ul>
    </div>  
  </div> <!-- /.view -->
</div>
<div class="item-list">
  <ul>
    <li class="views-row ..."><a>Node 2</a></li>
    <li class="views-row ..."><a>Node 3</a></li>
    <li class="views-row ..."><a>Node 4</a></li>
  </ul>
</div>

Probablemente pueda doblar esa salida según mi propósito, pero implicará muchas plantillas y configuraciones. También me gustaría evitar usar CSS y/o JavaScript para modificar la salida, a menos que esa sea mi única opción.

Dado esto, ¿cuál es la forma más fácil de acercar la salida a lo que necesito que sea?

Editar: aquí hay un código php aproximado que estoy usando en el campo de código php personalizado (basado en la sugerencia de Jeremy French: Aquí está el código que estoy usando en mi PHP campo personalizado de código:

<?php
  ++$static;
  if ($static == 1) {
    $nd=node_load($data->nid);
    $img_path = imagecache_create_path('news_image_thumbnail', $nd->field_image[0]['filepath']);
    print '<a><img src="' . $img_path . '"><p>Node 1</p></a>';
  } else {
    print "<a>Node $static</a>";
  }
?>
7
Daniel Nitsche

Podría hacer algo con vistas del campo personalizado .

Agrega un campo php, lo obtiene solo para mostrar el marcado que desea (sin elementos que contengan) y genera un valor solo para la fila número 1.

5
Jeremy French

Personalmente uso funciones de preproceso para hacer esto, algo como lo siguiente:

function HOOK_preprocess_views_view_fields(&$vars) {
  if ($vars['view']->name == 'VIEW_NAME' && $vars['view']->row_index == 1) {
    // Do stuff here.
  }
}
8
Decipher

No estoy seguro si entiendo su pregunta correctamente, pero creo que podría usar el módulo Vistas semánticas para esto. Si configura el Estilo en Configuración básica en Vistas semánticas, tendrá una opción en la configuración de Vistas semánticas para establecer un "atributo de primera clase", que lo ayudará a orientar el primer elemento de la lista en su vista en el estilo de su tema. archivo css.

6
Jay

La solución más fácil es con una plantilla personalizada. Sin embargo, no necesita ser mucho trabajo. Con la información de temas disponible en la interfaz de vistas, puede ver qué plantilla necesita cambiar. Todo lo que necesita hacer es agregar un código para imprimir los elementos adicionales para el primer nodo. Las vistas recorrerán cada fila, por lo que debería ser fácil.

4
googletorp