Google Webfonts De volgende coderegel maakt het mogeljk om Googe Webfonts te gebruiken. Een Google account is niet nodig. De Google Webfonts zijn te vinden op http://www.google.com/webfonts. Er is een video tutorial beschikbaar op onze site over het gebruik van Google Webfonts (zie Videotutorials -> Google Webfonts). In deze template is voor alle heading elementen (h1 t/m h6) het Google Webfont Open Sans Condensed:700 actief (zie ook in het template.css bestand). 1.
template.css en de conditionele scripts voor Internet Explorer Het template.css bestand wordt opzettelijk op een latere positie in de index.php geplaatst, om er zeker van te zijn, dat deze als laatste van alle css bestanden wordt ingelezen. Op deze wijze kunnen CSS declaraties van andere CSS bestanden worden overschreven. Alleen de conditionele IE bestanden volgen nog hierna.
10
Zoals we gewend zijn wijkt Internet Explorer af van veel andere browsers. Om deze reden is er voor alle versies eerder dan IE9 een javascript html5 actief. Verder is er een css bestand opgenomen speciaal voor IE8 en de oudere browsers IE6 en IE7. Wij vinden dat de oude browsers IE6 en IE7 niet meer ondersteund moeten worden. Nog geen 1% van alle gebruikers bezit nog één van deze oude browsers, terwijl u er veel energie in moet stoppen om voor deze browsers nog een acceptabele weergave te produceren. In de volgende tutorial kunt u met behulp van CSS de oude browsers voorzien van een melding, dat deze niet meer ondersteund worden. 1.
2. 6. 11. 16.
De body bestaat globaal uit de volgende hoofd elementen. 1.
2. 3.
17. 18. 19. 20. 21. 4. 5.
6. 7. 8. 9.
11
14.
15. 16. 10. 11. 12. 13.
11
14.
De classes container, navigation, row en span[n] zijn Bootstrap classes. De css van deze classes is opgenomen in de Bootstrap css bestanden. De css declaraties voor deze structuur hoeft u dus niet op te stellen. Eigenlijk is uw template nu al goed ingedeeld en kunt u menu's, content en modules gaan maken. Deze structuur biedt u alle mogelijkheden om het html model te bouwen uit de vorige tutorial. PHP script voor de module posities De moduleposities zijn allen geplaatst in een php script. Dit script controleert of er modules zijn opgenomen op deze positie. Indien er geen modules in een bepaalde positie op een bepaalde pagina zijn geplaatst, komt deze ook niet terug in de html structuur. In onderstaand voorbeeld nemen we het script van position-0. De div met class clearfix zorgt ervoor dat de module die na deze module begint op een vrije "nieuwe regel" begint. 1. 2. 3. 4.
countModules('position-0')): ?> <jdoc:include type="modules" name="position-0" style="none"
Wat is de Joomla code voor een positie? De algemene code voor het plaatsen van een positie is gelijk aan die van Joomla 2.5: 1.
<jdoc:include type="type-parameter" name="name-parameter" style="style-parameter" />
Type parameters Alle deze type parameters zijn al in de Basis Template Joomla 3 opgenomen. type="head", "component", "modules" of "message". De <jdoc:include type="head" /> laadt gegevens die in de sectie terecht komen, zoals de meta content gegevens en titel. De "component" parameter wordt gebruikt voor het tonen van de artikelen / content. Deze code heeft geen andere parameters: <jdoc:include type="component" />. De "modules" parameter wordt gebruikt voor het tonen van de modules.
12
De "message" parameter is belangrijk om in uw template op te nemen. In de basetemplate is deze ook opgenomen. Deze parameter zorgt ervoor dat gebruikers systeem berichten kunnen zien, bijvoorbeeld als gebruikers zich op uw website registreren. Na het registratieproces wordt dan gemeld dat er een email is toegezonden met een link om het registratieproces te voltooien. Dergelijke berichten ziet de gebruiker niet, als deze code niet in uw template is opgenomen. <jdoc:include type="message" /> Name parameter "name=". De namen van de posities dienen exact hetzelfde te zijn als die uit het templateDetails.xlm bestand". Deze parameter wordt alleen gebruikt bij modules. Style parameters Style parameters staan in de template, echter deze kunnen in Joomla 3 ook worden gekozen bij de module opties in de administrator. Bij het bespreken van de modules onder het menuitem Joomla 3 wordt hier nader op ingegaan. De volgende style elementen zijn standaard in Joomla 3 aanwezig: style="none", "html5", "table", "horz" , "xhtml", "rounded" of "outline". none Bij deze stijl wordt er geen HTML code om de module geplaatst. In de basis template hebben de meeste posities style="none". html5 Deze stjil voegt de Bootstrap class span[n] toe aan de html structuur, waardoor u voor een individuele module de "width" kunt bepalen. Dit wordt ingesteld bij de module opties. table Deze stijl plaatst de module in een table. horz Deze stijl plaatst de module in een table, die weer in een table is geplaatst. xhtml Bij deze stijl wordt er om de module een
geplaatst (div.moduletable_suffix). rounded Bij deze stijl wordt er een structuur van 5 divs geplaatst om de module. Deze stijl is verouderd sinds CSS3 gangbaar is geworden met border-radius. outline Deze stijl laat de module positie zien op het frontend. Style parameters (van module.php uit de Basis Template Joomla 3) style="well", "specialgrey", "specialblue", "specialred" en "specialgold"
13
well Dit is een Bootstrap class, waarin de module is geplaatst in een lichtgrijze achtergrond. specialgrey, specialblue, specialred en specialgold Dit zijn custom modulestijlen van de template (alleen in de Basis Template Joomla 3) in diverse kleuren. Deze stijl wordt behandeld bij de Joomla 3 Module stijlen.
Wat te wijzigen? U heeft veel informatie gekregen over de inhoud van de bestanden van de Basis Template Joomla 3. Voor deze fase van de tutorial wordt u geadviseert om alleen de gegevens van de template te personaliseren in templateDetails.xml. Dus name, version, creationdate, author, authoremail, copyright en description. Wanneer u daarna de bestanden weer gaat zippen, vergeet dan niet om het zip bestand exact hetzelfde naam te geven als wat u bij name heeft ingevuld. Daarna kunt u de template installeren.
Melding maken voor IE6 en IE7 Wanneer uw website wordt bekeken met Internet Explorer ouder dan versie 8 toon dan een bericht dat de website met deze browser niet meer kan worden bekeken. Internet Explorer 7 en eerdere versies zijn sterk verouderde browsers en worden nog maar zelden gebruikt. Zelfs Internet Explorer 8 voldoet eigenlijk niet meer aan de huidige standaards, echter het is nog steeds de standaard browser van Windows XP die nog volop wordt gebruikt. We gaan de content van de website voor de oudere Internet Explorer versies niet meer tonen. Voor deze browsers zal een bericht worden getoond aan de gebruiker om een andere modernere browser te gaan gebruiken. We doen dit met HTML, CSS en een Joomla module (Aangepaste HTML). Maak een nieuwe module aan en kies voor "Aangepaste HTML". Geef de module een titel, bijvoorbeeld "Bericht IE oud". Verberg de titel. Kies voor de positie "messageIE". Ga naar het tabblad "Aangepaste invoer" en klik rechts onder op "Schakelen tekstverwerker" (u komt dan in de code view). Kopieer onderstaande code in dit tekstvak of wijzig de tekst naar uw eigen voorkeur. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Deze website kan niet met deze browser worden
Open het bestand template_IEold.css en neem de volgende CSS declaraties op in het nog lege bestand 1. 2. 3. 4. 5. 6. 7.
body { background: none; filter: none; text-align: center }
/* Het is mogelijk dat u meer elementen moet opnemen, afhankelijk van de structuur van uw template */ 8. div.container, 9. div.footer { 10. display: none; 11. } 12. 13. div.message-ie { 14. display: block; 15. padding: 40px 0 0 0; 16. width: 600px; 17. margin: 0 auto 0 auto; 18. }
We bereiken hiermee dat de gehele content en footer van de webpagina niet zal worden getoond in Ineternet Explorer 7 of eerdere versies. Uitsluitend de inhoud van de div met de class "message-ie" zal worden getoond, tegen een witte achtergrond. De gebruiker van Internet Explorer 7 of van eerdere versies krijgt de volgende pagina te zien. Dit bericht zal niet worden getoond in alle andere browsers.
15
Het is belangrijk dat u het resultaat test met bijvoorbeeld IEtester of Internet Explorer 10 (zie het laatste item van deze tutorial in de linker kolom->Uw template testen).
Lettertype, stijl en -grootte Bootstrap en de Basis Template Joomla 3 hebben lettertypes, letterstijlen en lettergrootten ingesteld. Het kan gewenst zijn om deze instellingen te overschrijven met uw eigen voorkeuren. In de Bootstrap CSS en de Basis Template Joomla 3 zijn lettertypes, letterstijlen en lettergrootten ingesteld.
Lettertype (font-family) Standaard lettertypes van Bootstrap 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: inherit; font-weight: bold; } pre { font-family: Monaco, Menlo, Consolas, "Courier New", monospace; } input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } .navbar-search .search-query { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
Wat hier opvalt is de keuze voor het font Helvitica Neue als basisfont, dat zowel bij Windows, Mac desktop PC's en vele mobiele apparaten niet standaard is geïnstalleerd. Wanneer je de webpagina's overal hetzelfde font wilt laten zien gebruik dan een websafe font als Arial en Verdana. Google Webfonts Een goed alternatief voor de basisfonts Arial en Verdana is het gebruik van Google Webfonts. De Google Webfonts zijn te vinden op http://www.google.com/webfonts. Er is een video tutorial beschikbaar over het gebruik van Google Webfonts (zie Joomla Videotutorials ->
16
Google Webfonts). In de Basis Template Joomla3 is voor alle heading elementen (h1 t/m h6) het Google Webfont Open Sans Condensed:700 ingesteld. Lettertypes van de basetemplate-joomla3 opgenomen in het template.css bestand 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
body { font-family: Verdana, Arial, sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: 'Open Sans Condensed',sans-serif; } input, button, select, textarea { font-family: Arial, Helvetica, sans-serif; }
Bootstrap Lettergrootte en regelhoogte Standaard in Bootstrap zijn de lettergrootten (font-size, en line-height) gedefiniëerd. De belangrijkste zijn hieronder weergegeven. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
body { font-size: 14px; line-height: 20px; } button, input, select, textarea { font-size: 100%; } h1 { font-size: 36px; line-height: 40px; } h2 { font-size: 30px; line-height: 40px; } h3 { font-size: 24px; line-height: 40px; } h4 { font-size: 18px; line-height: 20px;
17
28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
} h5 { font-size: 14px; line-height: 20px; } h6 { font-size: 12px; line-height: 20px; } legend { font-size: 21px; line-height: 40px; } label, input, button, select, textarea { font-size: 14px; font-weight: normal; line-height: 20px; }
select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], 54. input[type="time"], input[type="week"], input[type="number"], input[type="email"], 55. input[type="url"], input[type="search"], input[type="tel"], input[type="color"], 56. .uneditable-input { 57. font-size: 14px; 58. line-height: 20px; 59. } 60. 61. .btn { 62. font-size: 14px; 63. line-height: 20px; 64. }
Lettergrootte en regelhoogte van de basetemplate-joomla3 Voor de basetemplate-joomla3 zij de lettergroottes van de headings standaard iets kleiner gemaakt en overschreven in template.css. 1. 2.
h1 { font-size: 30px;
18
3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
line-height: 34px; } h2 { font-size: 26px; line-height: 30px; } h3 { font-size: 22px; line-height: 26px; } h4 { font-size: 18px; line-height: 20px; } h5 { font-size: 14px; line-height: 20px; } h6 { font-size: 12px; line-height: 20px; }
Lettergrootte mobiele telefoons en tablets De moderne smart mobiele telefoons en tablets hebben beeldschermen met een veel hogere dpi (dots per inch), dan de desktop beeldschermen. Als een mobiele telefoon een dpi heeft van 280 en een desktop beeldscherm 96dpi dan wordt de lettergroote ongeveer 2 tot 3 x zo klein weergegeven. Voor gebruikers met scherpe ogen is dat geen probleem en bovendien hebben de mobiele apparaten de mogelijkheid om te zoomen. Hieronder is op ware grootte het beeldscherm van een mobiele telefoon weergegeven, met een basis lettergrootte van 14 pixels.
19
Van dezelfde pagina is het lettertype vergroot naar 24 pixels en line-height van 30px en ziet er nu als volgt uit.
Dit is al een stuk beter leesbaar. Wanneer de werkelijke verhouding van de font-size wordt genomen van 14px (96dpi) naar 38px (280dpi) dan wordt de letter weliswaar evengroot weergegeven op de desktop als op de mobiele telefoon echter dat is niet meer werkbaar. Het vorige voorbeeld is dan een redelijk haalbare instelling van de font-size.
Het is mogelijk om voor mobiele apparaten uit te gaan van een andere lettergrootte met behulp van een mediaquery van bijvoorbeeld tot en met 979 pixels. Er zijn echter tablets met een beeldscherm van 1280 pixels breed en dus dit is maar een gedeeltelijke oplossing. U moet nog wel nagaan of het noodzakelijk is om de lettergroottes van bijvoorbeeld de menu's aan te passen voor de presentatie op mobiele apparaten. Zo heeft een list-item standaard een line-height van 20px. Ook deze moet worden verhoogd naar 30px. Voor de template.css kunt u de onderstaande css opnemen als u voor mobiele telefoons een groter lettertype wilt. Er zijn echter nog veel meer aanpassingen nodig voor deze mediaquery, wanneer u dit wilt toepassen. Dit is afhankelijk van welke elementen u in uw website zijn opgenomen. Hier hebben we alleen als demonstatie de basismethode weergegeven. Het is meestal verstandig om deze aanpassing niet door te voeren of in ieder geval pas nadat u uw website helemaal hebt ingericht. CSS
20
1. @media (max-width: 979px) { 2. body { 3. font-size: 24px; 4. line-height: 30px; 5. } 6. 7. li { 8. line-height: 30px; 9. } 10. }
Navigatie menu maken Maak een navigatie menu met behulp van Bootstrap classes. In Joomla worden deze classes benoemd bij de Geavanceerde Module Opties -> Menu class achtervoegsel. In het HTML model uit "Stap 1 Maak een Bootstrap HTML ontwerp", hebben we gekozen voor een tab menu, dat met Bootstrap classes werd opgebouwd. In Joomla 3 is dit menu eenvoudig te maken door de betreffende classes te benoemen in de geavanceerde module opties. In de module geavanceerde opties van het hoofdmenu is bij Menu Class Achtervoegsel "[spatie]nav-pills" ingevuld. Dit moeten we wijzigen in de class voor een tab menu. De noodzakelijke spatie die voorafgaat aan de class naam nav-pills of nav-tabs is een Joomla bug. Mogelijk wordt deze in toekomstige versies hersteld. 1. Ga naar Extensies->Modulebeheer->Hoofdmenu. 2. Kies voor het tabblad "Opties" en ga naar "Geavanceerde Opties". 3. Op de regel "Menu class achtervoegsel" staat mogelijk nu "[spatie] nav-pills", als u de Nederlandse voorbeeld data hebt geïnstalleerd. 4. Wijzig dit in [spatie]nav-tabs. 5. Kies voor opslaan. U hoeft geen enkele CSS wijziging door te voeren om van een nav-pills een nav-tab menu te maken. De website is nu voorzien van het tab menu. De css en scripts voor dit menu worden door Bootstrap toegewezen aan het tab menu.
Het wordt anders als u in het navbar menu, tab-menu of pills-menu subitems heeft (dropdownmenu). Dit is (nog) niet aanwezig in Joomla 3. U zult dan een module menu
21
override moeten maken en javascript moeten toevoegen. Dit wordt behandeld bij de tutorial Een dropdownmenu maken. Op de website van Twitter Bootstrap worden de diverse menu's behandeld, die u op dezelfde wijze kunt toepassen als nav-pills en nav-tabs (zie http://getbootstrap.com/2.3.2/components.html#navs). Zo kunt u onder meer de classes gebruiken voor een menu in een sidebar met de Menu Class Achtervoegsel: "[spatie]navstacked" of "[spatie]nav-list". Uw menu responsive maken Als voorbeeld hebben we meer menu-items opgenomen dan alleen het Home menu item.
Wanneer we de viewport smaller maken zien we het menu als volgt wordt weergegeven.
Op zichzelf hoeft dat geen probleem te zijn, echter beter zou zijn, dat bij een bepaalde viewport, de menu-items onder elkaar komen te staan. Welke viewport dat is, is afhankelijk van de breedte van het totale menu zelf. U kunt dit vaststellen met de handige extensie voor Firefox, de webdeveloper. In de video tutorial over Firefox en extensies kunt u hiervoor de werkwijze vinden. In het voorbeeld hierboven staan de menu-items op één lijn bij minimaal 662px (geldt alleen voor dit voorbeeld). Bij 661px verschuift het menu-item Contact naar de 2e regel. We willen dus bij een viewport van maximaal 661px alle menu-items onder elkaar hebben. We doen dit met een media query en plaatsen dit in het template.css bestand. Met behulp van Firebug (zie video tutorial over Firefox) bekijken we eerst de Bootstrap stijlen van de list items en links van het menu. 1. 2. 3. 4. 5. 6. 7. 8. 9.
.nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover { border-color: #DDDDDD #DDDDDD transparent; border-style: solid; border-width: 1px; }
22
De list-items hebben een css declaratie van float: left, we wijzigen dit in een media query tot en met 661px in float: none. Verder hebben de actieve link items een css declaratie border: 1px #dddddd solid. Die border willen we verwijderen door te kiezen voor border: none. De css media query wordt dan als volgt. 1. 2. 3. 4. 5. 6. 7. 8.
@media (max-width: 661px) { .nav-tabs > li { float: none; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover { border: none; } }
Zo kunt u uw eigen media query opstellen. Het menu ziet er bij een viewport van 661px er als volgt uit.
U kunt dezelfde methode toepassen voor bijvoorbeeld het nav-pills menu.
Een grote header afbeelding of diashow maken Het plaatsen van een grote header afbeelding of dia show op uw webpagina is gemakkelijker dan ooit in Joomla 3 met Bootstrap classes en de Basis Template Joomla 3. In het html model van deze tutorial Stap 1 is een grote afbeelding geplaatst onder het navigatie menu in de header. We gaan dit ook in de basetemplate-joomla 3 toepassen. In de
23
template index.php is hiervoor een module positie "position-5" beschikbaar. Zo ziet de code structuur van de header eruit van de index.php zonder aanpassingen. 1. 2. 3. 4. 5. 6.
Zorg ervoor dat de afbeelding die u wilt gebruiken minstens 1170px breed is. In dit voorbeeld gebruiken we de header.jpg afbeelding uit de map images van de template. 1. 2. 3. 4. 5. 6.
Ga naar Extensies->Modulebeheer en kies voor "Nieuw". Selecteer "Aangepaste HTML". Geef de module een titel, bijvoorbeeld "Header image". Bij "Toon titel" klik op "Verberg". Selecteer "positon-5" bij "Positie". Ga naar het tabblad "Aangepaste invoer" en plaats de afbeelding met de editor knop onder het invoerveld en voeg de afbeelding toe. Vul geen afmetingen in alleen een beschrijving van de afbeelding. 7. Controleer de code, dat er geen width of height in de code is verwerkt, zoals onderstaand voorbeeld. 1.
24
Wijzig de paragraaf tags in div tags, omdat in de Bootstrap CSS de p tag een bottom margin heeft van 10px en hier is geen bottom margin gewenst. De code wordt dan: 1.
Kies voor Opslaan en bekijk het resultaat op uw webpagina. Door het plaatsen van de module met de afbeelding op position-5 komt het navigatie menu onder de afbeelding. We kunnen dit later nog aanpassen. De afbeelding is geplaatst en deze is ook "responsive". Wanneer de viewport kleiner maken, zal de afbeelding eveneens worden meeverkleind.
De afbeelding kan worden gestijld met de Bootstrap image classes "img-rounded", "imgpolaroid" en "img-circle" (img-circle is een bijzondere vorm van de class img-rounded). U kunt zelf experimenteren welke class u wilt gebruiken. 1.
In het html model staat het tab menu boven de header image. In de basetemplate-joomla 3 staat het menu eronder. U kunt op meerdere manieren het menu boven de afbeelding plaatsen. Bijvoorbeeld u verplaatst de coderegel van het navigatie menu (position-1) naar direct boven de positie van de header image (position-5). De code van de header van de template index.php komt er dan als volgt uit te zien. 1. 2. 3. 4. 5.
U kunt ook een nieuwe positie aanmaken, die nog niet in gebruik is, bijvoorbeeld "position6". In plaats van verplaatsen kopieert u de code van position-1 naar boven position-5 en wijzigt postion-1 in position-6 (vergeet niet om ook de countmodule code te wijzigen van 1 in 6). Hiermee laat u de bestaande navigatie op position-1 ongewijzigd. Vergeet dan niet om ook aan het templateDetails.xml bestand deze nieuwe positie toe te voegen. Onze voorkeur gaat uit naar het toevoegen van een nieuwe position-6. We voegen deze position-6 toe aan het templateDetails.xml bestand. We herbenoemen de module instelling van het hoofdmenu naar position-6 en wijzigen de code van header de template index.php als volgt. 1. 2. 3. 4. 5. 6.
De positions van het templateDetails.xml bestand zien er als volgt uit. 1. <positions> 2. <position>position-0 3. <position>position-1 4. <position>position-2 5. <position>position-3 6. <position>position-4 7. <position>position-5 8. <position>position-6 9. <position>position-7 10. <position>position-8 11. <position>messageIE 12. <position>debug 13.
Door deze wijzigingen ziet de pagina er als volgt uit.
27
Marge Nu begint het aardig op het html model te lijken echter het kruimelpad staat tegen de onderzijde van de header image aangeplakt. Hier moet wat ruimte komen. Dit doen we door de div class van de header-image te voorzien van een bottom marge. We nemen de volgende css declaratie op in het template.css bestand. 1. 2. 3.
div.bigimage { margin-bottom: 20px; }
Na het toepassen van deze declaratie ziet de header van de pagina er als volgt uit.
28
Dia show De werkwijze voor een diashow is hetzelfde als voor de header image. U kunt hiervoor het beste een extensie voor Joomla 3 gebruiken. Een goede extensie is de gratis (na registratie) te downloaden Dj-imageslider van http://dj-extensions.com/dj-imageslider. U volgt de instructies van de documentatie van de extensie en plaatst de module van dj-imagelsider op position-6. Dat is alles. De afbeeldingen van de image slider zijn "responsive", dus verkleinen mee met de viewport. Content indeling Het html model, dat we onder stap 1 hebben gemaakt, bestaat uit de header, die we nu gemaakt hebben, en een 4 koloms indeling (2 sidebars, 2 artikel kolommen) voor de content eronder. Dit wordt verder toegelicht via het menu Content en componenten stijlen>Voorpagina / categorieblog. In de volgende tutorial gaan we in plaats van een tab menu een Navbar maken met de Bootstrap structuur en classes.
Een Bootstrap Navbar maken In deze tutorial gaan we een responsive Bootstrap Navbar maken met de Basis Template voor Joomla 3. We nemen de Bootstrap Navbar html code als uitgangspunt (zie Twitter Bootstrap http://getbootstrap.com/2.3.2/components.html#navbar. De html structuur van een navbar ziet er als volgt uit. 1.
Voor de Navbar maken we een nieuwe positie aan, position-9. Dit betekent ook een aanvulling van het templateDetailsxml document met position-9. De bovenstaande structuur moeten we geschikt maken voor de basetemplate-joomla3: 1. 2. 3. 4.
countModules('position-9')): ?>
Deze code plaatsen we in de index.php direct onder de div met class container en boven de header. 1. 2. 3. 4. 5. 6. 7. 8.
13
well Dit is een Bootstrap class, waarin de module is geplaatst in een lichtgrijze achtergrond. specialgrey, specialblue, specialred en specialgold Dit zijn custom modulestijlen van de template (alleen in de Basis Template Joomla 3) in diverse kleuren. Deze stijl wordt behandeld bij de Joomla 3 Module stijlen.
Wat te wijzigen? U heeft veel informatie gekregen over de inhoud van de bestanden van de Basis Template Joomla 3. Voor deze fase van de tutorial wordt u geadviseert om alleen de gegevens van de template te personaliseren in templateDetails.xml. Dus name, version, creationdate, author, authoremail, copyright en description. Wanneer u daarna de bestanden weer gaat zippen, vergeet dan niet om het zip bestand exact hetzelfde naam te geven als wat u bij name heeft ingevuld. Daarna kunt u de template installeren.
Melding maken voor IE6 en IE7 Wanneer uw website wordt bekeken met Internet Explorer ouder dan versie 8 toon dan een bericht dat de website met deze browser niet meer kan worden bekeken. Internet Explorer 7 en eerdere versies zijn sterk verouderde browsers en worden nog maar zelden gebruikt. Zelfs Internet Explorer 8 voldoet eigenlijk niet meer aan de huidige standaards, echter het is nog steeds de standaard browser van Windows XP die nog volop wordt gebruikt. We gaan de content van de website voor de oudere Internet Explorer versies niet meer tonen. Voor deze browsers zal een bericht worden getoond aan de gebruiker om een andere modernere browser te gaan gebruiken. We doen dit met HTML, CSS en een Joomla module (Aangepaste HTML). Maak een nieuwe module aan en kies voor "Aangepaste HTML". Geef de module een titel, bijvoorbeeld "Bericht IE oud". Verberg de titel. Kies voor de positie "messageIE". Ga naar het tabblad "Aangepaste invoer" en klik rechts onder op "Schakelen tekstverwerker" (u komt dan in de code view). Kopieer onderstaande code in dit tekstvak of wijzig de tekst naar uw eigen voorkeur. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Uw Internet Explorer versie is verouderd.
Deze website kan niet met deze browser worden
bekeken!
Upgrade uw browser naar de laatste versie (Internet Explorer 8) of installeer een andere browser, zoals Firefox
14
13. of Google Chrome)
Open het bestand template_IEold.css en neem de volgende CSS declaraties op in het nog lege bestand 1. 2. 3. 4. 5. 6. 7.
body { background: none; filter: none; text-align: center }
/* Het is mogelijk dat u meer elementen moet opnemen, afhankelijk van de structuur van uw template */ 8. div.container, 9. div.footer { 10. display: none; 11. } 12. 13. div.message-ie { 14. display: block; 15. padding: 40px 0 0 0; 16. width: 600px; 17. margin: 0 auto 0 auto; 18. }
We bereiken hiermee dat de gehele content en footer van de webpagina niet zal worden getoond in Ineternet Explorer 7 of eerdere versies. Uitsluitend de inhoud van de div met de class "message-ie" zal worden getoond, tegen een witte achtergrond. De gebruiker van Internet Explorer 7 of van eerdere versies krijgt de volgende pagina te zien. Dit bericht zal niet worden getoond in alle andere browsers.
15
Het is belangrijk dat u het resultaat test met bijvoorbeeld IEtester of Internet Explorer 10 (zie het laatste item van deze tutorial in de linker kolom->Uw template testen).
Lettertype, stijl en -grootte Bootstrap en de Basis Template Joomla 3 hebben lettertypes, letterstijlen en lettergrootten ingesteld. Het kan gewenst zijn om deze instellingen te overschrijven met uw eigen voorkeuren. In de Bootstrap CSS en de Basis Template Joomla 3 zijn lettertypes, letterstijlen en lettergrootten ingesteld.
Lettertype (font-family) Standaard lettertypes van Bootstrap 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: inherit; font-weight: bold; } pre { font-family: Monaco, Menlo, Consolas, "Courier New", monospace; } input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } .navbar-search .search-query { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
Wat hier opvalt is de keuze voor het font Helvitica Neue als basisfont, dat zowel bij Windows, Mac desktop PC's en vele mobiele apparaten niet standaard is geïnstalleerd. Wanneer je de webpagina's overal hetzelfde font wilt laten zien gebruik dan een websafe font als Arial en Verdana. Google Webfonts Een goed alternatief voor de basisfonts Arial en Verdana is het gebruik van Google Webfonts. De Google Webfonts zijn te vinden op http://www.google.com/webfonts. Er is een video tutorial beschikbaar over het gebruik van Google Webfonts (zie Joomla Videotutorials ->
16
Google Webfonts). In de Basis Template Joomla3 is voor alle heading elementen (h1 t/m h6) het Google Webfont Open Sans Condensed:700 ingesteld. Lettertypes van de basetemplate-joomla3 opgenomen in het template.css bestand 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
body { font-family: Verdana, Arial, sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: 'Open Sans Condensed',sans-serif; } input, button, select, textarea { font-family: Arial, Helvetica, sans-serif; }
Bootstrap Lettergrootte en regelhoogte Standaard in Bootstrap zijn de lettergrootten (font-size, en line-height) gedefiniëerd. De belangrijkste zijn hieronder weergegeven. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
body { font-size: 14px; line-height: 20px; } button, input, select, textarea { font-size: 100%; } h1 { font-size: 36px; line-height: 40px; } h2 { font-size: 30px; line-height: 40px; } h3 { font-size: 24px; line-height: 40px; } h4 { font-size: 18px; line-height: 20px;
17
28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
} h5 { font-size: 14px; line-height: 20px; } h6 { font-size: 12px; line-height: 20px; } legend { font-size: 21px; line-height: 40px; } label, input, button, select, textarea { font-size: 14px; font-weight: normal; line-height: 20px; }
select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], 54. input[type="time"], input[type="week"], input[type="number"], input[type="email"], 55. input[type="url"], input[type="search"], input[type="tel"], input[type="color"], 56. .uneditable-input { 57. font-size: 14px; 58. line-height: 20px; 59. } 60. 61. .btn { 62. font-size: 14px; 63. line-height: 20px; 64. }
Lettergrootte en regelhoogte van de basetemplate-joomla3 Voor de basetemplate-joomla3 zij de lettergroottes van de headings standaard iets kleiner gemaakt en overschreven in template.css. 1. 2.
h1 { font-size: 30px;
18
3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
line-height: 34px; } h2 { font-size: 26px; line-height: 30px; } h3 { font-size: 22px; line-height: 26px; } h4 { font-size: 18px; line-height: 20px; } h5 { font-size: 14px; line-height: 20px; } h6 { font-size: 12px; line-height: 20px; }
Lettergrootte mobiele telefoons en tablets De moderne smart mobiele telefoons en tablets hebben beeldschermen met een veel hogere dpi (dots per inch), dan de desktop beeldschermen. Als een mobiele telefoon een dpi heeft van 280 en een desktop beeldscherm 96dpi dan wordt de lettergroote ongeveer 2 tot 3 x zo klein weergegeven. Voor gebruikers met scherpe ogen is dat geen probleem en bovendien hebben de mobiele apparaten de mogelijkheid om te zoomen. Hieronder is op ware grootte het beeldscherm van een mobiele telefoon weergegeven, met een basis lettergrootte van 14 pixels.
19
Van dezelfde pagina is het lettertype vergroot naar 24 pixels en line-height van 30px en ziet er nu als volgt uit.
Dit is al een stuk beter leesbaar. Wanneer de werkelijke verhouding van de font-size wordt genomen van 14px (96dpi) naar 38px (280dpi) dan wordt de letter weliswaar evengroot weergegeven op de desktop als op de mobiele telefoon echter dat is niet meer werkbaar. Het vorige voorbeeld is dan een redelijk haalbare instelling van de font-size.
Het is mogelijk om voor mobiele apparaten uit te gaan van een andere lettergrootte met behulp van een mediaquery van bijvoorbeeld tot en met 979 pixels. Er zijn echter tablets met een beeldscherm van 1280 pixels breed en dus dit is maar een gedeeltelijke oplossing. U moet nog wel nagaan of het noodzakelijk is om de lettergroottes van bijvoorbeeld de menu's aan te passen voor de presentatie op mobiele apparaten. Zo heeft een list-item standaard een line-height van 20px. Ook deze moet worden verhoogd naar 30px. Voor de template.css kunt u de onderstaande css opnemen als u voor mobiele telefoons een groter lettertype wilt. Er zijn echter nog veel meer aanpassingen nodig voor deze mediaquery, wanneer u dit wilt toepassen. Dit is afhankelijk van welke elementen u in uw website zijn opgenomen. Hier hebben we alleen als demonstatie de basismethode weergegeven. Het is meestal verstandig om deze aanpassing niet door te voeren of in ieder geval pas nadat u uw website helemaal hebt ingericht. CSS
20
1. @media (max-width: 979px) { 2. body { 3. font-size: 24px; 4. line-height: 30px; 5. } 6. 7. li { 8. line-height: 30px; 9. } 10. }
Navigatie menu maken Maak een navigatie menu met behulp van Bootstrap classes. In Joomla worden deze classes benoemd bij de Geavanceerde Module Opties -> Menu class achtervoegsel. In het HTML model uit "Stap 1 Maak een Bootstrap HTML ontwerp", hebben we gekozen voor een tab menu, dat met Bootstrap classes werd opgebouwd. In Joomla 3 is dit menu eenvoudig te maken door de betreffende classes te benoemen in de geavanceerde module opties. In de module geavanceerde opties van het hoofdmenu is bij Menu Class Achtervoegsel "[spatie]nav-pills" ingevuld. Dit moeten we wijzigen in de class voor een tab menu. De noodzakelijke spatie die voorafgaat aan de class naam nav-pills of nav-tabs is een Joomla bug. Mogelijk wordt deze in toekomstige versies hersteld. 1. Ga naar Extensies->Modulebeheer->Hoofdmenu. 2. Kies voor het tabblad "Opties" en ga naar "Geavanceerde Opties". 3. Op de regel "Menu class achtervoegsel" staat mogelijk nu "[spatie] nav-pills", als u de Nederlandse voorbeeld data hebt geïnstalleerd. 4. Wijzig dit in [spatie]nav-tabs. 5. Kies voor opslaan. U hoeft geen enkele CSS wijziging door te voeren om van een nav-pills een nav-tab menu te maken. De website is nu voorzien van het tab menu. De css en scripts voor dit menu worden door Bootstrap toegewezen aan het tab menu.
Het wordt anders als u in het navbar menu, tab-menu of pills-menu subitems heeft (dropdownmenu). Dit is (nog) niet aanwezig in Joomla 3. U zult dan een module menu
21
override moeten maken en javascript moeten toevoegen. Dit wordt behandeld bij de tutorial Een dropdownmenu maken. Op de website van Twitter Bootstrap worden de diverse menu's behandeld, die u op dezelfde wijze kunt toepassen als nav-pills en nav-tabs (zie http://getbootstrap.com/2.3.2/components.html#navs). Zo kunt u onder meer de classes gebruiken voor een menu in een sidebar met de Menu Class Achtervoegsel: "[spatie]navstacked" of "[spatie]nav-list". Uw menu responsive maken Als voorbeeld hebben we meer menu-items opgenomen dan alleen het Home menu item.
Wanneer we de viewport smaller maken zien we het menu als volgt wordt weergegeven.
Op zichzelf hoeft dat geen probleem te zijn, echter beter zou zijn, dat bij een bepaalde viewport, de menu-items onder elkaar komen te staan. Welke viewport dat is, is afhankelijk van de breedte van het totale menu zelf. U kunt dit vaststellen met de handige extensie voor Firefox, de webdeveloper. In de video tutorial over Firefox en extensies kunt u hiervoor de werkwijze vinden. In het voorbeeld hierboven staan de menu-items op één lijn bij minimaal 662px (geldt alleen voor dit voorbeeld). Bij 661px verschuift het menu-item Contact naar de 2e regel. We willen dus bij een viewport van maximaal 661px alle menu-items onder elkaar hebben. We doen dit met een media query en plaatsen dit in het template.css bestand. Met behulp van Firebug (zie video tutorial over Firefox) bekijken we eerst de Bootstrap stijlen van de list items en links van het menu. 1. 2. 3. 4. 5. 6. 7. 8. 9.
.nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover { border-color: #DDDDDD #DDDDDD transparent; border-style: solid; border-width: 1px; }
22
De list-items hebben een css declaratie van float: left, we wijzigen dit in een media query tot en met 661px in float: none. Verder hebben de actieve link items een css declaratie border: 1px #dddddd solid. Die border willen we verwijderen door te kiezen voor border: none. De css media query wordt dan als volgt. 1. 2. 3. 4. 5. 6. 7. 8.
@media (max-width: 661px) { .nav-tabs > li { float: none; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover { border: none; } }
Zo kunt u uw eigen media query opstellen. Het menu ziet er bij een viewport van 661px er als volgt uit.
U kunt dezelfde methode toepassen voor bijvoorbeeld het nav-pills menu.
Een grote header afbeelding of diashow maken Het plaatsen van een grote header afbeelding of dia show op uw webpagina is gemakkelijker dan ooit in Joomla 3 met Bootstrap classes en de Basis Template Joomla 3. In het html model van deze tutorial Stap 1 is een grote afbeelding geplaatst onder het navigatie menu in de header. We gaan dit ook in de basetemplate-joomla 3 toepassen. In de
23
template index.php is hiervoor een module positie "position-5" beschikbaar. Zo ziet de code structuur van de header eruit van de index.php zonder aanpassingen. 1. 2. 3. 4. 5. 6.
countModules('position-0')): ?>
24. <jdoc:include type="modules" name="position-0" style="none" /> 7. 8.
9. 10. countModules('position-4')): ?> 11. 12. <jdoc:include type="modules" name="position-4" style="none" /> 13. 14.
15. 16. countModules('position-5')): ?> 17. 18. <jdoc:include type="modules" name="position-5" style="none" /> 19. 20.
21. 22. 23. Zorg ervoor dat de afbeelding die u wilt gebruiken minstens 1170px breed is. In dit voorbeeld gebruiken we de header.jpg afbeelding uit de map images van de template. 1. 2. 3. 4. 5. 6.
Ga naar Extensies->Modulebeheer en kies voor "Nieuw". Selecteer "Aangepaste HTML". Geef de module een titel, bijvoorbeeld "Header image". Bij "Toon titel" klik op "Verberg". Selecteer "positon-5" bij "Positie". Ga naar het tabblad "Aangepaste invoer" en plaats de afbeelding met de editor knop onder het invoerveld en voeg de afbeelding toe. Vul geen afmetingen in alleen een beschrijving van de afbeelding. 7. Controleer de code, dat er geen width of height in de code is verwerkt, zoals onderstaand voorbeeld. 1.
24
Wijzig de paragraaf tags in div tags, omdat in de Bootstrap CSS de p tag een bottom margin heeft van 10px en hier is geen bottom margin gewenst. De code wordt dan: 1.
Kies voor Opslaan en bekijk het resultaat op uw webpagina. Door het plaatsen van de module met de afbeelding op position-5 komt het navigatie menu onder de afbeelding. We kunnen dit later nog aanpassen. De afbeelding is geplaatst en deze is ook "responsive". Wanneer de viewport kleiner maken, zal de afbeelding eveneens worden meeverkleind.
De afbeelding kan worden gestijld met de Bootstrap image classes "img-rounded", "imgpolaroid" en "img-circle" (img-circle is een bijzondere vorm van de class img-rounded). U kunt zelf experimenteren welke class u wilt gebruiken. 1.
In het html model staat het tab menu boven de header image. In de basetemplate-joomla 3 staat het menu eronder. U kunt op meerdere manieren het menu boven de afbeelding plaatsen. Bijvoorbeeld u verplaatst de coderegel van het navigatie menu (position-1) naar direct boven de positie van de header image (position-5). De code van de header van de template index.php komt er dan als volgt uit te zien. 1. 2. 3. 4. 5.
countModules('position-0')): ?>
25
6.
<jdoc:include type="modules" name="position-0" style="none" />
7. 8. 9. 10. 11. 12.
countModules('position-4')): ?>
30. 25
6.
<jdoc:include type="modules" name="position-0" style="none" />
7. 8. 9. 10. 11. 12.
<jdoc:include type="modules" name="position-4" style="none" />
13. 14. 15. 16. 17. 18.
countModules('position-1')): ?> countModules('position-5')): ?> 13. 14. 15. 16. 17. 18.
<jdoc:include type="modules" name="position-5" style="none" />
25. 26.
27. 28. 29. 25. 26.
U kunt ook een nieuwe positie aanmaken, die nog niet in gebruik is, bijvoorbeeld "position6". In plaats van verplaatsen kopieert u de code van position-1 naar boven position-5 en wijzigt postion-1 in position-6 (vergeet niet om ook de countmodule code te wijzigen van 1 in 6). Hiermee laat u de bestaande navigatie op position-1 ongewijzigd. Vergeet dan niet om ook aan het templateDetails.xml bestand deze nieuwe positie toe te voegen. Onze voorkeur gaat uit naar het toevoegen van een nieuwe position-6. We voegen deze position-6 toe aan het templateDetails.xml bestand. We herbenoemen de module instelling van het hoofdmenu naar position-6 en wijzigen de code van header de template index.php als volgt. 1. 2. 3. 4. 5. 6.
countModules('position-0')): ?>
30. <jdoc:include type="modules" name="position-0" style="none" /> 7.
26
8. 9. 10. 11. 12.
countModules('position-4')): ?> 26
8. 9. 10. 11. 12.
<jdoc:include type="modules" name="position-4" style="none" />
13. 14. 15. 16. 17. 18.
countModules('position-6')): ?> countModules('position-5')): ?> 13. 14. 15. 16. 17. 18.
<jdoc:include type="modules" name="position-5" style="none"
/> 25. 26.
27. 28. 29. /> 25. 26.
De positions van het templateDetails.xml bestand zien er als volgt uit. 1. <positions> 2. <position>position-0 3. <position>position-1 4. <position>position-2 5. <position>position-3 6. <position>position-4 7. <position>position-5 8. <position>position-6 9. <position>position-7 10. <position>position-8 11. <position>messageIE 12. <position>debug 13.
Door deze wijzigingen ziet de pagina er als volgt uit.
27
Marge Nu begint het aardig op het html model te lijken echter het kruimelpad staat tegen de onderzijde van de header image aangeplakt. Hier moet wat ruimte komen. Dit doen we door de div class van de header-image te voorzien van een bottom marge. We nemen de volgende css declaratie op in het template.css bestand. 1. 2. 3.
div.bigimage { margin-bottom: 20px; }
Na het toepassen van deze declaratie ziet de header van de pagina er als volgt uit.
28
Dia show De werkwijze voor een diashow is hetzelfde als voor de header image. U kunt hiervoor het beste een extensie voor Joomla 3 gebruiken. Een goede extensie is de gratis (na registratie) te downloaden Dj-imageslider van http://dj-extensions.com/dj-imageslider. U volgt de instructies van de documentatie van de extensie en plaatst de module van dj-imagelsider op position-6. Dat is alles. De afbeeldingen van de image slider zijn "responsive", dus verkleinen mee met de viewport. Content indeling Het html model, dat we onder stap 1 hebben gemaakt, bestaat uit de header, die we nu gemaakt hebben, en een 4 koloms indeling (2 sidebars, 2 artikel kolommen) voor de content eronder. Dit wordt verder toegelicht via het menu Content en componenten stijlen>Voorpagina / categorieblog. In de volgende tutorial gaan we in plaats van een tab menu een Navbar maken met de Bootstrap structuur en classes.
Een Bootstrap Navbar maken In deze tutorial gaan we een responsive Bootstrap Navbar maken met de Basis Template voor Joomla 3. We nemen de Bootstrap Navbar html code als uitgangspunt (zie Twitter Bootstrap http://getbootstrap.com/2.3.2/components.html#navbar. De html structuur van een navbar ziet er als volgt uit. 1.
Voor de Navbar maken we een nieuwe positie aan, position-9. Dit betekent ook een aanvulling van het templateDetailsxml document met position-9. De bovenstaande structuur moeten we geschikt maken voor de basetemplate-joomla3: 1. 2. 3. 4.
countModules('position-9')): ?>
Deze code plaatsen we in de index.php direct onder de div met class container en boven de header. 1. 2. 3. 4. 5. 6. 7. 8.
countModules('position-9')): ?>
11. 12. 13. 14.
15.
16. ....
Vervolgens gaan we naar Extensies->Module beheer en selecteer de "Hoofdmenu" module. Deze geven we nu de position-9. Verder verwijderen we onder geavanceerde opties het Menu Class Achtervoegsel nav-tabs. De pagina ziet er nu als volgt uit.
30
Responsive Navbar U heeft nu een Navbar gemaakt zonder enige aanvullende CSS op te stellen, echter de Navbar is niet "responsive". Gelukkig heeft Twitter Bootstrap ook een structuur bedacht voor een "Responsive" Nav Bar. Onderstaande code kunt u vervangen voor de hierboven gemaakte navbar code. 1. 2.
Vervolgens gaan we naar Extensies->Module beheer en selecteer de "Hoofdmenu" module. Deze geven we nu de position-9. Verder verwijderen we onder geavanceerde opties het Menu Class Achtervoegsel nav-tabs. De pagina ziet er nu als volgt uit.
30
Responsive Navbar U heeft nu een Navbar gemaakt zonder enige aanvullende CSS op te stellen, echter de Navbar is niet "responsive". Gelukkig heeft Twitter Bootstrap ook een structuur bedacht voor een "Responsive" Nav Bar. Onderstaande code kunt u vervangen voor de hierboven gemaakte navbar code. 1. 2.
3. 4. 5. countModules('position-9')): ?> 6.
22. 23. 24. 25. 26.
27. ....
Na toepassing van deze aangepaste structuur voor de responsive Nabar in het index.php bestand, ziet de pagina er bij een viewport kleiner dan 980px als volgt uit.
31
Het menu is nu verscholen achter de "toggle" button rechts. Door erop te klikken komt het menu tevoorschijn.
32
Er zijn nog varianten van de Navbar mogelijk door classes toe te voegen aan de bovenste coderegel, bijvoorbeeld een Navbar met een zwarte achtergrond (navbar-inverse). 1.
Na toepassing van deze aangepaste structuur voor de responsive Nabar in het index.php bestand, ziet de pagina er bij een viewport kleiner dan 980px als volgt uit.
31
Het menu is nu verscholen achter de "toggle" button rechts. Door erop te klikken komt het menu tevoorschijn.
32
Er zijn nog varianten van de Navbar mogelijk door classes toe te voegen aan de bovenste coderegel, bijvoorbeeld een Navbar met een zwarte achtergrond (navbar-inverse). 1.