digitalmars.D.learn - Is it's possible to make modular pug template in vibed?
- Suliman (4/4) Aug 08 2017 For example I am making simple site with header and footer.
- Suliman (2/6) Aug 08 2017 Oh, I founded answer in docs.
- Suliman (3/10) Aug 08 2017 I can't fund way to `include` header and footer in the same docs.
- Steven Schveighoffer (18/29) Aug 08 2017 This is probably because you have something like:
- Suliman (1/1) Aug 08 2017 Yes, thanks what: extends layout mean?
- Suliman (37/37) Aug 08 2017 Still can't get it work.
- Steven Schveighoffer (32/72) Aug 08 2017 OK, you aren't thinking of this correctly then, each pug/diet file must
- Suliman (1/1) Aug 08 2017 Am I right understand that I can extend only one template?
- Suliman (17/17) Aug 08 2017 your examples generate me:
- Steven Schveighoffer (5/25) Aug 08 2017 You have it backwards. You don't render the layout template, but the
- Suliman (6/31) Aug 09 2017 Big thanks! Now I understand. Now i redone dlang.ru in diet
- Steven Schveighoffer (35/40) Aug 09 2017 No, includes can be as big as you want, with as many nested levels as
- Steven Schveighoffer (7/8) Aug 08 2017 It means that your final file will be layout.dt, but with the block
- Suliman (4/14) Aug 08 2017 Could you show how to improve my code above? I can't get it
For example I am making simple site with header and footer. header and footer will be same for all pages. I do not want to do copy-paste it in every page. I want write it's once and than simpy import in every page. Is it's possible to do with vibed?
Aug 08 2017
On Tuesday, 8 August 2017 at 11:55:09 UTC, Suliman wrote:For example I am making simple site with header and footer. header and footer will be same for all pages. I do not want to do copy-paste it in every page. I want write it's once and than simpy import in every page. Is it's possible to do with vibed?Oh, I founded answer in docs.
Aug 08 2017
On Tuesday, 8 August 2017 at 11:59:38 UTC, Suliman wrote:On Tuesday, 8 August 2017 at 11:55:09 UTC, Suliman wrote:I can't fund way to `include` header and footer in the same docs. I cam getting error: "Includes cannot have children"For example I am making simple site with header and footer. header and footer will be same for all pages. I do not want to do copy-paste it in every page. I want write it's once and than simpy import in every page. Is it's possible to do with vibed?Oh, I founded answer in docs.
Aug 08 2017
On 8/8/17 8:38 AM, Suliman wrote:On Tuesday, 8 August 2017 at 11:59:38 UTC, Suliman wrote:This is probably because you have something like: include myfile hr // this is not allowed The way I do it is this (learned from Kai's book): layout.dt: html head ... body ... // header here block content ... // footer here someview.dt: extends layout block content ... // your content -SteveOn Tuesday, 8 August 2017 at 11:55:09 UTC, Suliman wrote:I can't fund way to `include` header and footer in the same docs. I cam getting error: "Includes cannot have children"For example I am making simple site with header and footer. header and footer will be same for all pages. I do not want to do copy-paste it in every page. I want write it's once and than simpy import in every page. Is it's possible to do with vibed?Oh, I founded answer in docs.
Aug 08 2017
Still can't get it work. include header .MainContainer .Header .HeaderMenu .HeaderBlock a(href="/") General .HeaderBlock a(href="/FAQ") FAQ .HeaderBlock a(href="/book") Book .HeaderLoginBlock Sign in .Middle foooo include footer it's template is compilable, but it have wrong indent. Original page (that I am trying to split) have next indents: doctype html html head title DLANG.ru body #app .MainContainer .Header .HeaderMenu .HeaderBlock router-link(to='/') General .HeaderBlock router-link(to='/FAQ') FAQ .HeaderBlock router-link(to='/book') Book .HeaderLoginBlock Sign in .Middle foooo .footer (c) DLANG 2017 But I can't get right indents when I am splition it.
Aug 08 2017
On 8/8/17 9:19 AM, Suliman wrote:Still can't get it work. include header ..MainContainer ..Header .HeaderMenu .HeaderBlock a(href="/") General .HeaderBlock a(href="/FAQ") FAQ .HeaderBlock a(href="/book") Book .HeaderLoginBlock Sign in ..Middle foooo include footerOK, you aren't thinking of this correctly then, each pug/diet file must be complete. It's not like C preprocessor where the structure can be played with via includes or macros. That is, .MainContainer cannot be a child under something defined in header. In this case, you need to use the block system.it's template is compilable, but it have wrong indent. Original page (that I am trying to split) have next indents: doctype html html head title DLANG.ru body #app .MainContainer .Header .HeaderMenu .HeaderBlock router-link(to='/') General .HeaderBlock router-link(to='/FAQ') FAQ .HeaderBlock router-link(to='/book') Book .HeaderLoginBlock Sign in .Middle foooo .footer (c) DLANG 2017 But I can't get right indents when I am splition it.So what you want is probably like: layout.dt: doctype html html head title DLANG.ru body #app .MainContainer block contents .footer (c) DLANG 2017 myfile.dt: extends layout block contents .Header .HeaderMenu .HeaderBlock router-link(to='/') General .HeaderBlock router-link(to='/FAQ') FAQ .HeaderBlock router-link(to='/book') Book .HeaderLoginBlock Sign in .Middle foooo -Steve
Aug 08 2017
Am I right understand that I can extend only one template?
Aug 08 2017
your examples generate me: <!DOCTYPE html> <html> <head> <title>DLANG.ru</title> </head> <body> <div id="app"> <div class="MainContainer"> <div class="footer">(c) DLANG 2017</div> </div> </div> </body> </html> The only one modification that I did I changes pages names: extends home because my main page is home.dt
Aug 08 2017
On 8/8/17 10:52 AM, Suliman wrote:your examples generate me: <!DOCTYPE html> <html> <head> <title>DLANG.ru</title> </head> <body> <div id="app"> <div class="MainContainer"> <div class="footer">(c) DLANG 2017</div> </div> </div> </body> </html>That's the template without the block.The only one modification that I did I changes pages names: extends home because my main page is home.dtYou have it backwards. You don't render the layout template, but the template that extends the layout. -Steve
Aug 08 2017
On Tuesday, 8 August 2017 at 15:54:29 UTC, Steven Schveighoffer wrote:On 8/8/17 10:52 AM, Suliman wrote:Big thanks! Now I understand. Now i redone dlang.ru in diet templates. Am I right understand that include is needed only for small includes without any nesting levels?your examples generate me: <!DOCTYPE html> <html> <head> <title>DLANG.ru</title> </head> <body> <div id="app"> <div class="MainContainer"> <div class="footer">(c) DLANG 2017</div> </div> </div> </body> </html>That's the template without the block.The only one modification that I did I changes pages names: extends home because my main page is home.dtYou have it backwards. You don't render the layout template, but the template that extends the layout. -Steve
Aug 09 2017
On 8/9/17 5:30 AM, Suliman wrote:Big thanks! Now I understand. Now i redone dlang.ru in diet templates.Great!Am I right understand that include is needed only for small includes without any nesting levels?No, includes can be as big as you want, with as many nested levels as you want. You just can't alter the structure of the including template. I think what you are getting hung up on is that the indentation of the include has nothing to do with the indentation of the template that's including it. It's not like the text is copy-pasted and then evaluated in that context. So if you have: someelement include x the resulting html file is going to be: <someelement> <!-- all the contents of x> </someelement> x cannot insert data *outside* that element, no matter how you indent it. You would use includes when you have repeated html that you need in many places. For instance, if you have many places that you display the contents of a database row somehow, you can save that snippet in a template, and then just include it whenever you need the same thing. You would use blocks when you have a framework that you want to be the same, but need to vary the inner html. So essentially the boilerplate that goes around every page on your html (the css, javascript imports, etc.). It's so you don't have to repeat the structure in every file. I will say, there are some annoying limitations to the diet format. Sometimes you *want* to vary the structure based on variables, and it's hard to do. For example, I have a place where I output essentially a calendar as a table. Each row is a different day, each column is an item on that day. The input is a single sorted (by date) array of items. But there's no "good" way to say "ooh, this is a new day, close this table row and open a new one" and still keep the nice structure of the diet templates. Yes, I can output the html manually, but it's ugly. What I ended up doing is just splitting the array into another array of days, each element an array of items for that day. -Steve
Aug 09 2017
On 8/8/17 9:10 AM, Suliman wrote:Yes, thanks what: extends layout mean?It means that your final file will be layout.dt, but with the block statements replaced with the contents defined by the specific view file. Think of it like an interface, where the "blocks" are function prototypes, and your specific view file is a class that implements the interface, where you implement the functions by defining the blocks. -Steve
Aug 08 2017
On Tuesday, 8 August 2017 at 13:22:58 UTC, Steven Schveighoffer wrote:On 8/8/17 9:10 AM, Suliman wrote:Could you show how to improve my code above? I can't get it work...Yes, thanks what: extends layout mean?It means that your final file will be layout.dt, but with the block statements replaced with the contents defined by the specific view file. Think of it like an interface, where the "blocks" are function prototypes, and your specific view file is a class that implements the interface, where you implement the functions by defining the blocks. -Steve
Aug 08 2017