2009-12-02 16 views
6

Tengo un tipo de contenido Restaurante. Para cada restaurante, me gustaría grabar su menú.Tipo de contenido de Drupal (restaurante) Diseño

Los datos de la muestra se vería así:

bebidas

  • Coke                                                 de agua $ 4.99
  • Mineral                     $ 2,99

cóctel

  • Blue Lagoon                           $ 9,99

    (X combinado con Y etc)

  • Red Sapphire                       $ 9,99

    (Otro X mezclado con bla)

Pasta

  • clásico boloñesa       $ 13,69

    (Pasta de su elección mezclado con nuestras especialidades caseras salsa boloñesa)


Como se puede ver, el menú consistió en varios componentes: categorías, nombre del menú, descripción, precio. También sería genial si pudiéramos reorganizar las categorías (algunos restaurantes pueden preferir que sus bebidas se muestren antes de su encuentro, mientras que otros prefieren lo contrario).

  1. ¿Cómo recomendarías el diseño del tipo de contenido?
  2. Si fuera a utilizar la referencia de nodo, ¿hay alguna forma/módulo fácil para permitirme editar el menú directamente desde el formulario de edición del restaurante? (Tal vez algunas fichas adicionales para el menú)

Respuesta

3

La forma en que lo haría probablemente sería así:
Nota, estoy acostumbrado al desarrollo de Drupal, por lo que sería capaz de hacer muchas de ellas cosas bastante rápido, ya que hice algo similar recientemente. Esta podría no ser la mejor opción para ti.

  1. En un módulo crearía los dos tipos de contenido para este, restaurante y menú_item.
  2. El restaurante probablemente solo sea el título y otro campo que utilizaría para los tipos de elementos del menú. No estoy seguro de cómo lo haría, depende un poco del futuro del proyecto. Podría elegir no hacer el tipo de contenido del restaurante o no hacer algo especial para él, y crear una tabla únicamente para ordenar los tipos de elementos del menú.
  3. La mayor parte del tipo de contenido del elemento de menú se puede hacer a través de CCK, pero probablemente crearía una tabla y campos personalizados para su pedido (esto es algo que he hecho varias veces, así que tengo un fragmento para hacer el js dragable sistema de ordenamiento como lo que CCK hace para ordenar campos). También podría optar por manejar los precios yo mismo, si necesito un mejor control en diferentes casos, como hacer cálculos de intercambio, etc.
  4. Para las categorías que usaría taxonomía (el uso de la taxonomía ofrece una gran cantidad de bonificaciones adicionales como SEO) .
  5. Usaría la referencia de nodo para vincular los elementos del menú al menú que necesiten.
  6. El resto de los campos de elementos de menú son solo campos de texto que CCK manejaría muy bien.
  7. Usaría node_api para buscar los elementos del menú para los nodos del restaurante, para que con el tematizado, la vista del nodo del restaurante sería la visualización del menú (si esta es la característica principal, de lo contrario haría una pestaña para el menú y mantener los detalles del restaurante en la vista de nodo).
  8. Con algunos form_alter crearía un sistema de pedidos que está conectado al sistema que elija para ordenar las categorías.
  9. Podría permitir que los administradores puedan cambiar el orden de los elementos del menú en la pantalla del nodo, o crear una pestaña para él. Depende de lo que el cliente quiera.

Este es un poco desarrollador pesado, ya que muchas de estas cosas tendrían que ser codificadas. Podrías ir muy lejos solo usando cck y views, pero prefiero crear un módulo para esto. La razón es que si el cliente desea que esto cambie en medio año o que incluya características adicionales, es posible que me cueste mucho implementarlo. La integración con cck y las vistas puede ser muy complicada y lenta, por lo que usar un poco más de tiempo ahora lo haría mucho más flexible y extensible. También he hecho cosas diferentes que tienen algunos puntos en común, así que podría C/P una gran cantidad de código, que sé bien, y simplemente ajustarlo aquí y allá para algunas de estas cosas. Esa también es en parte la razón por la que voy por esta ruta, ya que el uso de cck y views por sí solo no me ahorraría tanto tiempo

+0

Me gusta esta propuesta, aunque no me gustaría, a menos que otras partes del proyecto explícitamente necesiten desacoplar las diferentes partes del menú (pero esta es una cuestión de filosofía de desarrollo, así que no estoy subestimando esto). la solución es mala de alguna manera!). Me gusta especialmente el punto n. ° 4, ya que la verdadera taxonomía aporta varias ventajas de diseño, además del punto de búsqueda googletorp ya mencionado). – mac

+0

@mac La ruta a seguir depende en gran medida del proyecto. Algunos de mis proyectos están muy bien definidos, y en tal caso, sabría si todo esto sería necesario, o haría algo más simple con menos código. Pero si esto fuera por un sitio que con el tiempo se extenderá en diferentes áreas, preferiría tener las cosas más bajo control. Pero como dices, es una cuestión de filosofía de desarrollo. Una razón para que yo favorezca esta táctica, también podría ser el tipo de trabajo que he estado haciendo el mes pasado o dos que no ha sido con Drupal :) – googletorp

4

RESTAURANT content type. Campos para nombre comercial, dirección comercial, teléfono, fax, sitio web, correo electrónico, mensajería instantánea, twitter, propietario de negocio, contacto comercial (como gerente), descripción del restaurante, logotipo y enlace de ubicación de mapa de google (o implementación de ubicación y módulos de gmap) etc. Tal vez use un módulo de cinco estrellas para habilitar las valoraciones de los restaurantes.

FOOD taxonomía hiearquical (necesita un módulo para esto).Las categorías de alimentos son bebidas (alcohólicas, sin alcohol, etc.), sopas, ensaladas, desayunos, almuerzos, cenas, postres, entradas, sándwiches, mariscos, etc.

Tipo de contenido ALIMENTACIÓN. Campos para el campo de referencia del nodo al nombre RESTAURANT para que su menú se construya y organice correctamente, FOOD, selección de taxonomía jerárquica, título de alimento (McRib, Whopper, Bloomin Onion, etc.), precio, opciones de preparación (medio, bien hecho, etc.), las imágenes de alimentos y las adiciones que se pueden combinar con este plato deben ser opciones de listas de selección o referencias de nodos a otros tipos de contenido de alimentos (patatas trituradas o al horno con eso?)

En cuanto a las imágenes, use imagecache para genere varios tamaños útiles de todas las fotografías, de modo que pueda miniaturas en miniatura, imágenes de tamaño mediano y fotos de gran tamaño de los platos.

Mostrar en CSS que se parece a un menau. Mire los sitios web de restaurantes nacionales como Chilis.com para ver cómo lo hacen. Proporcione enlaces de menú de los términos de taxonomía de alimentos para cada restaurante y una vista de restaurantes con filtros expuestos para que los usuarios puedan encontrar restaurantes fácilmente por tipo, ubicación, clasificación por estrellas, etc.

Suena como un proyecto divertido. Me gustaría ver un estudio de caso publicado cuando hayas terminado.

+0

¿Alguien marcó esto -1? ¿Inútil? ¿Alguna idea de por qué? Pensé que era útil, proporcioné una solución que respondió todas las partes de su pregunta. Tal vez me perdí algo? Por favor dime que hice mal? Creo que las personas que abran una respuesta deberían ser forzadas a explicar por qué lo hicieron, a proporcionar retroalimentación constructiva por qué la respuesta dada no fue útil. De lo contrario, debe haber una fea sensación de competencia entre quienes responden, como los autores de Amazon que revisan los libros de la competencia para mejorar su apariencia. ¿Hay un wiki que discute este problema? –

+0

Hay http://meta.stackoverflow.com para discutir este tipo de problemas. Y sí, ya hay una discusión en curso sobre esto, pero el resultado hasta ahora parece ser: no, el sistema es bueno como es. Mi solución también se restó porque a alguien no le gustó su enfoque, aunque, como el tuyo, es técnicamente absolutamente correcto: diría que es normal que a veces sea rechazado por cuestiones de estilo/enfoque/filosofía diferentes. Si hay errores reales/información incorrecta en una respuesta, sin embargo, ¡alguien te lo hará saber en una fracción de minuto! ;) – mac

+0

¡gran solución! Me gusta mucho :) +1 – giorgio79

1

tuve que hacer algo muy similar a esto. Lo resolví con paneles, vistas y cck. creé un tipo de nodo 'restaurant' y un tipo de nodo 'menu_item'. la taxonomía menu_item se establece utilizando un vocabulario específico. utilicé paneles para mostrar el menú de rutas nombre-restaurante/menú, luego visualizas + cck para mostrar los elementos en el menú (utilicé referencias de nodos para vincular elementos a restaurantes). luego agrupé la vista por taxonomía: campo de término.

1

La primera idea que tuve que hacer esto podría ser algo de la siguiente manera:

  • Alimentos tipo de contenido con: nombre (título), descripción (cuerpo) y el precio
  • tipo de contenido Restaurante con nodo de alimentación múltiple REFERENCIA campos
  • vocabulario asociado a los alimentos con términos como bebidas, cócteles, pasta, .. (y estoy bastante seguro de que es un módulo que le permiten definir los pesos términos de la taxonomía)

De esta manera, puede almacenar sus datos.

Para la parte de visualización, se puede utilizar:

  1. (mejor enfoque) un nodo-restaurant.tpl.php personalizado que crea la página con formato muestra el alimento categorizados por término de taxonomía (estoy bastante seguro de que tener acceso directo a los nodos referenciados a través de las variables de plantilla. Voy a probar eso y hacerle saber)
  2. (podría hacerse a través del panel de administración) Una vista en un bloque ubicado en la región de "contenido" que muestra la referencia nodos, formateados como una tabla agrupada por término de taxonomía en el vocabulario de "Categoría de alimentos". Puede obtener el nodo nid actual (usado para filtrar) usando argumentos.

Recomiendo la primera opción, ya que es más compatible con los estándares, más rápida en la ejecución y podría evitar algunos problemas posibles que podrían provenir de las vistas + camino de bloque.

+0

(Probablemente el mejor enfoque sería escribir un módulo de nodo que lo haga creando un formulario AHAH de valores múltiples, con categoría/título/precio/descripción, pero supongo que este no es el tipo de solución que está buscando ..) – redShadow

+0

..y mediante el uso de la referencia de nodo, también tiene la ventaja de las definiciones de alimentos compartidos (por ejemplo, si el precio del vino tinto cambia, puede actualizarlo automáticamente en todos los menús, no solo uno ...). – redShadow

Cuestiones relacionadas