From 8604ba016e186ab6ad33fa249f3c74e5bac0ef4a Mon Sep 17 00:00:00 2001 From: Harald Eilertsen Date: Thu, 24 Jul 2025 12:37:23 +0200 Subject: [PATCH] Update derived theme tutorial Adds another lesson on customising the theme using styles and overriding templates. Also some minor language cleanup and add some introductory text before lesson 1. --- doc/en/tutorials/derived_theme.md | 61 ++++++++++++++++-- .../tutorials/pic/override-template-after.png | Bin 0 -> 23957 bytes .../pic/override-template-before.png | Bin 0 -> 26403 bytes 3 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 doc/en/tutorials/pic/override-template-after.png create mode 100644 doc/en/tutorials/pic/override-template-before.png diff --git a/doc/en/tutorials/derived_theme.md b/doc/en/tutorials/derived_theme.md index 00d43e535..b9a243adc 100644 --- a/doc/en/tutorials/derived_theme.md +++ b/doc/en/tutorials/derived_theme.md @@ -1,16 +1,16 @@ ## Creating a Derived Theme +In this tutorial, we will learn how to make a derived theme. This is a theme that takes most of the settings from its "parent" theme and lets you change a few things to your liking without creating an entire theme package. This is a good starting point if you just want to change a few things from an existing theme, for example to give your hub a bit of personalised appearance. + +We will use the standard 'redbasic' theme for our parent theme in this tutorial. You may have to make some adaptions if you want to use another theme as your base, but the process will be the same. + ### Lesson 1 – Getting started -A derived theme takes most of the settings from its "parent" theme and lets you change a few things to your liking without creating an entire theme package. - - To create a derived theme, first choose a name. For our example we'll call our theme 'mytheme'. Hopefully you'll be a bit more creative. But throughout this document, wherever you see 'mytheme', replace that with the name you chose. #### Directory Structure -First you need to create a theme directory structure. We'll keep it simple. We need a php directory and a css directory. Here are the Unix/Linux commands to do this. Assume that 'mywebsite' is your top level hubzilla folder. - +First you need to create a theme directory structure. We'll keep it simple. We need a php directory and a css directory. Here are the Unix/Linux commands to do this. Assume that 'mywebsite' is your top level $projectname folder. ``` $ cd mywebsite @@ -60,7 +60,7 @@ echo file_get_contents(MY_THEME_ROOT . '/css/style.css'); That's it. This tells the software to read the PCSS information for the redbasic theme first, and then read our CSS file which will just consist of changes we want to make from our parent theme (redbasic). -Now create the actual CSS file for your theme. Put it in `view/theme/mytheme/css/style.css` (where we just told the software to look for it). For our example, we'll just change the body background color so you can see that it works. You can use any CSS you'd like. +Now create the actual CSS file for your theme. Put it in `view/theme/mytheme/css/style.css` (where we just told the software to look for it). For our example, we'll just change the body background colour so you can see that it works. You can use any CSS you'd like. ```css body { @@ -87,3 +87,52 @@ class MythemeConfig extends RedbasicConfig { ``` We leave the class itself empty, so that it will simply inherit the configuration and settings from the parent theme, in this case Redbasic. This will automatically make the settings and scheme selection from Redbasic available to your child theme as well. + +### Lesson 2 - Customizing the theme + +#### Adding custom styles + +In the previous lesson we added a simple style in the `view/theme/mytheme/css/style.css` file, just so that we could see the that our derived theme was active. + +We can of course add any styles we want to that file, and since we load it _after_ the parent theme's styles, we are able to override the styles provided by the parent theme, or by the $Projectname core. There's a lot that can be done with styling alone, and for many this will be all that you need to customize the theme to your liking. + +#### Overriding templates + +In some cases, overriding CSS styles may not be enough to get exactly the result you want from your theme. In these cases we can also override the templates used to build the HTML of the web pages itself. + +Templates are the building blocks of the $Projectname web UI. They can be complex and contain the entire UI for a module, or simple building blocks like an input field or a button. + +In this example we will modify the templates for checkboxes, changing them from the default toggle buttons used by Redbasic to a standard HTML checkbox. + +This is what it looked like before the change: + +![Before the change - toggle buttons](/help/en/tutorials/pic/override-template-before.png) + +The original template is located in `view/tpl/field_checkbox.tpl`. So the first thing we do is to copy this file into our theme's template directory, that is `view/theme/mytheme/tpl/field_checkbox.tpl`. Then change it as you want. For this example, we change it to the following: + +```html +
+ + +
{{$field.3}}
+
+``` + +When looking for templates, $Projectname will first look for one in the theme's template directory, then (if relevant) in the parent theme's directory, and finally it will look in the `view/tpl` directory for the system defines templates. It will use the first template found. + +This means that from now on, our theme's checkbox template will be used whenever the UI wants to display a checkbox. + +This is how it looks with the change: + +![After the change - normal checkboxes](/help/en/tutorials/pic/override-template-after.png) + +Also note that files should be places in subdirectories under our theme directory that matches the extension of the file. So `*.css` files should be in the `view/theme/mytheme/css` directory, `*.php` files in the `view/theme/mytheme/php` directory, and `*.tpl` files in the `view/theme/mytheme/tpl` directory. diff --git a/doc/en/tutorials/pic/override-template-after.png b/doc/en/tutorials/pic/override-template-after.png new file mode 100644 index 0000000000000000000000000000000000000000..62c27d5d892268642fdfc28123796db8001361e0 GIT binary patch literal 23957 zcmdRWcQn^+{P$N{Dx)DI(J(S1gpgElD)E$?45|` z^|^oNIp_KF`Rh67xzFkDzQ26e^|`M1`?cPm$4Uw^l)D&rkw_#;*(;Y+NF=gJ{P&}s z+wpIL`sFC(xq({$5fI| zJY;m=vQ=d#1;w33>uyt*v6b2!Dd+t!Z$4h}jP)Dqk{J6kIr+u7Uvx$^_lluYmC4o% zG+QtHxvDBkxAX3iop)zDj&CWz-$&H895dLBM=r7*`M-aFacqkjS2LHZGfQB1+OFW+ zEOWZy?+%P8-E!UiCiKRb7V%y*(^b0U1s*-MUtM>cp&N){edWATIjh97H+%DLk<-LO zy{zQ;cwh1zRA)3clZ4E_`o_l}Nk~jAbe?+YxFpdsv2=T?n^rdXgZDo%4u$Ajw#V?H zBOE$>Gcwd`3xAcRob`EH~AAX>fG3x|YS~DXT2$Q+4&+WNx!q{@n+= z>4v7Kn<53xUWhrpbzF-3*xDMRcy9I6E9=f|L)zs(rse;H4PU*gU*k8bxwSfPGFnP9 zG&J;FY>^>Z_kK{OsBcPF=g#3dF1t_Ne=7gT&X1dSi?>g%84A%lE|-V!kMDc+! ziTPLWNZ{}9nT@K764fFDp2IrVIZvB^jn}E5+P(XDp6N9|fx(W3FJFv5KRfE`>UwLq zhH`KAwhMpa=6-A`;0gI)!TBaSDpg)Pc{R39ojX{r`q@#b8}DuVyplx4oqk`+HEq1* zgzVUnxIu-~j1ssfSDV zd#fE4n_kPBg-0fN@LbEbw=MZr8p|^SGfE=2ew=5OO-M=EsiC3aSCq4boc!^lNAd1U zzYoyT+AmLPdjB2g@Dt9rY`ghORgrAAzr^i(it@cjk9MxFuU}DA94nqFJI=we<6hHUmv{AsiOnd7OPkPEx_F=l=X4_bXUw=+VshrdDF+w0gzRIg0FHIj}?KmD=LEIBrjRn9IV z5-}~|-pR%KSk&<+>1&DGg7#>Ih*ifv78dHxaB3>5nw#%tD}6T8@(N?}tvUou>JM}m zSov2PC~c8E-}>en*%^nComi^t^;1|gMG2w%&yUNzQXgPEM}Owlk-EA%`M7hs6sOC| z%Ibxa^~;;$FDS;hj)$3Sr*sddmel$3`T6lw^^BJ)=Wt2YdGwn)XpMP|HBEnhiM&1C ztI0VrP%gQfj@Ni)x=&7X>35skQkw<^HMK@PDc1Y1McMlN)v`ZByOYwdMF|s!n!)^g z%HHELftQk0B%T?PVib}m?*#|%V>8&XeLL6a90kQwdj2h?8|`HbVvC%5-m787f!E(# zwmre6OKh`z?C(EZ6=m_az@~>-x!&GhrtTm{p(oY;bPIhh1EQfQfoIKEgwERtMK}z1 z+8TGgTZ!@*Kfo!jK_0(C`MN(vGbQgmZ}`g1iS`UucJ?h_3mwfY``H2}hlW1h-L`ut zC1tf`{(S4kKhK3mkx#X?iRx)?KO@b|zrCiQ13gRkhlIvOExwf9@5u6V4Q z=^o4cm)she*|vRR-s^KRa#ycXP*Isq_ZHR*M+n{irIeHF_$V-tT~d;TbgwcXLf@Og z&d%=U&6`)`<<)H6W1V*yIHQo{S+qXHiQv^Oy5DAbIk}bJeu&j?S)rEI@hjkH}v!8!xnSnsqTEw zxoSElN$+UwTCdL+-asrM+X zWWFfG(XGjf`xzKy%f0_8rG9sHb9){cDcfp#jX$c9=SH?K&dS$!Ml#Mb{TW+rf5duR z)6>(_DR!o$rl#&LuxUVPAZgEB%}^&^!oni8RYiEXcHpJ4h}YlSCgJO->#oyE4?Y)AEo1$NSj)Y#T598wW z3pw`6v+ozO{Qjd{B$tytdC#k)TAVUn_F74wT6C9?31k|?rh8>n8;Eb)iVcIZu5Xx~ zyMxBJ^4<=?Tk$q`wY!+rP)f-jJ$aI#U+#S+_!15SKmDGqe|9{3`Lcd>VGP$I&#L2K zfOO*PY!l70u>+ZDY1~mFcBZJIdDdO~vUNwMIA=e9zM@9^rC?=Y;rNM^hx6WDIVN&J zAFQ*wJKnD++84Xbyg?iB?d{b`>a`Z;HX1nS{~*__nQPp3>^ARtb?1V8>11V_8y;*| zzrMZBO)PE%uWsnyz{BEPB9}~19u*W+%-IcQ~v1Mmx z4ojq_=AYG7vVt#9b3cB($QEMw?gqW2_gPd%swGYQY;8@o*x9B%OTT$;xHeMUWm>|- z0JwC%Z!H`W6Ozc|!od~xM8acP>Bfymad9jswel*es>ts}9m?Sm-}))1{#+Dg zL2S`KkI;;?6Ks0I@u8H#_zqP2m*wB=8+E!od0`;ay1To!b_Z$GS6ecA`1kL()`{=m zzZaO+YoUDHV!mE=Pe>_KBrYOiY_?w$MLkuov}nHHZTdb>1JOxSQchGj>pA`UdIuX? zz^o}+T!H<-)(fsm^)h$GgLk@FGbOoojeP3n)gxVy@Eh#NQ;l>k*K>ClOHGnu{{8S#CJ}59ibQ__Mp!An4sW( z5fPE!ZE4B!20cYi+~H9T1OBLPLqkL6Xy;yk7muDiNg1Zqh@Dy2)Z}bS)fxVdo0r$L zJI`YD?lz@Cm$VZTqyoLEf47)BmKPV*^m;sks!eQPg!Ad^4Zg_evgUn1wNiYNy8hqB zi2#M<+9>ITkbx{W3c{bjw*6@V$0{Ne5IF$YXZi*ayd%fCGM)HC8DdIT^$KY z*RzSLI*P;P!8vfUXm^0 z&xU1xCW*SUl$$u(AC&G0UKHPVF(7rv($UX@}Ib=ZoBie2~&qA1c;QnR%(JW+iM z!UlGDC>F_vuoG|WdvbQ5X=$P(?0bg4|L)b*)zLD*wY%SbuKXAq8#`5*W&L-px6qNq zRNR%jHAN#!uh6E%bx!3$(4FfCEi5eLU!Hz!(hyFjlq5%66U35bOvx&%q9-FGlWX2` z%&%}qhPLGEl7pZdrM)f{+rQGEwK#2Yj*_E^!}_aZ{r%`2M5}C(Vc`@EC$E2PJe81; zaH6Pd!F%X22Wt4!DH*woQsbTPjsqRM)+=?FTSMC?75Lkko1c(QR35jO>B`+<9BJD4 zlB|G#P(P%;FV~DZr|n63d3nYdR|D0!tC?voN@)9unX$$w8SI}F&0KaM45N|H&+9Lx z4EVFkqHDyVlnXd~+6id6trL|!{G_iA}i zB7OeCv*}m_f<@i!_2!eEvc(d;<#%UZZv&#mcIBFd9r?{8C>Ua)nw)ccT!mHk=C7}> z_8b=bUKp8RO=_Q5lAGE413Q?0_pVU;Vg0o~%34~CbbQsyQT{Ogy{NNanN6+{gj=Xhe^y?lXzdR94)2cB9u^jy``P6Uuw{QOxxbN*yr`yj;K73j9|{ZkEx(_T z4qzPp@Qf$dc}lBR-~!G4flA%t8ny`TjR)x-CQU^PS@-+ucCdKfs@=T^bj2WGyfaNB ziyi08zxr;A`N-mUYso^BxSSl5_3*oQ@7`~8oEocrUBA8ku()$*YM~?+T}@AXv)%PF z&%xax?ALB~e@|r+cYd0XaPf<&U`M8|5w29pT+N{-|FcRg-hYlZE4-*kRZTu|Qs_CF z2jG9h`s%{r?&?pUW`jUh3LV%qR8`+;@f7EiYPL6@%8kC+`P}GwrNW}&_O~K` zv)QlwUi!P?)y-!imCzFX!yw%ILr8U^j8r~jqHvtIXBBTE4w=LE@y@H{JvFGymUo-1rhQ7N(IYoZKw$=T9qt$tlpC0B6K z7=LiZsFpKyYOJ6<7OihMXEM~e3*Fp4=@xwgTL9?16mF7KhLXQH*%bnO`7AOrHB^$I z6>R+c&leYOk8uqu9-yH)4^r9r-j0Pmq^__?g(#Icu*bQ$e#e$w#kr3WcQIXCo@%=O zespT;8g@a~JEI-yX<@#;B!X7i+w&aT+&lZj7t3uWq;Q=RwpJc|!B{Foy)UU8*ke;=1)H+J8>#j!%0&7EV>%Kp1O<0_sQ=KF89idxY8>k-tk z2QB8Gs;cgd#raV2@!6ebqy$m{qBytl$LL#Yt3`i_=)E1(Kcno*2J1NDJ{g=k(jXw( zC7Q02AN>8hTC!qk5>|c>{V5Wp4fLL*q$B{=fS_}Kcjk6|c`X}4x{+i2xXJ;||1}Wl zmzP4j)7pM3CAW^h5O?9_R_95!>ae|k|9*U%C4Zzmt6tfc&5Rp&s&A5=Pg3DG{!D}V zcOP8>pXuq-J?H){s?N{Py8^fu+7EA!^VulO*}(DJ$HepnxUcT1D0Rj1T6d3kxiyx_lwE25r$<4&D%g3sp0*~PC?A3l6IBD=4;8s+cPY@3F@C?8eD zpSfXNSm-A$>6(JK#SUYGTtct*+4PnUWO^JFL>-@k;mo{8TfvghtnJBm+?@xToGI#MA>zXy%#*sBAxF@r@N1 zQxhLks_@9V?!TYDCmRG(HB>EV`YQ_MTC(&ddwchkNcx;xb#p^U!GiucMK$&Nw_MPp zo#7|7rJ>}3`tD&l7mfNM;4@p@o`x_z1SQbY%y6mIWD^N2F8uWozBypl^Xh9585n~aPjsqo_+*;Xg~gqjZ}1d z{34LSjiTF}si~>-d$w<AO@L?A6n!62M_q&7tI9(1w~zFf&&c%o4wQneJ6q;8#yE?*0Sy^HiifPVYA`L+soO z5MqN_2WMu2x~!e`dM~)Tp4maoY`n3)dV}X6!M78G&dDW82i(XtrIeMG{ZL%Iko9;! zgSayfQ4G}6XhDOp|KyB~S$9w|#pmUP)&v|9M9~@=9v1c4D4A#ID|Q)Mn>h__i=$LG|$47H=uycfm3U2YMSFX zrchE^YHx3U^!Fe8J=^c)$ltnk3g?~aoF~NM-zVbQpgrZ}HgvT6y3Gen?oKiRcg zRzblOyF@Kj<#J@#zz2IH&`xpZ$s>GxLFitAOrjTYnE(Bin9dWv@$Tj}2=XW^i62S( z>FKXP{OKz9k;G#M=xFWHRGlX~Uq!o=Ur$zuQA%sG?k|bV%R7yucSTO_n55*uD+qo@ zkjAmWvw@TS4t>(+mXL@+PdhPYfU6%F8Ckz-%+XK~)xY<+G)ka9-DU)sFllt=TP!~( z4-YFRXX;1m%bHpl;a+RY&%?ql+uHJCuYI!2cUb>p59#F;V*t@N`-+_h2M6y|8juJ{ z_eO^LC_NpdXRIUEoc@%7Z=IV3zzGc_0V0UFioRlqS_RHDZeufLk~PrFztz z-(J8B0jK$f9i9{ulbp;Ev41~5W58+a&S$S*v;JL~QPk04BJ`Q(GR#L$pAH=vF}^4z zH6te8X?|MFS`n5>4o^gn9ds(H%D3oi0RKOmVzl3cUDMKfS+&*>!6(iXf!%AY$=gxf z*w_e_`}3s(c=z4`9P^fXncZ8&z@jckKEQsUVs(^OJJXI=yct4uT5n^NmE z)y~h4Hc-v@_=6tF$;n~Co38HyMmZjI_F~mTO1FuO_tTxr-f9Qb{GUAeYR<$G$s-gY zfKqbz-aX=nOt@s&iJ&83gsdR^xcoFMEQ-o4F&>+c{s!ORY94D4prD{I(RvkqXu0-` zRomMKQBj9x$~V2cOns+j-c9m5H>rHidD?O#em#KV?yUxLiq4IV4P%o&?~n58>IY{^ z7N`aXDSr+4kfsu zXt&bU6x~tVxU#Gli_V0ji&Gt8=RZ8wYqNPTgKp>O`{KO3#n|_&wi5RFTDrFXn)Ylb zhdhdP60lu&-B_#Kv9iAE;_%+cYHV~|R!NBl@-lXt*wcynoG&nps@`0Sa-FZ^U=X&Z z4`zMmx$1z*+K^t|GG+Vmq)Qijsh*;O0@Y0Eir#~Uh(5mM^5^=)&I}S4{uCE2g#BiQ zr$lq`;LlUbuHs|O`aeon`is=vRz-f;99B_SX9t)PNPC8?l2Q~Eg+qk1225Qy{q z%ZY`ru@;7m-mvWtDuGIH2=Nh|et)m5t@TSuDc&(z%z5Gj$-24nrTiO*%}Kg6n0#=H zW)~N?S_jRNfPZL!_VJAv1Ae+hu|?y=hjCqp95Pxk_g?1|_f6_}lYt(N!aFwXd0roN zE^kh2NK0=w@SrN;S=(BYW2`Bi!RxbNra0QKfYLWTJv~~ctqGB|&~Yrsb?)X}%kS}C zYaW|}VLM)Z`0xVjz5ulM6;%*;d8GF~E_i#oX4N6Pk_*<>JW>z$*xSyZH#RngMRF>t zaWrryOSFdcGD@V@B<%3=-us)|$~g`E9zGPX={^k?z+-vRK2sfSi7U%QlOWF_bt6ht zUtt0Gt-t{K9|%3HWNSwK=&gWD_tNjKn#_h^lSlwwAaNKoULS6cey*lYr5W#X{>8I+uD}y93DoGv3&SY%$ktM>id4| z{y3n!I$d-4?8cwr(9lq<^K9CXOk2fUof6mQz^4QJolhBsc4eqv{o6SA1w|RJS-;IK zK)MRBPgYTp!6$5Pbzj zij0h)RJjhLawgW|;L!vbNmgVbl+MMPyLaz)mU)ST);elU#K7?^usV=>37&4prfm+EW59TpZ`Up zDK6Mo^V47%uT)Z@mmVANUdz}w0@yEyE%Rq2MDcTTb8SZl(bNd}Uta!cRZ*H+>PP5S zaI1<}dFGV&Y!?Az!gq&#bO+oLn}&(q2#boAG`Fx|1bxj#zEL*#eq0tGOvuriH~-ex znYj0N_>A#zq1=FKcH(+LSt?JStu;kVlf;#zg}<;i{<4|aNMx)neayd;zl{X+ir z98g$-a1B-aQ;ni2!ABG~-lL^b)BU6Xd<>=zd${02;Rc#j{1?%gc5W7g7H75h4kL!D{vRURcVkg`7eyDsu;H^Ea zoPYoRR)v_e57g7(0veuX6m?%b!J!zdW@`$!sL*|h3kZ#>L7f#gJxJ+~Y1{J|?YE|T zMV+U6Wnr+xAXH_SH8D0O9)oZJbcJpRpe%#$Sy)(DzdAHHctKhDxx;i_j=a459>CfH zNA09zqN0&;-hU}V>h7aE6RleZy_^U8+Whp(UFG-G)2gu@;ZULsC#eihjb664PIu@B z`h!EHHSMy~)6?_H)#5kl9aU9QZkdeMj*<$|XD*!*-7pEZi-5Fx{=^>6O^Pkp>Ez81$&MTnI5>*cpv z|M!ktFa4)l-j_T7|IY)%I!b|B_dNVA{E|9!G!-hGLV*@%=|RPfvaDxUuSTa4lIw*J z)GkwohnRogyEFvyY|H-uH`h*OMzuOM#+}1zs-4^5T9R}d{ z4BIi=teM%eBXdeemveoXWmBn43N2=^ec)uK^`!4|{QPq-_hq=Ce{j+b~g`GZAp2UOrFmTr*c{e5q?A+dos^ z{;gA#o1z(!o7P-j*3dZ2$IWih+FjPncC;F7a*LDgl58vDW6 zA?pF)*|kNj)}SX`HRV|M;in{bpW`-*QOzIKmx+?extI#P_%ILZXkZYxtSU-Y-!2m zUdqhE!jh+T66g;qF(Maav$L}m@Irn6%WN2RT~{u3cf!-5NTd8E=_I!Nn3@Xk_xH~! z6%`ewsy%#!l@+dBn2FcF^;?ckY`{wBIVAKd;BGrb1i%t+49uAC`K3N3<$0~aa?f=uKOU9b&;khBK6nuPqy?bm^ zu3Mr!ah-kBG?u5Ag%(E_AT0$|qN}TGw4gj4{(nMimw;YJmcGlGhrz6S4;;A9DvQ?* z4iA5*m0=2zfb{FO*r;7iQ)43~UJ_pomKvP&QP1mXZOEk@mJKF~pSbv;Y%hfXMj@qC z>qPtU@$t~mPWGgt!a`+0dlKq!U30Sx&3$d8nVS5?8%G;idit+$S>9$D>a37;a1cQ0 zs`pr9u|cx{F;%YTR>|`AB4ls8VKA#$t5;Wo zKM}GkB0iu{|A7w3!bPH)=3yp8=mdP~Fz<^PF{hh9zjPq$fiB4^`#DD*??wo$5Hsbp z|0g;ErH-5{Y?o#@B#pteto9Q&(GpAFRi83T?8@(6jxpA(vCN;XIb`QB`{RON0iqg7 zigD*sSSc7jga0GYL}fGm1`gc%+5lfdhsC>~R4tQ8G}c&T+$s(}dZQSp01U2_s#fnD zDbKFwHcG1ycP=A63s4CnF1coS5xp`fPSt*Q^MQ?&FJX0NsHa(nKy?P@l9Q-_N^bt`1Anj=i*`on3%M6( z?DqjN$rTf68vx7@=%nz#Kl!onN+-7t=t%#x{Cz#v%Nc@K;GH(!1Q}{+$%Q=zQTub; z7EF^eA@7%LZmf|mUA{c`?J6Gu2Hlr(OzH>`vRkI1xt=$Cmih{f2X*t8^Ew(cvU_4UCEz*#-u3u+MywApn|o@VP0 zX7(6S?jrlNS|hXiMpo~>i|0|5TW)u&oVJZ^YGi)FN#w`+cb$e+Fx^)y2uPb8UZ7V^ zWWILqR_#6%APs!>=g)9Z>h-jP_$90HaaMLV0M4B|cM@tFBunlI&{veJ%^obm!+A_=blPWQq!zSt$@u1@hR@S>OgH zdUpQvaXEwB|FEK7mRaTcYMxC`yG3KcC?O~i65+p-vipEG4ChBUNw1TVI7^2zb&C>E z(neX_M)qRYk%f}*z5YPW42$gw8!^s&^M;5`c4i+1|Bub_gl67&bM{ANy*;?vaaPv* zc;How`7@Kq{TzzVqJ!_sB^~3NQCFm~E$#zyz?&C@Q$+SCC}=D|r2mMR z*h|n#1OXe(_3FKL#_s#rWMaX(Yz;}IQYuXnr;LZ9FfCrv_;eL@5J znxcFhottzuoJZL`5}a!5)~%ts(fEKghYvSGwL#yNPHW3Sa0Qnn%y9>5%i}MeQ$j^f zGl5+?^(o4UOgVzf2BYZ+3~y~qA%lj)x-iyEWY@tIh%o7>j{8)8M|60eNkVMg`dQhC z5aLMKA;1km7Atc`#KtN>$A>Li+tzkn*0Cp|7+{^BpWlRzI~nF3E@N;=NTh(t zF3=_vja;bQmfuq@Y;OGPDzG_(j0aKi(UsvP%0U4okE7pNf#Y54OGeJLoanV#TT|0N zCoMy>q0y&-ZY$~ErY1l1u=+Ip!a-i|wnuBG=N?!*J|eqSLVzi&sCr|qp^VKgrhm}z`MYSL=RVHnmviu>b&o~97Bp(_e}Bme=B^hL$yBnQo9_tG z6}T3t?-B&);p|%zH}~(`cNbKS1iUlZTe#o9nh^hy{4m9O)(eo3GE~}f3ql%nr|Z83 za&udyh~{NijaW13LQDTy}kd-8#)dtKb+V1ETYunjMv}1s;!wXUd#tohf@AU6?M3>x4TQ_HLu)T`XAqt zu2Rv>0r+rc&3x)t-8TKgIUOPK`M>qFwG{VTT3T==NlMi-?Ml9VNguA(TOq2DO+C4m znv(M9`}fmCsH*qugNF~f2J8pQynHiUEcLe&NxS-q99U(Jd$Cm9BCn?KHlBs1l#pF7 zq_qhkfDSeDGj^3GoC$%fk1+G!_q$I7HnR*&dlqXzsjQ#)@fzCvbd?VJN8PWMMA&U`h~QlfmOQ$bBk>2kV3+Fh z@*ZhJ!=nrgkz2QKS1I@Qg8peO;xCe`1E26Uf^&$l1`FHt9FZ+}cWX@a(A^`Qy&4ta zth7rq<&}}!Hb3gPT5V6(=sS3S@!d7k)#GQ94QAdXX!b52F%XVgE#F)#caWg>#b(*^ zHBEz$?FLNZQ>a5j!~4y93Mf%{oVzYFskk-K-A>E*e3@l^>MzoR01+1>yS3%nTXox~ z&Zz#?JCil+{92%AX8}WnbCX~sncU3WAM3uq)?Y536h25t zCocbs3+c$F!q2aE=(Xe2A+kZfx!UYw-urlLEAw)uj7s1>F=@zXkc&zNk_Tnvq$-#qijITw!mhG$(v}?<4l4l6jm&{cWdR( zvMs{C-PPysy|df@Z*cdKhF>M?ssEZ8ni@CeabYoMAd{i)_@jbM`|YCeq@b^f=Fio! zIE`;r=%FT2WCf4qoFS#FyYt?%k}wIoR#l%91_dT8)k#hGA0sn!=2->u*{@R6oK7w` z`Nz9+LoW2{XF=*nwc25d|bg+Wm#oN29syhi^& z8*4LRzG^x;PZ7U|z?IP9xcF;trry6Px<#mrU<`r9#o~ZIXK{8xO))}J6D#47qSq%} z5FHaz1@0bdl+qC)`LkRds+y2(prJ;Z`n7Q(tJ935y*W!Nf|LGdY0xx&4EnLuGGQb>^|kqF_HGqQ*0bkiIx=5iAg^ zD?DmTt&Zyia4pd|j=gtMb# zB1nkb%d_I*+J&ygA3hLS1|?8yJSpj{u%ifEUb$w1Ae>$4bws65f+YTsnk94nuTGcQ zNNvC&nS0wQ!L!b`XT^O}E%IE=kuoUPKj?p%A#1WdBkEhjI!?mjZqMZ|vjUOePfsKC zoL?{_`yzXKGyTE7Jiy4NOIm5{0+x4rZ5@ zmWD+=6f|L`J+QU1#cL&dYR?5H{;h3JyqTvlA40c0-6gexVIpvj)%j6m{qwXa-AkwZ zM9Vh*T2%;B)Ohc8AACSZFX4U~-ZE9Gg*a^2923k8RE0ayi``C{w;m7U)~MI5fKH4U z)LVg&zlCG5Mt~fU1-R&@04YfYKbD%rXHFq$qMX{c2(ifR&C0i=GiQ7I2B}i7XH!yt zi4^qH&~sw|sD3)w?S)_Tof2I|!Q=N{cZH^*i5%Lu)@?ln7_^A*4NC9LiYay`lqZuM zwX&8g9~=8i`UsMW1TMx$;_VZqvCp?Bwmd@mA2KS!PC$A;v%gHax_Jl!vOJ_b^k%Vt zDlP`u2fp(4EuA$*R^LmVohV1IE_ti)BAV$WC~`}~{GU!Tz5 z++rPc{`&1$5-TffHf)I^ml*}5HS{y}0X1qIrbLt)5(MKjR46 z7RNMgtPM~T{x6EfQx?fsVCa0yx0E_aw>B}m**E2 zS}gLR+n)&XZ2a5o6WXkoZ9wKn%~BxYaZ)x#ZJ)Ty)Xn*kx>5EVGOR-sKzwJ@-n1|n zfukiwhp}?eqK-F8-G$&;guc8A+zO(E?m=WAL){KgcO%ep*nJvR@r0^}8IgoYiqISS zo~jBFFrm$ym}DFr7edV?U=#wg6_tS5gnKTW;J^nLs`wY3k$#~3h@Jgp4J zIf)kY)0k7bd5T_Xld5Cy*hJWDt;*V;)$&1|U+IXY%SQ@4fNtK3>=Lv0A48C>=d6!$ zCX6+m%?IFJ5;-<3@(CWE+bL@q{T?$CDk>_NE_>*BJ!yDwu(HRl{2G!5xU?kVr2wXh zXj5`KbvtIy>b`s#LE&h+zH;)|vAc#<8+D43|3-9{k{K|m_-}1xtl|zie%OeREpXp% zoXDFu6CCr8^oDRz?$k!sm z3xfI{0q#o^;(3y{f6-u?iCtX0=atTfVxSkyB{7fP9HhcD1yWkKFdhImXBEAhK+}$G z1L3T)^3i9WL%0>wpeX-_^9iMreM;-4V;lM0r}zsmP98LEimpRiw6oYH%Q0j})4)L7 zQK^S#=r%ctiCHn1X?b(=6ueT6*Qh)d^V!eD^v4Q%0X*?1X3{}FL8?cfBajd!gK?Rf zw|`pq_U$~!mYEt+K^2DU7)AWMG_jdEZi!=ta}?vh*$&2t$%>yW0%sS>&--?5OzlN6FTKZPFT=f5+3I+mbx#Y z3|^9{&2}8)@V)+yL}D5y?h8PLXc-yGG=Y>L^$j8!2BD13h%d*!wMKke9GnozebOHK`M+fl{)(H5D<(4Ca)-V?!*Lp6oxqlu~AU3{hUqQAS8jdXuY=$Kr@BDhWSH9 z*@b^T;$zHo*YicD&8VwPKI}U2>GCtRXKGt%Sue=b&~l$YnV%ClKCT)WY_eQ7wm9za z?VC}gsU^orx7PGTH@4BY%&M%HpIQQndE{CYevQmr}qDT*OVo8cC)eD zDoes+D!+ZDs9k)fM9Ro0vGUWCM~{x2I~NPr0u`UE)Wr;tg_r_GX#bHD88T^@)|H~! zO4I;SrcU8U?0QmZ{L=jV5Mr;@2w1#%!%pO`?>r^X%PV*^bw*4K-1PGK^CVMKQxNhy zNX7H(7}(e}5>6I05*ZW@5<+3oh%6`MnnemYaRI==f^9TDas24fI~WN&uxs0X_DjPf zBVUkdhFqH%AFq^dW?^yJ)s-GV7ES4EcXvJJtgpz*?$u3!_{71^{ty%U_u&Vvr3m4Nkr@nU9@$xMd8euGqY&;xrkn2Y49y7zhL0dtT_kW9uC{1$B!!; z()cJT1DKEx1+iv$8iP}?cmMu-@88okHlBJh!I_Bs75V<-p8CM(Nao@0N%XnY02y$WYe^8V6{Pcst zMvR3J8GSV_6hgQ>V;S%JhxmL}{X6~C)zxvro*1poj|yOA3xUEr)iszIL;~Sq(9@rd zkJARv2j=jz>d1T^9c``h+!^)_77gkKL`Wj6DRjMj`{K+%95P+6RXC;mwr3;jf@>7# zIZq)F`4mSQ3W&Y4^P9p#hC&?$2Zx+L=MrUteqtQM0O1q!(~NVGxc2}Nkr(NAmExJG z`1tWIbbn^7^VSOnqxE5=blu|iBi2xTYP9W2tD(zj7CUED7E>ZDjTvAfWNO=A@;D~u zFoZ6nKeK~3Zro7P(vrjY6)i38kOVdbA*mx=($e3r;N~U@FDo=6g8UYQNK6w2Jb19p zGGD7?Cg`IVh4ojyCnhE)7}1EIV0#|;q8`CIsmqtQdFlM6IV;dgy|F90msNtAvERIXMC&4x;EzFCrru z_SB#W9e5&l+^{ba_VZqZ->~(BgoI9uh#1-0Ho>t_I&lDbMdrts{)+=e*=G6M1s9N~CD2+S}E2Xo`=8$wi9TF^7kTPj=@=A;7$s>1?oBtlM_XUqc@i z_55=R5t7cXE;tc1Tkjwtf)|9>x`dsFviNEJNu1QN=d<%y`IK)@GvS^kpCE1F(4a76 z7rZ;lCK|~S>}@c4+z4YHV-Uq|Mp2*pa|CZW4Drf(pezP-g7{zv`&_QJLSzLy30?Y; zN-8d$UnMo=n~V%f>=$gFua-i@EPaX^B@x!EIN9CaF0IdJhhQdWR!Rllmbgm3m4jRVRp7>CFHRY5!4|zK9?!z(Kj2E9p-@X~e<>;QmX={Rydve#YZ~t2;vuoI zwn_*0?fVE2^SQ3h5R)8>zuWvd;ym|xcz8h6KiQd)p6=>2c=1Vdj1ltVI1+^XzVWxC ze15uk#sLgMJyWL+rlUNP3(!SrXTs!?5FjLCXIxxd$ZnIM{w8CL1b1+FvNTPLj5|i& zD}&jt;$#pJk6&8bzGgL}Bp(qLK8WyuvMlx(3OugzQ&RacPBj<=PRf?W z`inX`JW(P(jc{jEGBQRH1U)7s6b6Ucz{;v8>9Pb$Y@%XZzbAlUv}lNoi3yv>3cEeb zcF=^qTkoKt-MJ+{KR<@WUIQO{4nt2zBN}iU zAx3b8&!Y~wZx44n%8d-ah=>_5;)w&h-lnCY*q^+1?b;CiUs3FR&4uw~95p0`JV#N`U))7I8TUIf|SeOM9Xd$ZmA^~m1k<-NwHXA)cFtFNz5$tbPFmfoY&47C+6 zz*-(pN>Y*a_C9B}d-r8(hKi9oepCT;f+bu=B^8yAI3tFkhj5Dt|NH<-VuA^?4Vb*2 z?Q_|L{R4i(bg$^}i>N5fGgJXRRSP`6bP=K?R>pIs&qYl`!x7;?!e#F6=@IXv#2HCQ zefJz4S5;T{nx-ZLz$=Q_*K!}9dquiX)CuPUoc{O31orD`$$yLcr)_O@(>5$I!Un1S zs5>Lse`eL9FHzMlAWZeUoKj4OHX-?x5q=%LJNvm^#H(TZFUN*`V?empQqUh_J`CFVZCAlV-7(| zPVUKthu}(r#MCB0Q6*R}DqmFZ>W^Q)K7;%KBG%wuKO!z7JSXk!F7MgJ2&h(g;e%Xa z%PpKM+|1@=I1nE_qB%$soe00vAME7fB6I9H{evgHwiLBZMmK1-Vv(^4g#QGBhl-8b zR5#-lVGuDMIz-t{dVJ}acgM$%J%+TZoju|-2M#<63E8ibD(bc7er)}TD2r~P+X6dM z%IK#dQBnT5X$>m*X<^|fIR>}}#6iPkD1EP$nU&wYd*tyfMu_5=BGUk1O3+yHEQ=k$ zaD9w!o|?ehi5R_kpKQ2i!_XMVhi|>SZZZ` z{S%;^X6StmaQ!STErD<#oYQ}AXli0Vb&AHy%If9ImoQ_Kv$HF%giH~WoRr=!^1-P2 z$6uX@Xh?lq6!R~&b^Phg6Nm3L)YRmeSnk4V!AUK=RjKr$e$+vkJ}f*u2lyQHBvRCo z{auix!q0a`33ulmQ`+2D)XZ?~-{pPh7C)@6X=wOLcI9s~g|egLZt}tJ7i0+b;p=^K zb#0A^cKyme1sUa$R>qq*Z?YdijZz;Z+R+y@F@lHT0-&phxE&4lVgtJ9p1i+*se|xOQ7TVph zF*Lj|P^Oo#yy1v830t$W?BCksCr=5%rKm{kUWS0Pv-9@-pZfcmQ2>8WT&sP6?ui>1 z8FtN&>Xe6_VB5I`={TVj7tGk=d^`>aV3UwIj6@@#rIAwY0bR)gB+b*>zWuKvt~4I% zwG9)ErJ|^lq>!j1O3|@}D0-u;(aA)%N{5P4WU@p;i%v9>L6#(EBwI4cktIu~lqF=% z55GPe;)JoXa`pTWd_C>5q?(`(s4$TPNS` zdOXwU@uNb4uRa%$XycA?0rhjPt*>gV_qkQh0Gqwp(X+cT|FOM;!$QcXG+#+4#iq1Z zztZ2F`FSj>nW$UA&RAMn;*L*Yh$wJ-EsmR3y)g$}44n$QfC1LJaB%%q)0#NEPu*xXFn{oCA&d6hFf{oR97uW;cgZ4+VB+ zH1+gsRpobc@B9h|Jz((8zIN96)wMC*!LyJG%S0U6efCek;H=zb}Z(Q zDq1o93AJ4M>GPr@08`G781u|nAVT7Nk6NLG%r04ADT*&`?OG~;%*3hS1?Q4&%=3% zFvKE}<+ydv+$G9OTp(dbjs9{oSqo<5f@XI^Y;?lST z^t>Ak2E#^vF@@69(z0=;3>Pb-QA5RTDVNJlXKF&JihLSyc4nZU_FJ%o8sG8Ga;gl^ z4=n|aq2lD}R6abfKsR6Z%Wew`3y{&_w%HG}v&Cro`WvOh?3267z%5Oe{$r2{M0d#E z9_Pt>`pH7~EQEX%lc9TfCRgB}hA`KAI;nxrnv(kqKo>E55Eu1d-g2~sbq4U6AW{zp z9bH}5s4OixR zuG5F7%9uJ3bXWP=@cw~o;Z@_T9!z0p&g8NiCT=Q-b_bg3)pVjXSMR{^f}8oe*N2+M zPU=L)kd1*|QE@S#Li0FZpv=GTb457ht%<39RoS_@LvQGvJy)Q^LW#mI)+MWS+Hcxw zI2c?%1Z<@6Aup!-T=d>BMyHUO;sYb`Sr1nu_LM?{rDc12N8f}|6y6)){;?n~y`+xe z2IU(H2uhr%mzUCp4U52hDOtEcQy>}^dUPwXTK&&Id#l*Q&j-TQ#`K1|x>PKGF;dBv z@bz?H1_@KpfG-_8tZwdir$V@*Da&N5y`Gkt0aoJ(09Y^{*KIBiE`4TK^E3uzw+5yg z;sOCRiXcVP?3~gpyD(TgE)6I92OyRYe0^p?ffOR4pr@My(nE!Y2=g9V9r>oGPag+g z)ZWn{`}@jAsIkM)oGBpD3Ew^C($JcYjt=6!Nqrt#?A`PB!HM@Z_4Uz2HrMDmxmGL6 zRZ#GyztY$5V^K04D&lq*qGve2Go7lKHeCsPi|RAjnU46r{gT){itvBPbZP(AL@-sjupU-@~#F zOmSDLAv@xHP>=z1`~3k;BYv3ONU$nm#ikx+og~;V&dO5THjnspi1G)~De$_Bi$^R% zE5eTDJ*dDlJA@bU7C^0$BLFTMNu-cJs!Bzt`4B6Ty1M#XB#gm0oPsh6X^Y?C$f3c( zBo$x_2+?iee<4WY7J-5_Gz@Z^ur;fck1a7cq#2-K z$x_(GCDlfy*gUfz2gc6OfSGRX3O*gDFffh!38o<8er70aD9Q z;{#?`!+Aw{pYhr#KQ#p#28X9W;jfU^j7B1&+X)pyVnVM}Y-dqJxFzAmi?XGqvzdY3Bm87jla%RkWpG1mM{W!-3JJhUK~kx6iuP@IZ;qL| z;Bx0f|AaU*kn$@Ev-KY|(UX%8;t3<@ii}?3;z%$cMguTveN{Z^ToSH@I|n75cSq6w zmwf!o?#MHG%h0|JE{}xM;+O=0Ona?|F-^_s#a*mO$@cNCxiY3WEIz)mGvZzcVv;9L zRKGgw^qPGnqzexRtE$n9U4Sgt#l1w%vE(r0!~YNJZ%>-_|9`S{0? zV(&GGJh&Pe(f5J5`kD6GSUUaV=_dDDT@mnQoA7iK6J@bayWzmxsgs;jR+enfG*sNW z)%n4lo|ft>LL$g$aKoxB*-?vFl`;K;uLR`>mTe*D6=gm+7}HW*O*Oi2wfZ&uK}$=^ z+S*!S#tS?h7?}a9!jtZ&Tr0pG%<=dOw>6Vv6XY*X8ap~Va_Vo)(M%@Su=!I%|Aa)r zS(`%R==Ow!h+Vi)6D?mZEERnfl4?exSKE)v^Ss=9AvU`V3@$;BTU})w_+vsvQBhEY zMvGT->fqW+miv;dkbr=a#Y>GBb%k0VG_2YBuKVnKKAb2Y7DmdfMy->v-?!k)Ruw} z!*S=<&Mla8Mj;CW-ntU}2GWq|U~n20f~UQJB^zM9 zeQ_{;w68pp$K%o7P}zM(x6SRXP%F{dG9gRGCPjS7dt?$^ZmSjT6}x3Nb!&*V T>bw}@(FOLKTJFs?aS8h`)~`#T literal 0 HcmV?d00001 diff --git a/doc/en/tutorials/pic/override-template-before.png b/doc/en/tutorials/pic/override-template-before.png new file mode 100644 index 0000000000000000000000000000000000000000..e1e6a8b379c9a19db9ce82490ef13da4afa0a28d GIT binary patch literal 26403 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