• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Drupal Views Cck Hans Rossel
 

Drupal Views Cck Hans Rossel

on

  • 4,544 views

 

Statistics

Views

Total Views
4,544
Views on SlideShare
4,544
Embed Views
0

Actions

Likes
1
Downloads
67
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Jyve . Look at 'Acting career' page Layouts: Choose the 'One column' layout to unlock some DS goodies. Fields: a whole bunch of fields offered by Drupal are available by default Fields: add a dynamic field 'All images' Fields: add block field: Powered by Drupal Look at homepage Layout: Teaser goedzetten: 3-col stacked View modes: teaser in sidebar too busy: extra view mode instead of Views fields Views integration: homepage alternating view modes + grouping Other entities: Profile block Comments layout HTML output: vergelijken node en comment
  • Jyve Tonen Extra's module, demo most important ones Field templates: reset als default kiezen en HTML vergelijken Field templates: Image bij article aanpassen in expert mode Regions to block: image in sidebar block Page title: manueel instellen Switching View modes: between full and teaser Views Displays: frontpage view aanzetten en velden tonen

Drupal Views Cck Hans Rossel Drupal Views Cck Hans Rossel Presentation Transcript

  • Drupal CCK & Views v5 Hans Rossel - www.koba.be
  • CCK / Fields
    • Content Construction kit of Fields module
    • Velden bij inhoudstypes
    • Historiek: flexinode->cck->fields
    • In D7: fields module in core
      • Fields op alle fieldable entities: node, user, tax of entities gemaakt door een module: Organic group, Commerce Product
      • Filefield, imagefield, imagecache in core
      • Nodereference en userreference in cck contrib
  • Views
    • Dynamic query builder, lijsten trekken
    • Earl Miles, Sony, Panels
    • http://drupal.org/project/views
    • D5: Views1: enkel nodes (=>nodecontent, nodecomments, ...)
    • D6: Views2: ook users, taxonomie, files, ...
    • D6: Views3: elke databron niet enkel db, ook apache Solr, Flickr, RDF, elke bron met api + OR mogelijkheid bij filters
    • D7: Views3 & fields in core.
  • Drupal installatie
    • Verondersteld gekend
    • Via devel generate kan een volle site opgebouwd worden (opgelet met files)
  • Lamp server op Ubuntu (debian)
    • sudo aptitude install php5 apache2 mysql-server phpmyadmin php5-mysql libapache2-mod-php5 php5-cli (voor drush)
    • root user paswoord instellen voor mysql
    • phpmyadmin: spatiebalk drukken om apache2 te kiezen + ok
    • testen: localhost, localhost/phpmyadmin
    • sudo /etc/init.d/apache2 restart
    • Alternatief: sudo tasksel install lamp-server
    • Meer info: https://help.ubuntu.com/community/ApacheMySQLPHP
  • Mod rewrite installeren 1) sudo a2enmod rewrite 2) sudo pico /etc/apache2/sites-enabled/000-default  3) Change AllowOverride None to AllowOverride All 4) Restart Apache: sudo /etc/init.d/apache2 force-reload
  • Drush: Drupal Shell
    • http://drupal.org/project/drush (ook voor windows)
      • http://vimeo.com/5207683
      • Extra http://drupal.org/taxonomy/term/4654
      • http://www.archive.org/details/DrupalconSf2010Drush
      • http://www.archive.org/details/DrupalconSf2010AdvancedDrush
  • Drush commando voorbeelden
    • Drupal installeren in htdocs of www mapje
      • drush (help uitleg)
      • drush dl drupal (download drupal)
      • drush dl cck views nl ckeditor acquia_marina backup_migrate (in drupal map)
      • drush en cck views (modules aanleggen, omgekeerd: dis)
      • drush cron
    • Drupal updaten met drush
      • drush bam backup of drush sql-dump > example10052010.sql
      • tar -czf drupal.tgz drupal
      • drush variable-set site_offline TRUE
      • drush up : update alle modules + backup code
      • drush updb: run update.php
      • drush variable-set site_offline FALSE
  • HOOFDSTUK 2 Content Ordening
  •  
  • Basis cck fields
    • Voornaamste extra fields
      • http://drupal.org/project/imagefield
      • http://drupal.org/project/filefield
      • http://drupal.org/project/date
      • http://drupal.org/project/email
      • http://drupal.org/project/link
      • http://drupal.org/project/emfield
  • CCK tekst
    • Nieuwsbericht met scheduler
    • Tekstveld ipv body
    • Reactie instellingen
    • Invoerformaat
      • Better formats
      • Wysiwyg filter
    • Widgets: (vergelijk met webform)
      • Textfield
      • Textarea
      • Select
      • Checkbox
    • Nodeformcols of vertical tabs: afwerking invoer
  • CCK USABILITY
  • Node Form Columns Usability vereenvoudiging cck formulieren
    • http://drupal.org/project/nodeformcols
  • Better messages
  • CCK Link
    • Links configureren
    • Weblinks module
    • Linkchecker
      • Automatisch controleren op dode links in textareas en link velden
      • Werkt op cron
      • Geeft overzicht van dode links en mogelijkheid om deze te deactiveren
  • CCK File en Image
    • Filefield
    • Imagefield
    • Image api
    • Imagecache
    • Transliteration
    • Filefield paths
    • Filefield sources
    • Image fupload
    • Dragn'drop uploads
  • Insert & Image Resize filter
    • http://drupal.org/project/insert
      • Zorgt voor extra buttons om filefield afbeeldingen in een textarea in te voegen
      • Zorgt voor dropdown met selectie van imagecache presets voor invoegen
      • Voordeel: Veiligheid & gebruiksvriendelijkheid gecombineerd: je hoeft geen <img> toe te laten voor anonieme gebruikers om afbeeldingen in te voegen + blijft eenvoudig om inline te plaatsen
  • Insert
  • Insert & Image Resize filter
    • http://drupal.org/project/image_resize_filter
      • Aan hoekjes trekken om afbeelding te verkleinen en toch een correcte resize opdracht uitvoeren in php
    • Kan goed gecombineerd worden met de insert module om een alternatieve vorm en veilige vorm van invoegen van afbeeldigen te verkrijgen.
  • HOOFDSTUK 2 VIEWS
  • Views handleiding & support
    • Advanced help module installeren
      • Ingebouwde handleiding van Views
      • Views documentatie op admin/advanced_help/views
      • http://views-help.doc.logrus.com : advanced help op site van Earl
      • http://views.doc.logrus.com : views 2 API op site van Earl
    • http://drupal.org/project/issues/views
      • Search inside gebruiken
      • Filteren op all support requests
    • http://drupal.org/handbook/modules/views
      • Gearchiveerd op vraag van Earl Miles
      • http://drupal.org/node/492210#comment-1714204
  • Default views
    • Frontpage view
      • Eenvoudigste: bootst de homepage /node na
      • Teaserlijst van laatste items met vinkje aangeraden op voorpagina aan
      • Is vanaf nu wijzigbaar
      • Niet vergeten bij websitegegevens frontpage te zetten ipv node voor homepage
  • ADMINISTRATIEVE VIEWS EXPORT EN AUTOMATISERING
  • Views Bulk Operations
    • Een bepaalde actie/rule uitvoeren op een selectie gemaakt met views
    • Een email sturen naar een groep mensen
      • Naar een user view
      • Naar de auteur van nodes: [mail] plaatsen bij ontvanger
      • Opgelet: Batch api (of jobqueue) aanzetten bij versturing van grote hoeveelheden
  • Soorten views
    • Node, comment, user, …
    • Formatting views queries p201
      • Queries bekijken
      • prototyping
  • Views Bulk operations
    • Default view aanpassen
      • admin/content/node2 bijsturen
      • Extra exposed filters
    • Acties:
      • Emails versturen (batch/nieuwsbrief)
      • Updaten van taxonomie
  • Actions/Triggers/Rules
    • Actions/Triggers: zit in Drupal core: het vinkje bij Trigger module aanzetten
    • Rules module: Geeft bijkomende verfijning en condities aan de acties
      • Een bericht op scherm plaatsen
      • Een automatische email versturen
      • Een nieuwsbrief nasturen
      • Een veld wijzigen
  • Rules
    • Email sturen bij indienen van vacature
      • Actions: maak de email actie
      • Trigger: new content
      • Condition: Node type=vacature
      • (Condition: Field has value)
      • Action: Send email
  • GEBRUIKERS EN PROFIELEN
  • Gebruikers en profielen Content profile module
      • Naam, voornaam, adres, lidnummer
      • Automatic Nodetitles
    Node view: Beheer profielen
      • N:Naam, N:straat, N:lidnummer, U:mail, U:edit, N:edit, N:updated
      • Exposed:naam, U:Created date of N:Updated date
      • Tabel: default sort
      • Permissies op de view: enkel admins
  • Gebruikers en Profielen (2) User view: Beheer accounts
    • Relationship: content profile
    • Fields: G:Naam,G:mail,G:rollen,G:edit,G:laatste toegang,N:naam,N:voornaam
    • Table view: Naam en voornaam samen in één vakje
    • Filter G:naam <>anonymous, rollen exposed, email exposed, naam exposed
    • Permissies: enkel admins
  • Gebruikers en profielen (3)
    • Mijn inhoud: blokken met inhoud van de gebruiker op de profielpagina
    • Argument:
      • Gebruiker:uid
      • Provide default argument: user id from url
      • Validator:gebruiker only allow numeric uid
  • Gebruikers en profielen
    • Mijn Reacties
      • Relationship: Reactie: Node
      • Fields: reactie:titel
      • Filters
        • (Node)Node:User posted or commented
        • (Node)Gebruiker: Current Ja of
        • Argument (Node): User:uid
  • Reacties beheren
    • Reactie view
      • Comments recent
      • Default view
    • Node view
      • Fields: R:titel, R:berichttekst, R:Auteur, R:indiendatum
      • Filters:Indiendatum>=-30days
  • Headline view
    • Hoofdview: Laatste nieuwsbericht
      • View met ingekorte tekst 1 item laatste nieuwsbericht
    • Subview: Titels andere nieuwsberichten
      • Lijst van titels van andere nieuwsberichten
  • HANDGEPLUKTE en BEINVLOEDE INFORMATIE
  • Drupal core standaard
    • Vinkje: vastgeplakt bovenaan de lijst
    • Vinkje: aangeraden op de voorpagina
    • Via de frontpage view kan hier in beperkte mate promotie van content worden gedaan
    • Via i18n: eventueel “aangeraden op de voorpagina” vertalen naar “in de kijker”
    • Nadeel: we krijgen slechts 1 indicator/lijst en vaak hebben we op een homepage meerdere nodig
  • Nodequeue
    • Voordeel
      • Mogelijkheid om zelf informatie te kiezen
      • Volgorde kan eenvoudig veranderd worden
      • Weergave bepalen via een view
      • Ideaal voor homepage, in de kijker, …
      • Rules: automatisch toevoegen aan nodequeue
    • Nodequeue aanmaken
    • Nodequeue view
      • Disablen indien niet nodig
      • In block weergeven: rechterkolom content
  • Flag
    • Mark as spam, mooie foto, bookmarks, goedgekeurd
    • Admin View
      • Relationship: Flag
      • Field: Flag:flaglink, relationship: goedkeuring
      • Acties/Triggers: op goedkeuring ook publiceren
        • Flag actions
        • Actions/triggers/rules
  • Ratings
    • Voting api
      • Relationship: node voting results: percent, no filtering, average
      • Sorteren op beste punten: (Voting results) Voting API results: Waarde desc
      • Field: (Voting results) Voting API results: Waarde
    • Fivestar
      • Vijf sterretjes voor score
      • User generated content
  • STATISTIEKEN
    • Statistics module aanzetten: 16 weken
    • Sort criteria: Most popular
    • Default view: backlinks
  • EXPOSED FILTERS
  • Exposed filters
    • Filters wijzigen via code
    • Checkboxen gebruiken (views checkboxes module/content taxonomy)
    • Hierarchical select
  • VIEWS ARGUMENTEN
  • User argument
    • “ Mijn inhoud”
      • Gebruiker: uid
      • Provide default argument: uid from url
      • Let op: dus best op /user/nummer doen anders is php code nodig om te bepalen wat de uid is of kan ook kiezen voor logged in user.
  • Node argument
    • Blok met veld dat behoort bij deze pagina
      • Bij inhoudstype: display settings: exclude dit veld
      • Node:nid
      • Provide default argument: nid from url
    • Blok met Meer nieuws
      • Node:nid, provide default argument: nid from url, exclude the argument
      • Zorgen dat pagina zelf niet in de lijst van meer staat => exclude
  • TAXONOMIE & CATEGORISEREN VIA NODEREFERENCE
  • Taxonomie views
    • Via taxonomie module indelen in woordenschatten en termen
      • Hierarchie
      • Free tagging
      • Multiple
    • 2 manieren voor de view
      • Veld All Terms: werkt best, geen filter
      • Veld Term: indien filter nodig of argument
  • Views met taxonomie
    • Voordelen
      • Mogelijkheid om hierarchie weer te geven via Relationship: parent term
      • Auto aanvullen in exposed filters maar nu ook http://drupal.org/project/autocomplete_widgets
    • Nadelen
      • Sorteren volgens taxonomie werkt niet: kan niet sorteren volgens alfabet of numeric, wel volgens taxonomie gewicht maar daar bug, random sort ook bug
      • Soms duplicate results (door koppeling van node en term tabellen)
      • Alternatieven met CCK select kun je perfect sorteren
  • Taxonomie view
    • Oefening
      • Taxonomie selecteren via exposed filter
      • Taxonomie via Argument
  • Gerelateerde content via Taxonomy: term id argument $node = node_load(arg(1)); if ($node) { $terms = taxonomy_node_get_terms_by_vocabulary($node, 1); $continenten = array(416,1,2,3,4,5,6,7,8); foreach ($terms as $tid => $term) { if (in_array($tid, $continenten)) { //$tids[] = '1'; // we dont want to have the continenten everywhere also if just one country selected } else { $tids[] = $tid; } } if (isset($tids) && strlen(trim($tids)) <> 0) { return implode (&quot;+&quot;, $tids); } else {return false;} } return false;
  • Nodereference
    • Steeds meer gebruikt als alternatief voor taxonomie
      • Gerelateerde content
      • Relatie kan beperkt worden via een view
    • Voordeel:
      • CCK
      • Is gekoppeld aan een eigenlijke pagina ipv aan een woord/term
  • Nodereference view Gewone nodereference
      • Ct Pagina heeft nodereference naar gerelateerde pagina
      • View in blok van
        • Field: Nodereference field
        • Argument: Node:nid,Default argument: Nid from url
        • Exclude/hide van Nodereference field in het inhoudstype pagina
    Andere toepassing: Blogroll: links bij bloghoofdpagina in zijkolom Opmerking: kan ook via theming
  • Reverse nodereference
    • Reverse nodereference
      • Ct Nieuws heeft nodereference naar (overzichts)pagina
      • Titel: nieuws bij pagina
      • Filters:N:Nieuws
      • Fields:Titel
      • Relationship:Inhoud:Noderef field, require
      • Argument:Node:Nid, relationship noderef field,provide default nid from url
      • Opm: Vergelijk met taxonomie
      • Vb: artikels bij magazine (inhoudstafel), ...
  • Views Alpha Pager
    • Glossary View
    • http://tedserbinski.com/tags/drupal/creating-alpha-pager-with-views-2-and-drupal-6
  • DATUM VIEWS
  • Events in Drupal
      Date/Calendar
      • De date module voorziet het datumveld
      • Met het datumveld kunnen lijsten worden getrokken in views en sorts, … gedaan
      • De calendar module is nodig als je een kalenderblok of pagina wenst
  • Datum views
    • Toevoegen van extra datum format op admin/settings/date-time/formats: wijzigen short in 14/10
    • Ical: importeren, exporteren Google calendar
    • Legend: verschillende kleuren ct
    • Date range
    • Calendar views
  • Date range
    • Zaken van komende twee weken
      • Tussen vandaag en +14d
    • Items die nog niet vervallen zijn
      • Einddatum > now
    • Werken met publicatie
      • http://drupal.org/project/scheduler
      • Rules
  • Calendar module
    • Weergave als een
      • Kalenderblok
      • Volledige kalender
  • Events
    • Webform: eenvoudig niet gekoppeld
      • http://drupal.org/project/webform
      • Versie 3 heeft gedeeltelijke views integratie
    • Signup module + theme
      • Theme in template.php
  • Andere datum views
    • Publicaties
    • Gebruikers volgens geboortedatum
  • PANELS
  • Panels: doel en historiek
    • Panels = layoutbuilder in Drupal
    • Earl Miles (Views)
    • Sony www.myplay.com
    • Versies 1,2,3
    • Toekomst: Drupal 8 misschien een eenvoudige panels achtige interface voor toevoegen van content in Drupal core
    • Documentatie: http://drupal.org/node/496278
  • Panels: voordelen
    • Point en click Drupal theming zonder html en php, templates opstellen via de interface
    • Slechts 1 soort inhoudsobject: panel waarin blokken, menus, views, velden, ... kunnen weergegeven worden => alles eenvormig op dezelfde manier behandelen
    • Complexe pagina layouts mogelijk zonder voorkennis van html/css
    • Flexibeler layouts: vb zelfde blok in verschillende regios, ...
    • Makkelijker en sneller wijzigingen aanbrengen aan templates
    • Ctools: vastleggen van layouts in exportables en features => exporteerbaar dus hergebruikbaar en opgenomen in svn/git revisiesysteem.
    • Varianten: andere soorten layouts volgens context, vb ingelogde klanten/leden, mobiele website
    • Integreert heel goed met views
  • Panels: nadelen
    • Performance: is heel grote module, wel goede caching opties
    • Kan complex zijn: is systeem op zich met leercurve en heel veel checkboxen
    • Werkt behoorlijk anders dan “the Drupal way” => bloksysteem en regios uitschakelen (vinkje)
    • Alles of niets: als je panels gebruikt het voor alles gebruiken
    • Moeilijker te debuggen
    • Soms trage upgrade bij nieuwe versie van dr http://www.youtube.com/watch?v=qBGKdnUj4Yw upal core , en upgrades tussen v1, 2 en 3 waren niet vanzelfsprekend, maar ondertussen heel veel gebruikt (> 80.000 installs)
    • Overladen html tenzij je eigen custom templates opstelt
  • Submodules en extra
    • Page Manager (bij ctools): page layouts (beetje zoals page.tpl.php)
    • Mini panels: blok layouts
    • Panel nodes: node layouts
    • Views content panes: views in panels
    • Panels Everywhere
  • Layouts
    • Standaardlayouts
    • Bepaalde themes definiëren extra layouts zoals Adaptive Theme (AT) in d6
    • http://drupal.org/project/panels_extra_layouts : extra layouts:
    • Best: eigen html templates voor layout
      • Advanced help module: help/panels/plugins-layout
      • tpl.php, css, inc en png
      • Meer docs: http://drupal.org/node/495654
  • Variants
    • Andere layout voor zelfde pagina bij andere voorwaarden
      • Volgens content type: basic page er anders laten uitzien dan artikels
      • Volgens toegangsrol: admin, ingelogden, leden/klanten zien iets anders
      • Volgens taal
      • Volgens trefwoord, ...
      • Mobile themes dank zij integratie met de http://drupal.org/project/mobile_tools module
  • Contexts
    • Arguments
      • /taxonomy/term/%term
      • /forum/%forum
      • /music/beatles/th
    • Andere contexts
      • Node auteur
      • Node reference
  • DISPLAY SUITE
  • Filosofie achter Display Suite
    • Centraal beheer van layout van website inhoud
    • Template bestanden overbodig maken
    • Focus op gebruiksvriendelijkheid
    • Gebruik van PHP beperken = betere veiligheid
  • Layout beheer met Drupal core
    • Mix van template bestanden en Field UI
    • Nadelen:
      • Template bestanden zijn niet onderhoudbaar
      • Field UI is beperkt:
        • Geen UI om extra velden toe te voegen (vb. titel, auteur)
        • Geen UI om extra View Modes toe te voegen
        • Inconsistent: 'Search result' View Mode
        • Geen gebruik van voorgedefinieerde layouts
  • Layout beheer met DS
    • Bouwt verder op Field UI
      • Nieuwe View Modes aanmaken
      • Voorgedefinieerde layouts aanmaken
      • Eigen velden toevoegen
    • Integratie met Views en Panels
    • Werkt op elke Drupal Entity (Node, gebruiker etc)
    • Consistente HTML output
    • Oefening 1: DS aanzetten en Node en Teaser layout wijzigen
  • DS layouts
    • Standaard: 11 layouts + Panel layouts
    • Eigen layout in theme:
      • ds_layouts folder aanmaken
      • ***.inc en ***.tpl.php bestanden verplicht
      • ***.css optioneel
      • Voorbeeld: ds.api.php lijn 356.
      • Oefening 2: Eigen layout met 3 rijen in theme toevoegen
  • Extras module
    • Field templates
    • Contextual links
    • Regions to block
    • Page title options
    • Views Displays
    • En veel meer!
  • ZOEKEN advanced
  • Geavanceerd zoeken
    • http://drupal.org/project/apachesolr
    • Views3 + solr
    • Gewone views search combinatie
    • Display suite kan zoekresultaten opmaken
  • Search API
    • Nieuwe module voor D7 die op een heel flexibele manier zoekresultaten kan weergeven
      • Pluggable backends: database, Solr, …
      • Weergave via views (dus afbeeldingen en layout in zoekresultaten eenvoudig)
      • Makkelijk meerdere zoekomgevingen op een site
      • Wordt momenteel heel actief ontwikkeld
  • MEDIA: foto video
  • Fotogallerij
    • Basisidee:
      • Met views kun je lijsten trekken van foto's.
      • De foto's kunnen worden opgemaakt via css of via een grid view of extra style plugin weergegeven
    • CSS
      • #viewsgallerij img {
      • float:left;
      • margin:0 10px 10px 0;
      • }
  • Fotogallerij: effecten
    • Van een lijst van foto's maak je een mooie gallerij via één van de http://plugins.jquery.com
    • Gebruik specifieke style plugins
      • http://drupal.org/project/views_cycle
      • http://drupal.org/project/views_rotator
      • http://drupal.org/project/views_slideshow
      • http://drupal.org/project/viewscarousel
      • http://drupal.org/project/views_galleria
  • Uitgebreidere fotogalerij
    • http://www.lullabot.com/articles/photo-galleries-views-attach
      • Mooi uitgewerkte fotogalerij met indeling in albums
      • Werkt met views attach en nodereference modules
      • Beetje complexe setup
    • Alternatieve verpakkingen van de setup
      • Via http://drupal.org/project/features
      • Als module http://drupal.org/project/views_gallery
  • Video Video op de eigen server
    • Filefield: http://www.drupaltherapy.com/filefield
    • Streaming video via RTMP en custom cck veld
    • Emfield: Embedded media field
      • Video Upload module: direct vanuit de site naar Youtube opladen
      • Voor betere kwaliteit gebruik Vimeo of Blip.tv
      • Veel veiliger dan embed en object tags toe te laten in filtered html
  • Embedded media field
    • Embedded media field:
      • http://drupal.org/project/emfield
      • Embedded media en embedded video field aanleggen
      • Inhoudstype maken met 1 emfield, display settings op full size video
    • Video view
      • Overzicht van video's
      • Doorzoekbaar per trefwoord via exposed filter
      • Groeperen per cck veld
  • Views import en export
  • Feeds module
    • www.drupal.org/project/feeds
      • Aggregator van rss feeds maar ook csv, xml, ical, … en kan er nodes of data elementen van maken
      • Opvolger van de feedapi module
      • node/add/feed
    • Youtube feeds: http://www.youtube.com/rssls
    • Feeds
      • http://drupal.org/project/feeds_imagegrabber
    • Cron moet werken!
  • Views export csv of xls http://drupal.org/project/views_data_export
    • Feed display toevoegen
    • Style op csv zetten
    • Pad geven
    • Xls module
    Voordeel tov views_bonus: batch api
  • THEMING HULP MODULES
  • Devel module http://drupal.org/project/devel
    • Dpr(): drupal print array
    • Dpm(): drupal print message
  • Theme developer http://drupal.org/project/devel_themer
  • Drupal for firebug http://drupal.org/project/drupalforfirebug
  • Fields EN VIEWS THEMING
  • Intercept & override
    • Basisprincipe: core niet hacken
    • Niet akkoord met de html en css?
      • Css: css door core gedefinieerd overriden in style.css of andere .css bestanden (via .info)‏
      • Html:
        • Template files: in theme map van de module
        • theme overrides: html die wordt gegenereerd door de modules theme_... functies
  • Theme overrides
  • Theme functies overriden
    • Overriden in template.php
      • Phptemplate_...: voor alle themes
      • Mytheme_...: voor mytheme (veiliger)‏
  • Theme functies zoeken Lijst: http://api.drupal.org/api/group/themeable/6 Themable functies vinden theme_ Zoeken api.drupal.org (core) of api.lullabot.com of http://drupalcontrib.org (contibuted) of eigen via http://drupal.org/project/api
      • In een .module file: zoeken naar theme_...
  • Nieuwe tpl.php bestanden
    • Naast comment en box sinds Drupal 6: in mapje van core en andere modules
    • Override = Kopiëren naar theme map + aanpassen
    • Via Theme Developer (Devel)‏
  • Node en User Object Node object <?php print_r($node); ?> <?php var_export($node); ?> <?php var_dump($node); ?> Veiligheid:
    • check_url($front_page);
    • check_plain($node->body);
    • check_markup($node->body);
    User object <?php print_r($user); ?> <?php var_export($user); ?> <?php var_dump($user); ?> Veiligheid
    • check_url($user -> ...);
    • check_plain($user -> name);
  • Node object laden Voor execute php in devel <?php if (arg(0) == 'node' && is_numeric(arg(1))) { $node = node_load(arg(1)); print_r($node); } ?>
  • FIELDS THEMING
  • Theming fields Individuele velden kunnen gethemed worden via field.tpl.php
    • field.tpl.php
    • field--field-type.tpl.php
    • field--field-name.tpl.php
    • field--content-type.tpl.php
    • field--field-name--content-type.tpl.php
  • Theme image styles http://api.drupal.org/api/drupal/modules--image--image.module/function/theme_image_style/7 print theme('image_style', array( 'path' => $field_gallery_image['de'][0]['uri'], 'style_name' => 'gallery_thumbnail'));
  • Theme image styles Probleem/bug: width/height van images: is opgelost in D7.8 http://drupal.org/node/908282 http://drupal.org/node/1129642 Manueel hoogtes specifieren theme('image_style', array('style_name' => 'desthumb', 'path' => $image0path, 'getsize' => TRUE, 'attributes' => array('class' => 'thumb', 'width' => '150', 'height' => '162'))); Tijdelijke workaround: http://api.drupal.org/api/drupal/modules--image--image.module/function/theme_image_style/7#comment-14839
  • VIEWS THEMING
  • Field display settings Vanuit de interface
    • Fields en labels wrappen in h2, class, … zit in Views 3 standaard in de module
    • Indien je meer wenst
      • http://drupal.org/project/semanticviews
      • http://drupal.org/project/semantic_fields
  • Een view beïnvloeden in code 1) Met de template files views-view.tpl.php 2) Met een hook vb hook_views_admin_links_alter 3) Tijdens het embedden van de view $view->hide_admin_links
  • Views templates
    • Basistemplates in de views module folder
    • Theme Information link in de view zelf geeft suggesties voor files specifiek voor deze view
      • node-view-nodequeue_1.tpl.php
      • node-view-front_most_recent_conference.tpl.php
    • Theme developer via Devel module: bekijken suggesties live
    • Er zijn ook theme_ functies beschikbaar voor views, maar handiger via tpl.php
    • Preprocess functies voor wijzigen variabelen
  • Views 2 templates views-exposed-form.tpl.php Layout van de exposed filters form. views-more.tpl.php Theme de lees meer link views-view-fields.tpl.php Standaard simple view template met alle velden als een rij. views-view-grid.tpl.php Een view als grid weergegeven  views-view-list.tpl.php Een view als lijst weergegeven views-view-row-comment.tpl.php Eén comment in een view. views-view-row-node.tpl.php Eén node in een view
  • Views 2 templates views-view-rss.tpl.php Feeds in rss stijl views-view-summary-unformatted.tpl.php Groep van summary lijnen. views-view-summary.tpl.php Lijst van summary lijnen. views-view-table.tpl.php Een tabel view. views-view-unformatted.tpl.php Lijst van rijen. views-view.tpl.php Hoofd view template.
  • Views 2 templates views-view-rss.tpl.php Feeds in rss stijl views-view-summary-unformatted.tpl.php Groep van summary lijnen. views-view-summary.tpl.php Lijst van summary lijnen. views-view-table.tpl.php Een tabel view. views-view-unformatted.tpl.php Lijst van rijen. views-view.tpl.php Hoofd view template.
  • Views 2 templates views-exposed-form.tpl.php Layout van de exposed filters form. views-more.tpl.php Theme de lees meer link views-view-fields.tpl.php Standaard simple view template met alle velden als een rij. views-view-grid.tpl.php Een view als grid weergegeven  views-view-list.tpl.php Een view als lijst weergegeven views-view-row-comment.tpl.php Eén comment in een view. views-view-row-node.tpl.php Eén node in een view
  • THEMING FIELDS
  • Theming fields Individuele velden kunnen gethemed worden. Let op: originele content-field.tpl.php moet in theme map Zie theme map in cck module: content-field.tpl.php
    • content-field-[FIELD_NAME].tpl.php
    • content-field-[CONTENT_TYPE].tpl.php
    • content-field-[FIELD_NAME]-[CONTENT_TYPE].tpl.php
    Opgelet steeds ook een gewone content-field.tpl.php plaatsen!!
  • Views embedden
  • Views embedden met module
    • http://drupal.org/project/viewfield
    • http://drupal.org/project/insert_view
  • Eenvoudig views embedden http://api.lullabot.com/views_embed_view/7 <?php echo views_embed_view('most_recent_post', 'default'); ?> <?php echo views_embed_view('nieuws', 'block_1'); ?> <?php print views_embed_view('calendar', 'calendar_block_1'); ?>
  • Views met js embedden Issue views_slideshow: http://drupal.org/node/325353#comment-2941588 Opgelet: js herladen! In template.php: <?php function themename_preprocess_page(&$vars, $hook) { $vars['embedded_view'] = views_embed_view(‘rooms’, ‘block_1′); $vars['scripts'] = drupal_get_js(); $vars['styles'] = drupal_get_css(); } ?> In page.tpl.php <?php print $embedded_view; ?>
  • Views alternatief embedden via block Gewoon block embedden: <?php $block = module_invoke('block', 'block', 'view', 10); print $block['content']; ?> Views block embedden: <?php $block = module_invoke('views', 'block', 'view', 'FotoCarousel-block_1'); print $block['content']; ?>
  • Views embedden alternatief $view = views_get_view($view_name); $view->set_arguments(array(0 => 'all', 1 => 'typeb')); // if you have args $view->set_items_per_page(0); // Aantal resultaten print $view->execute_display(0, $args); // default view, include $args param if using
  • Geavanceerd embedden via blok <?php $view = views_get_view('Publicaties'); //print '<pre>'; //print_r($view); //print '</pre>'; $view->set_display('block_1'); $view->display_handler->set_option('items_per_page', 2); $view->set_arguments(args...); $title = $view->get_title(); $output = $view->preview(); print '<h2>' . $title . '</h2>'; print $output; ?>
  • Via een module function MIJNMODULE_form_views_exposed_form_alter(&$form, $form_state) { if ($form['#id'] == 'views-exposed-form-all-events-page-1') { $form['date_filter']['min']['#date_format'] = 'd-m-Y'; $form['date_filter']['max']['#date_format'] = 'd-m-Y'; } }
  • Opvragen current view <?php $view = views_get_current_view(); print_r($view); $current_view_name = $view->name; $current_view_display = $view->current_display; ?>
  • Homepage theming
    • (via wysiwyg of eigen content type)
    • Standaard Drupal met blokken en extra regions
    • Met is_front() variabele
    • Als page-front.tpl.php: views embedden
    • Via http://drupal.org/project/panels
    • Via www.drupal.org/project/ds
  • Totaal aantal resultaten <?php $from = ($view->pager['current_page'] * $view->pager['items_per_page']) + 1; $to = $from + count($view->result) - 1; $total = $view->total_rows; if ($total <= $to) { // no need to show where we are if everything fits on the first page print '<b style=&quot;resultaten&quot;>'; if ($total <> '') { echo $total . &quot; resultaten gevonden.&quot;; } print '</b>'; print '<br />'; } else { print '<b style=&quot;resultaten&quot;>'; echo &quot;Gevonden: &quot; . $from . &quot; - &quot; . $to . &quot; van in totaal &quot; . $total . &quot; resultaten.&quot;; } ?> In views-view--Naamvanjeview.tpl.php
  • GOOGLE MAPS
  • Google maps views
    • Google maps: Latitude + Longitude
    • Geocoding (http://en.wikipedia.org/wiki/Geocoding)
      • Google
      • Yahoo
      • Openstreetmap
      • http://www.geonames.org
  • Eenvoudigste view
    • Google maps static maps api
      • http://code.google.com/apis/maps/index.html
      • http://code.google.com/apis/maps/documentation/staticmaps/
    • Views: Rewrite the output of this field
      • <img border=&quot;0&quot; src=&quot;http://maps.google.com/maps/api/staticmap?center=[geo_code_1],[geo_code_2]&zoom=13&size=570x285&maptype=roadmap&markers=color:blue|label:F|[geo_code_1],[geo_code_2]&sensor=false&quot; />
  • Google maps modules
    • Modules
      • Gmap/Location: grootste logge oudste module: geen javascript geocoding
      • Open layers: http://drupal.org/project/openlayers
      • Nodemap: klein en eenvoudig, geen D7
      • Gmaps module: nieuwer, geen D7
  • Gmap module
    • http://drupal.org/project/gmap
    • http://drupal.org/project/location
    • Oudste en meest gebruikte module
    • Bij inhoudstype location settings definieren
    • Latitude en longitude velden toevoegen in view
  • Openlayers
    • Integreert met diverse maplagen: Openstreetmap, Google maps
  • Nodemap
    • http://drupal.org/project/nodemap
    • Eenvoudige interface
    • Ondersteuning Yahoo en Google
    • Slechts 1 marker op de kaart
  • Gmaps module
    • View
      • Type: gmaps map, preset style earth
      • Row style: Map fields marker
      • Fields
        • Content anp locatie
        • Marker option: locatie point
        • Marker option: icon options
  • NIEUWSBRIEVEN & e-mail integratie
  • Mail interactie
    • Simplenews
    • Subscriptions of Notify of Watcher
    • Actions & Workflow/Rules & Views Bulk operations
    • Messenger & Notifications framework
    • Webform
    • Mailhandler
  • Nieuwsbrieven
    • 3 voornaamste mogelijkheden
      • Simplenews: eenvoudig en goedkoop, geen bounce handling, beperkte statistieken, problemen met server gemarkeerd als spamserver
      • Campaignmonitor of Mailchimp integratie: full bounce handling, statistieken, whitelisting, betalend maar Mailchimp tot 1000 abonnees gratis!
      • Civimail (onderdeel van Civicrm): mailings, bounce handling, goed systeem
  • Nieuwsbrief theming
    • http://www.campaignmonitor.com/css/
    • http://drupal.org/node/268404
    • Probleem: css moet inline voor webclients (gmail, yahoo, hotmail)
      • Views templates maken voor onderdelen
      • Automatisch: Emogrifier (htmlmail), Mime Mail CSS Compressor (mimemail)
      • Display suite
  • Nieuwsbrief theme Via Themekey module: als ct nieuwsbrief of view nieuwsbrief => Nieuwsbrief theme gebruiken
    • Nieuwsbrief theme
      • Geen html5 en andere moderne zaken, terug naar de nineties!
      • Sterk vereenvoudigde html.tpl.php: geen css en js printen
      • Sterk vereenvoudigde page.tpl.php: enkel tabel
  • Nieuwsbrief theme
    • Views: <?php print views_embed_view('nieuwsbrief_items','default'); ?>
    • Reference field: <?php print render($content['field_nb_architectuurnieuws']); ?>
    • Veld: <?php print check_url($node->field_nb_subfoto1_linkt['und'][0]['url']); ?>
  • Aanpak 2: via views
    • Nodequeue: Toevoegen aan nieuwsbrief
    • View: Nieuwsbrief op /nieuwsbrief
    • Nieuwsbrief = page - - nieuwsbrief.tpl.php
      • Views_embed_view('eersteview');
      • views_embed_view('tweedeview');
    • Nadeel: geen inleiding, archief via Mailchimp
  • Aanpak: Eigen inhoudstype
    • CT Nieuwsbrief
      • Met velden voor foto's, tekst, links
      • Reference fields voor lijsten
  • Simplenews theming
    • simplenews-newsletter-body--1126.tpl.php
    • simplenews-newsletter-footer--1126.tpl.php
  • FEATURES
  • Configuration management
    • Drupal werkt aan het probleem dat veel configuratie in de database zit en dit beter in code zou zitten.
    • http://london2011.drupal.org/conference/sessions/content-staging-and-deployments-drupal-7
    • http://buytaert.net/configuration-management-in-drupal-8
    • http://groups.drupal.org/node/134569
  • Features
    • http://drupal.org/project/features
    • Twee toepassingen
      • Combineren van inhoudstypes, views, … tot een feature = via de interface gemaakte module die je op andere installaties kan gebruiken
      • Zoveel mogelijk van de Drupal settings overbrengen naar code zodat ze kunnen opgenomen worden in een versiecontrolesysteem (git, svn, ...)
  • Strongarm
    • http://drupal.org/project/strongarm
    • Slaat de Drupal variabelen op in code zodat ze kunnen in een versiecontrolesysteem opgenomen worden
  • EXTRA CCK
  • Fieldgroups
    • Indelen in groepen
    • Met tabs: via cck fieldgroup tabs, vergelijk deze tabs met quicktabs
  • Content Copy
    • Exporteren en importeren van cck inhoudstypes
  • UITBREIDINGSTOEPASSINGEN
  • Import export
    • Table wizard & Migrate
    • Feeds (of feedapi)
    • Node import
    • User import
    • Views exporteren via bonus pack (zie eerder)
  • Default views
    • Voorbeelden
      • Archive
      • Glossary
      • Tracker
    • Mogelijkheid om default views te definieren in een module
      • http://views-help.doc.logrus.com/help/views/api-default-views
  • Default views module
    • Voordeel: svn/git + doorgeven
    • Wat zit in export bekijken
    • T functie toevoegen
    • Eenvoudige module
  • PERMISSIES
  • Content Permissions
    • Field Permissions
    • Content access
    • Taxonomy access (forum)
    • Private
    • Views permissions
    • OG
    • Gebruik Masquerade voor testen
  • Views permissies
    • Permissies instellen
    • Merk op
      • Je kunt verschillende views maken met dezelfde url, maar verschillende permissies. Op die manier krijgen rollen op een bepaalde url een andere view te zien.
  • Organische groepen
    • Basisviews
      • Beinvloeden, specifieke argumenten
    • Organisatie organische groepen
      • Permissies
      • Notifications en messaging framework
  • UITBREIDING EN MEER INFO
  • Interessante cck velden en views plugins
    • Extra velden en plugins
    • Views: http://drupal.org/project/modules?filters=tid:89&solrsort=sis_project_release_usage%20desc
    • CCK : http://drupal.org/project/modules?filters=tid:57&solrsort=sis_project_release_usage%20desc