Sails layout usage - node.js

I have two problem with Sails.js layout,
The first one is I want to remove or change the layout for default answer like 403, 404, 500... but I don't find how to do this
My second problem is if I want to use another layout for a entire Controller, is it possible to override layout for all action in Controller or do I have to put it in every res.view({layout : "mylayout"}) ?
EDIT : just find I can change the layout for http error by editing files under api/responses/

You can edit your http erros layout by going to your /views folder and edit the error files. You can also edit your default layout by going to /views and edit layout.ejs.
If you want to specify a diffrent layout files a specific file you can edit the file's route like so:
'get /privacy': {
view: 'users/privacy',
locals: {
layout: 'users'
}
},
for the error files, they dont use a layout so you can just edit them the way you want them to be.

Related

__layout.reset has been removed in favour of named layouts

I have a page set up in this format
original reset image›
I looked at forums and it said i should change the inner layout page to __layout#reset.svelte. However when i do that, I get another error.
reset image using #reset instead of .reset
Does anyone know how i can put in a reset __layout inside of a folder and get it to override the parent layout?
Your error is because __layout#reset.svelte would be looking for a __layout-reset.svelte file in it's current directory, or any parent directory directory, to be a sub-layout for. You don't have a __layout-reset.svelte file.
As Thomas Hennes mentioned in the other thread. If you wanted to have it act like the reset, you'd need to create a __layout-reset.svelte file in the current folder or (more useful for the entire app, in the root folder) and have it be a blank <slot />. From there, you can do __layout#reset.svelte to which will allow you to make a completely new layout.
I think that you can solve this problem by fallowing this steps :
Create "__layout-choseNameYouWant.svelte" at the same level as "__layout.svelte"
Create "guides#theSameNameYouGaveForLayoutFile.svelte" at the same level as
about.svelte
Layouts can themselves choose to inherit from named layouts
create "__layout-root.svelte" at the same level as index.svelte and about.svelte with the following code
<slot/>
create "__layout#root.svelte" in guides folder with the following
<slot></slot>

Yii module, theme layout include module layout. How to to that?

I need do something like that:
I have theme "panel" in /themes/panel and there layout /themes/panel/views/layouts/main.php with example content
<a>$content</a>
I have module "admin" in /protected/modules/admin and there layout /protected/modules/admin/view/layouts/main.php with example content
<b>$content</b>
And on the end i want
<a><b>view</b></a>
Also in /themes/panel/views/layouts/main.php i need load css file from module.
In other explanation:
I have one template for all panels (header, css files, footer), but each of panels need separate layout (only the middle of content change like menu etc.) and one or more individual css file.
Also some images will be include from main theme, other will be individual for modules.
You can use the renderPartial function for load the parts of layout.
<?= $this->renderPartial('webroot.themes.' . Yii::app()->theme->name . '.views.layouts.' . Yii::app()->layout . '.<PART_OF_LAYOUT>') ?>
I disagree that in many help forums of the Internet, when someone asks abot theming a module, everyone suggests a path alias to the themes folder. I think this is wrong, because it implies modules to be splitted, and modules are supposed to be a black-box that can be used across projects. The advice given in such forums would only be valid if a theme is shared among several modules. If someone wants to "package" a theme inside a module, she can:
-add an init function to the controller of the module
-inside that init, use the class attribute layout and a path alias, like this, supose a module whose id is "Sample":
then you add, to SampleCOntroller.php:
public function init() {
//BELOW: it will use the layouts/main.php inside the module.
$this->layouts = "sample.views.layouts.main";
}
Yo can check about path alias here:
http://www.yiiframework.com/doc/guide/1.1/en/basics.namespace

New pages ignore ruby code - Rhomobile

In my Rhomobile project I just created a new .erb file in /app . But the commands between <%= %> are just ignored... In example, I have a link like this:
'href="<%= url_for :controller => :Settings, :action => :do_sync %>"'
but when I click it, nothing happens. How do I create new page files in which I can include such commands? May I map it in some config file?
Thanks for the help.
I think your problem is the location of your .erb file and not your use of url_for.
Assuming that you refer to an action in your Settings controller, the .erb file should be located in /app/Settings. This means that if you want to render an action called login from your Settings controller, you would have to create the file login.erb so it is located at /app/Settings/login.erb.
In your rhoconfig.txt you can define the application start and settings path, if you want to change it so you start your application in a specific controller instead of in /app/index.erb.

How can I specifiy an alternate layout for NotFound.cshml and ErrorPage.cshtml in Orchard CMS

I know you can use layout filters for normal pages with urls, but upon errors the view changes while keeping the url the same, so I can't utilize a new layout based on the path. Any help would be appreciated. Thank you!
Off the top of my head:
If you look in Core > Shapes > Views, you will see two files - one called ErrorPage.cshtml and one called NotFound.cshtml. Simply copy these files and paste them into your theme's view folder.
I have not tested this method with these particular pages, but I did do something similar with the LogOn widget.
Something to bear in mind is that the contents of these files will be rendered in the Content zone of your current theme.

Blocks and Extends in Jade layouts with Express not functioning

I have a small express site written for node. I'm using Jade for layouts, and trying to get a handle on the new extends/block bits. When I use the standard layout/child view pattern list here, everything works great:
https://github.com/visionmedia/express/blob/master/examples/jade/views/layout.jade
I want to get fancy and use blocks to stuff custom html into specific parts of the master layout. So I transitioned over to something that looks more like this:
https://github.com/visionmedia/jade/blob/master/examples/extend-layout.jade
https://github.com/visionmedia/jade/blob/master/examples/extend.jade
Using the exact code in the extend-layout example above, my pages will always render the extend-layout.jade part, but never the content inside. Anything inside of a block never seems to get rendered. I've given this a try, but it doesn't help:
https://github.com/visionmedia/jade/issues/377
I'm running node 0.6.2, express 0.2.5, and jade 0.18. Any takers?
The layout config entry is deprecated now anyway with v3 of Express.
You can only use the block/extends style.
So I've figured out what was up. I was manually specifying the layout to use in express - I was setting it to the correct layout, but removing that line solved the problem. Example (for others who run into this):
exports.index = function(req, res){
res.render('index', { title: 'Express' }) // this works!
res.render('index', { title: 'Express', layout: 'layout' }) // this doesn't work
};
I would have expected a different behavior - including an explicit layout like this simply caused the child view to not render within the master layout.

Resources