Uit DeVliegendeWiki
Dit artikel bevat een gedetailleerde uiteenzetting hoe je met behulp van de Views 2 module voor Drupal 6, afbeeldingen (schilderijen in dit geval), in een grid kunt weergeven, met links naar de betreffende content. Ik heb vaak de grootste moeite om iets met Views aan de praat te krijgen. Vandaar.
Iets meer in detail, is dit wat we willen:
- Een contenttype waarin schilderijen opgeslagen kunnen worden;
- Mbv. de ImageCache-module deze schilderijen schalen zodat ze in drie kolommen getoond kunnen worden;
- Mbv. de Views-module schilderijen tonen in drie kolommen;
- Bij doorklikken de schilderijen ingezoomd tonen, liefst in een aparte context, zoals Facebook's Theatre View.
1. Modules installeren
Download & installeer:
Activeer:
- CCK: Content, FileField en ImageField;
- ImageCache: ImageAPI, ImageAPI D2, ImageCache, ImageCache UI (niet helemaal zeker);
- Other: Advanced Help;
- Views: Views en Views UI.
2. ImageCache-preset aanmaken
Ga naar
Site building > ImageCache
en defineer een nieuwe preset, in dit geval: Schilderij.
In dit geval willen we dat de aspect ratio behouden blijft, en er mag niet gesneden worden (crop). Daardoor blijft er maar één actie over: Add Scale. Zie verder de afbeeldingen.
Dit is het voorbeeld: Als er een action wordt gekozen, wordt dat direct toegepast op dit voorbeeld. Da's handig: Als je dit voorbeeld niet ziet, is er iets mis, bv. tav. schrijfrechten op de genoemde map
| De gebruikelijke instelling: Alleen een waarde voor breedte instellen, in pixels. Allow Upscaling is tricky, omdat de kwaliteit van de afbeeldingen er onder lijdt, en als de oorspronkelijke afbeeldingen uiteenlopende aspect ratios hebben, blijft het een zooitje
| Het resultaat: Er is een map aangemaakt (zie groene balk), en het Drupal-logo is meegeschaald, en toevallig duidelijk te groot voor deze site
| Da's beter: 500 pixels in de breedte
| Maar we willen juist postzegelformaat, om schilderijen in kolommen te tonen. Dit is preset SchilderijDuim met afbeeldingen van 100 pixels breedt. Upscaling is uitgezet, zodat mensen sneller doorhebben dat ze per ongeluk een te kleine afbeelding willen gebruiken
|
3. Contenttype defineren
Ga naar Content management > Content types en maak een nieuw contenttype aan, in dit geval Schilderij. Merk op dat Drupal een map aanmaakt
| Klik op manage fields op een veld voor afbeeldingen toe te voegen
| Voeg veld toe. File wil zeggen dat de betreffende data als een bestand wordt opgeslagen en blijkbaar geeft Image aan om wat voor soort data het gaat. Na klikken op Save verschijnt er nog een scherm met instellingen, maar daar hoef ik nooit iets aan te veranderen
| Ga naar Display fields. Ik weet niet zo goed raad met Teaser-weergave, dus hopelijk dat het vinkje bij Exclude dat probleem oplost. Er staat ook een vinkje achter de tweede dropdown box, maar die kun je hier niet zien. Ik heb gekozen voor ...linked to image ipv. ...linked to node. 's Kijken hoe dat bevalt. Oh ja: Labe > Hidden, want ik kan helemaal niets met die stomme labels
|
4. Voeg content toe
Omdat we zeker willen zijn dat deze schilderijen goed in een grid uitkomen, heb ik zes schilderijen geüpload.
Zes schilderijen toegevoegd. Ik ken geen manier om ze naast elkaar weer te geven om te testen of ze dezelfde instellingen lijken te hebben
| Zie hier één van de geüploade schilderijen. De ImageCache-instellingen lijken prima te worden toegepast
|
5. Maak View aan
- Onderaan het View-scherm is het onderdeel Live preview. Dat is een goede graadmeter om na te gaan of afbeeldingen daadwerkelijk getoond worden. Live Preview moet al afbeeldingen tonen zo
Creëer View: Maak View SchilderijGrid aan. Ik ben er vrij zeker van dat het type Node moet zijn
| Advanced help: Ik volg de suggestie om Advanced help te installeren, al weet ik niet precies wat het voordeel is. Misschien kom ik er nu eindelijk achter
| Fields: Klik op het plusje achter het woord Fields. Nu verschijnt onder het hoofdscherm een nieuw scherm. Kies onder Groups voor Content. Dit beperkt de keuze tot twee mogelijkheden. We moeten Content: Schilderij (field_schilderij) hebben. Kies daarna Add
| Het veld wordt nog als Generic files aangemerkt...
| ...en je kunt aangeven wat er met het label moet gebeuren. Ik laat 't nog effe staan, want het is misschien handig bij debuggen...
|
...Belangrijk: Wijze van weergave. Ik kies SchilderijKlein image linked to image, maar ik weet niet zeker of dit klopt
| Filters: Zonder filter werkt het meestal niet. Klik op het plusje achter Filters. Nu verschijnt een nieuw subscherm. Kies onder Groups voor Node en zet een vinkje bij Node: Type > Add. Kies in het volgende scherm voor de relatie Is one of Schilderij
| Live preview: Nu moet voor de eerste keer de Live preview daadwerkelijk afbeeldingen tonen. Als dat niet het geval is, heb je een probleem
|
5.1. Troubleshooting: Er verschijnen geen afbeeldingen
- Je moet zowel een waarde bij Fields als bij Filters hebben;
- Maak een nieuwe View aan Dat gaat namelijk snel zat;
- Bij Fields, controleer (1) dat je het juiste veldt hebt, en (2) dat je het juiste formaat gebruikt. Vul anders Image in bij formaat. Dan wordt ImageCache niet gebruikt.
Misschien kan het helpen om de betreffende query te debuggen. Dit is de query behorende bij de Live preview-schermafdruk hiervoor. Merk op dat de weergave van de resulterende data hierin niet wordt gespecificeerd:
SELECT node.nid AS nid,
node_data_field_schilderij.field_schilderij_fid AS node_data_field_schilderij_field_schilderij_fid,
node_data_field_schilderij.field_schilderij_list AS node_data_field_schilderij_field_schilderij_list,
node_data_field_schilderij.field_schilderij_data AS node_data_field_schilderij_field_schilderij_data,
node.type AS node_type,
node.vid AS node_vid
FROM node node
LEFT JOIN content_type_schilderij node_data_field_schilderij ON node.vid = node_data_field_schilderij.vid
WHERE node.type in ('schilderij')