I'm looking for an alternative to rails templates and yield in playframework, version 2.0.
Is there something similar to that? I couldn't find it by browsing the docs.
I don't know rails but it looks to me like what is explained here for playframework:
http://www.playframework.org/documentation/2.0.1/ScalaTemplateUseCases
#(title: String)(content: Html)
<!DOCTYPE html>
<html>
<head>
<title>#title</title>
</head>
<body>
<section class="content">#content</section>
</body>
</html>
As mentioned in Somatik's answer Play provides a default template language that is similar to rails' ERB but it is simple enough to replace it with any template engine that you want. You might want to look into Scalate which provides template engines for Mustache and SCAML/Jade (both very similar to HAML).
This discussion on the Play 2.0 Google group points to further documentation on the subject of integrating Scalate into a Play 2.0 application.
Related
I have several Ember projects under the same repo and would like to be able to reuse the GTM snippet across all of their .html files.
<!DOCTYPE html>
<html lang="en">
<head>
{{content-for "head"}}
<link rel="stylesheet" href="assets/employer-vendor.css">
<link rel="stylesheet" href="assets/employer.css">
</head>
<body>
</body>
</html>
Should I use ember-cli-meta-tags, ember-cli-inline-content or similar? In order to have the snippet reusable, it will have to be stored not in ember-cli-build.js, since that's within a specific project, but in a shared folder across the board.
This is a great use case for writing an Ember Addon.
Ember Addon allow you to customize the build pipeline. They provide some hooks to do so. These hooks must be implemented in index.js file of the addon. The syntax of that file is a little bit uncommon these days. It's very old and hasn't be modernized yet. There is an ongoing initiative to replace it with a new format but that's not stable yet.
The hook you are looking for is contentFor. It allows you to inject content into the {{content-for}} placeholders in app/index.html (and tests/index.html). The hook gets the type as the first argument, which maps to the first argument for {{content-for}}. The second and third argument gives you access to the configuration and the existing content but both is not needed for your use case. You should return the HTML, which should be injected at this hook, from it.
Using the hook for your use case might look like this:
// index.js
'use strict';
module.exports = {
name: require('./package').name,
contentFor(type) {
if (type === "head") {
return "a string with Google Tag Manager snippet";
}
}
};
You can implement that addon as in-repo addon and later extract it into a standalone package for reusing across multiple apps.
I'm trying to change the default header in Intellij IDEA Community 2016.1
/**
* Created by ${USER} on ${DATE}.
*/
to have a date variable print an ISO 8601 date format instead of their usual platform-and-locale-dependent format. It's proving to be pretty damn difficult.
There's a configuration described in the help file, "Enable Live Templates" which supposedly enables live template variable parsing in file templates, so I made a very simple live variable, made it work in the editor, but I can't figure out how to make it work in file templates, not even by looking at their source code. I brute-forced everything I've read about Velocity templates, escaping, $variable, $variable$, #set directives, and all the combinations above... No dice.
Does anybody know what's going on? Or am I wrong about what that checkbox does?
Thanks in advance.
Take a look at the HTML file template that comes by default:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>#[[$Title$]]#</title>
</head>
<body>
#[[$END$]]#
</body>
</html>
Wrap your vars like #[[$VAR$]]#
Hello first sorry if its a stupid question, but I amm a beginner, and im a bit lost.
For practice I decided to code a really small social network just for practice.
I worked on small CodeIgniter projects in the past, and the truth is I dont really like loading the header and footer in every controller.
So on YouTube I saw a video about creating basic templating.
But I can't really decide whether it is a good idea.
So how would it look like?
In my view folder I created 3 subfolders
- include
- template
- user
In the templates I have the main_template.php and that looks like this:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="<?php base_url();?>themes/default/style.css">
<title><?php echo $title; ?></title>
</head>
<body>
</body>
</html>
The controllers would contain different variables for the title and other stuff if needed for each view.
My question is: is it a bad idea not create header and footer files, and creating all views with including the html, head, and body tag like this?
I would recommend using a "header" and "footer". Otherwise it's going to get really messy when you'r trying to customize each template. I get passing down a few variables to the views; actually, that will come in really handy when setting the page's title, meta description, JS/CSS includes, etc. However if you keep your header/footer together, you will have to either pass the entire body in a variable or pass in the name of the specific view you want; in which case you would have to load the specific view inside this main view.
Don't know if I get you right. But, I will put some examples how to use the Template library.
It isn't included, you can take It here : http://gist.github.com/1519385.
Put the Template.php file in /application/libraries.
Make a directory on the views, name It "templates" and inside a "main.php".
This "main.php" file, the name describes it well, let's say that It is your Main template.
Example : http://pastie.org/3071074
There you can see the $content variable, It is defined on your controller.
Example : http://pastie.org/3071097
Thats a very basic example, you can extend It more as you need. Hope It helps.
I have the following code:
#(data: model.FrontPageData, list:List[model.FrontPageData])(
implicit
params:play.mvc.Scope.Params,
flash:play.mvc.Scope.Flash,
errors:Map[String,play.data.validation.Error]
)
#import controllers._
<html>
<head>
<title>some title</title>
</head>
<body>
....
And Play Framework returns this error:
The file /app/views/Application/frontPageEditor.scala.html could not
be compiled. Error raised is : illegal start of simple expression
on line #↓import controllers._
You can't use import statements from a template in the middle of the code, it's a limitation in Play templates. You must put them at the beginning of the template, as per documentation.
You can use fully qualified names though. In you case, if you have controller XController, do:
controllers.XController.method()
to access it
(Edited after comments)
It is parsing bug on windows systems, based on play framework support response.
On linux systems it works.
Hope they will fix it soon on windows.
I'm going to be printing out a bunch of HTML5 examples that will be presented in a book format. With this constraint, space is at a premium, so every line I can remove is helpful. I'd like a minimal setup that is clear, but correct, and won't steer anyone down the wrong path.
This is the template I have so far:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<!-- examples... -->
</body>
</html>
I see <meta charset="utf-8"> in every html5 template on the web. Obviously it's best practice to keep it in, but is it so important that I can't remove it, even if it doesn't affect the examples I've provided. Likewise with <!doctype html>.
I could always provide a more robust example in the introduction, but as I expect people to cut-and-paste examples, I'd prefer to have them in a good, but concise, form. Thanks.
You've got to have the DOCTYPE, otherwise HTML5 type stuff won't work in certain browsers (notably IE9). It would probably be safe to leave out the charset - it's not like you can guarantee what charset your readers will be saving the examples in anyway. You will have to add a title element to the head - the document is not valid without it.