Render Orchard Widgets without a page - orchardcms

We would like our Orchard CMS homepage to contain only widgets and no content items. We have two approaches that work:
One. Create a page, title it Home, and set it as the current homepage. Then use placement.info to hide its parts:
<Match Path="/">
<Match ContentType="Page">
<Place Parts_Title="-"/>
<Place Parts_Common_Metadata="-"/>
<Place Parts_Common_Body="-"/>
</Match>
</Match>
This effectively gives us a homepage that displays only widgets. This approach, though, might confuse end users that add content to the site, because they will still see the "Welcome to Orchard!" page and wonder why its content isn't showing up on the site.
Two. Create a new content type called WidgetContainer, that only has the Autoroute part. Then create an instance of it called Home, and set it as the homepage. This is a better approach.
Is there another way to map www.ourdomain.ca to a container that displays only widgets?

Use this module: https://gallery.orchardproject.net/List/Modules/Orchard.Module.Contrib.Widgets
You can create a content type named Widgets Page for instance and add the widgets container part.

Related

Duplicate an orchard part

I'm trying to use Placement.info instead of overwriting a complete content template and i need to have a part (Parts_Title) displayed in the Content zone and in the Header zone. I was thinking that have two place with that Part in the Placement.info file would do the trick but it seems that the last one wins.
Is there a way to do that? I'm using Orchard 1.9.1.0
Edit 2016-03-16 following Alexander's answer:
There's something i should do wrong; i have a content type designed in the dashboard (no code) named OffreEmploi. I use Content-OffreEmploi.cshtml as the alternate. Here is the code:
#using Orchard.ContentManagement.Utilities;
#Display(Model.Header);
#Display(Model.Content);
#Display(Model.LocalZoneName);
and here is my placement.info
<Match ContentType="OffreEmploi">
<Place Fields_DateTime-DateDebut="Header:2"/>
<Place Fields_Common_Text-Duree="Header:3"/>
<Place Fields_Common_Text-Localisation="Header:4"/>
<Place Fields_Boolean-Temporaire="Header:5"/>
<Place Fields_DateTime-DateExpiration="Header:6"/>
<Place Parts_Common_Metadata="-"/>
<Place Fields_Common_Text-TexteIntroduction="Content:1"/>
<Place Parts_Title="Header:1" />
<Place Parts_Common_Body="Content:3" />
<Place Parts_Title="LocalZoneName:1" />
</Match>
the part Parts_Title is rendered only at the end (in the LocalZoneName)
You can't do this by using only placement.info. The best way for displaying content part twice is to use special local zone for that content part:
Create alternate for Content. Display a zone twice in it alternate by using #Display(Model.LocalZoneName)
Use that local zone in placement.info to render your part inside it Parts_Title="LocalZoneName:1"
Placement.info allows you to specify a single place to put your part in. This is the reason behind the behavior you see - the last entry wins (LocalZoneName:1). And this is where your part's content now resides in - the LocalZoneName.
What Alexander was actually suggesting, and what's the usual solution to this (not unusual) scenario is to use a separate, unique zone to put your part in, and render that zone multiple times, ie.:
#using Orchard.ContentManagement.Utilities;
#Display(Model.LocalZoneName);
#Display(Model.Header);
#Display(Model.LocalZoneName);
#Display(Model.Content);
This will make your LocalZoneName (which now containes the Title part) to be rendered twice - before the Header and Content zones.

Content part showing in admin

I have a custom content part, and I added it in a content item. it works fine, but there is a little problem in content items list on admin: the content part is appearing on it.
here is an image of my problem: http://imageshack.us/photo/my-images/163/2b68.png/
In the Placement.info in your module, add the following line:
<Match DisplayType="SummaryAdmin">
<Place Parts_MyPart="-"/>
</Match>

Orchard Placement file not hiding the Title Part

In Orchard I have a placement.info file that should hide the Title part when I view an Author:
<Match ContentType="Author">
<Place Parts_Title="-" />
<Place Parts_Breadcrumbs="-" />
</Match>
Author is a custom content type I've created and the Breadcrumbs Part is a custom part.
The breadcrumbs part is hidden, but the title is still displayed. If I inspect it with Shape Tracing it is definitely Parts_Title I want to remove, but the content of my placement file doesn't seem to work.
I do not have a whole of example to go on there, but it seems to me that this part is conflicting with the Parts_Title that ships with orchard.
Try extending the modifier in your placement as well as your shapes to something like:
Parts_MyModule_Title
This just adds some more clarity and can keep orchard from stepping all over itself.
Similar problem here.
This is because your custom part's Placement.info was loaded first and Orchard Title part was loaded after that overriding it.
To solve it, in your custom part's Module.txt, put a dependence on Title. This will force Orchard Title to be loaded first before your custom part.

Using Orchard CMS, How do I hide items in a container content type?

I have been attempting to hide the contained items of a Page content type. I have been manipulating the placement.info file in my theme but I am not seeing the results I would expect.
Here's my bruit-force attempt:
<Match Path="/about">
<Match ContentType="Page">
<Match DisplayType="Detail">
<Place Parts_Common_ContentItems="-"/>
<Place Parts_Container_Contained="-"/>
<Place Parts_Container_Contained_Summary="-"/>
<Place Parts_Container_List="-"/>
</Match>
</Match>
</Match>
I have scoured StackOverflow for the answer and I have used the Shape Tracing module to give me direction on designing my placement.info file but I still seem to be missing something.
Any pointers are appreciated!
Thanks.
You cannot hide the content of a container using only Placement.info because the list is rendered by its own controller (Orchard.Core.Containers.Controllers.ItemController) instead of using a shape in the standard orchard shape rendering sytem.
However you may use your own (very simple) controller to build a display without this child list.
I'd say don't put it in the container if you don't want it to appear in there. You might also want to check out taxonomies, that provide a much better and flexible approach to classifying your contents.

OrchardCMS layout of admin pages

I'm trying to change the layout of the admin page for a type and I'm struggling. The client is very specific on the order of the fields and I'm not sure how to do it.
I've created an admin theme and changed the placement.info, but it doesn't seem to work. Are there any hooks I could use to accomplish this?
Any help much appreciated.
My placement.info in the admin theme.
<Match ContentType="Course">
<Place Parts_Routable_Edit="Content:1" />
<Place Fields_Contrib_TaxonomyField_Edit="Content:2" />
<Place Parts_Taxonomies_Term_Fields="Content:2.5" />
<Place Parts_MediaPickerField_Edit="Content:3" />
<Place Parts_Course_Edit="Content:4" />
<Place Parts_Tags_Edit="Content:5" />
</Match>
There's also another problem. I would like 3 taxonomies, and have them placed in different areas of the admin screen. Any idea how to do that?
Since 1.5, you can change the order of parts and fields in the editor, from the admin dashboard. Go to Content Types, select the type, then click on "Manage Placement". You can then drag and drop parts and fields around.
Note that admin themes need to contain a IThemeSelector implementation that gives it a priority of more than 100, which is the priority of the default admin theme.
It really depends on what you want to change. A lot of the admin stuff uses regular ASP MVC, so all you really need to do is override a view or a couple of shapes.
For instance, if you wanted to change how the Modules page was rendered, you could do the following:
Create the folder Views/Orchard.Modules/Admin (this matches the module/controller name) in your theme. Inside it create a view called Index.cshtml, and copy and paste the code from the same view in Orchard.Modules - now you can change your version as much as you like and it should override the default view.
For overriding shapes it is a case of just working out the shape name via the shape tracing module and then adding your own version in your Views folder.
All this is fairly generic advice though, again it really does depend on exactly what you want to change.

Resources