Still getting to know Orchard, I've now managed to create a custom default page using a module and routing rules.
Although Orchard properly shows my page, it also renders three what seem to be default widgets, with the headings "First Leader Aside", "Second Leader Aside", "Third Leader Aside". Ok so apparantly you need to overwite that default behaviour or something like that, but I can't figure out how.
So is there something wrong / missing with my module, or do I need to provide a setting or something like that?
If a widget is in the default layer, it will appear on every single page in the site. See http://docs.orchardproject.net/Documentation/Managing-widgets
You will need to put these widgets in a different layer that is defined by a rule that fits what you want.
Related
The Situation: I've got a mid-sized chunk of html/javascript that contains an authentication script/input (it's a text input, radio control, and a combo box and a few buttons). What it is is less important than the concept that it's a mass of static client side code that the marketing department can pretty easily accidentally the whole thing.
The Desire: I want the users to be able to add it as a whole to a page, but not be able to modify it. When something needs to change, I want to change it in one place and have it be changed on all the pages.
What I've Tried: Widget with a default text. It works, but feels wrong. Users can edit it, and if they do when I fix it one place it doesn't propagate to all the instances. I'm a bit of a Kentico noob, but it seems like there should be a better way to do this.
Also note: I'm using portal engine if that makes a difference.
A widget is the proper usage. What you make your widget inherit from is the key in this case. I'd suggest creating a new widget based on a static HTML webpart. This way you can set the static HTML markup and hide the property from the content editor on the front end. You can do this by going to the Properties tab of the widget and setting the visibility of the field on the form. Don't delete the field, just hide it. It should be a checkbox that says hide on public form or editing form.
** Edit **
As I read through my answer and comments, I realized I meant to say clone the static HTML webpart and set its default text to your javascript. Then create a widget based on that cloned webpart. The text will reside in the web part and will allow you to update it in one place later, if needed.
I will not do it this way because you will be not able to make changes in the future. You can better create a new webpart this can be an empty webpart and then create a custom layout. In this layout you can put you're code. In this way you can always change you're code in the future and then it will be changed on all the places where the widget is placed.
I'd use a new widget based on the Static HTML webpart (make the field read only or hide it as Brenden mentioned), but store the data in a new custom setting.
no coding needed (only a macro to read the custom setting)
able to edit the script on the fly on any instance in the settings module. If you have multiple of these settings you won't need to go through all kinds of widgets to adjust their default setting but find them on a central place.
Cheers!
David
In this case I think it makes sense to create a custom web part to store all your code in it and use it that way. If you want to achieve it without creating a custom web part, you have to store the code in some non-web part and not widget specific object. I like the suggestion of creating a custom setting. You can then access this custom setting via a macro. This macro can be used as a default property of a newly created web part (inherited e.g. from the static text web part, you'd use the text property). You may as well create a widget out of it. Another approach is to use Kentico localization keys as a workaround. you can create a key in the Localization application and access it again, via a macro, e.g. {?customkey.myhtml?}. The approach with a custom setting however sounds cleaner to me.
This syntax should be working to access a custom setting value via macro:
{%Settings.CustomSettings.xxx%}
{%Settings.CustomSettings["xxx"]%}
{%Settings.CustomSettings.GetValue("xxx")%}
I am using Liferay 6.1.0 GA1.
When You go to Add -> Page there is a popup list which show you type of new site and it is ugly.
Where I can hide it? I want to remain only accept button.
Edit: I want to hide only if it is really hard to remove it.
you could use an custom theme on your page and use CSS to hide it.
You're mixing up a few terms. I'm assuming that you mean the list of page templates, e.g. when you create a new top level page, you see the page templates "Blog", "Forum" or similar (I can barely remember them from 6.1 times). These are PageTemplates. You can remove all PageTemplates (implying that you won't be able to use them any more) and they won't be offered any more.
Other than that I agree with dube - IMHO it's enough to just hide it with CSS. Only the administrator, who is able to create a new top level page (and when they create a new top level page) will see them anyway. So it's not the regular usecase and just hiding them in CSS does not impose any security issue.
I am currently working on an Orchard module. This module contains an MVC application including the views. I would like to make the module as configurable as possible. One of the items that I would like the customer to configure is the way the MVC views from the module look. Part of it will be determined by the theme. But not everything. Consider the following scenario:
The module contains a view for placing an order. The view displays a form in ´normal view way´. That is field labels and input labels. But at the head of the form each customer must be able to define his own set of instructions to display. Or maybe the customer wants to put there a message for pointing the customer to some other actions.
In the most ideal way I would have a content page where the customer can put all kind of content and one specific block that is the result of the view of the module. Kind like a web part. I can´t find out if it is possible and how that is achieved.
Edit for clarification
Module creates a page like this:
TITLE
FORM
So both title and form are outputted by the module controller.
I have managed to create a layer with the condition that the url matches the page with my form.
I have added a HTML widget to this layer in the content zone with position 1 (tried 0 to).
However the pages looks like this:
TITLE
FORM
WIDGET
instead of
WIDGET
TITLE
FORM
Returning a ShapeResult from your controller action will ensure that your view is themed and benefits from widgets, which are your "kind like a web part" thingies in Orchard.
I have requirements to have an "Editable" region underneath the header, but above the content of views. I have several pages that I need to do this.
Is there are way to insert a Page by name into a view? Is there a better approach?
What you need looks a lot like a widget: create an html widget, put it in the appropriate zone for your placement and in the appropriate layer for it to appear only in the relevant pages (don't be afraid to create a custom layer if you need to). You won't even need to write any code to achieve this!
Read about managing widgets in the orchard documentation.
I've downloaded the latest version of Orchard (0.5) and I've looked at the initial layout of the site. Looks good. But, it only allows me to edit different parts of it and not the actual layout of the page.... or does it? If so, how do I go about changing this?
Check out this link to understand the concept of layers and zones.
Basically, you can customize the zone (a place to put a widget or a place where content goes) layout of a particular page by matching it to a layer (using a rule defined in by the layer). The layer structure allows for inheritance.
You'll want to grab the 0.8 version when it's available Monday 10/25/2010: we did a lot of work around UI composition for that release, basically rewriting the whole UI layer. We're also writing new documentation for those features that you'll find on http://orchardproject.net shortly.
A theme can override the layout of the whole page or of any shape on it by just providing a new template or shape rendering method.