Custom Page Template in external assembly in Sitefinity CMS - asp.net-mvc-5

I have created a custom mvc page template in external assembly as custompagetemplate.cshtml and changed its BuildAction property to Embedded
Resource and made the entry in AssemblyInfo.cs.... But the template is not registered (it is not available in Sitefinity's Backend under Design/Page Templates).
I have gone through a link http://www.sitefinity.com/developer-network/knowledge-base/details/sitefinity-cannot-find-template-created-in-an-external-assembly
and I have made the virtual path entry but still facing the same issue.

The Mvc folders are meant for custom MVC Widgets.
Sitefinity MVC (feather) uses the ResourcePackages folder for out-of-the-box widgets and layouts.
If you move your layout file to /ResourcePackages/Bootstrap/MVC/Views/Layouts it will automatically be added to the Page Design overview in Sitefinity Backend.

Related

Changes to page template is not updated to old pages created from template

I have created page template in site pages library of SharePoint online and created some pages from it but when I change the template layout changes are not reflected in the old pages which are created from it. Please let me know if there is any way to resolve this issue.
I'm trying implement the functionality similar to page layouts in classic SharePoint sites. If there is no way to resolve this issue using page templates will it be a good idea to enable publishing features in modern SharePoint site and create page layouts in it.

How I can save a Page in a Page Template in Kentico Xperience13

In Kentico Xperience13, when I go in the Page Template application they said we need to use the Page Application to create a page and save it as a Page Template. But when I create a Page I don't see the place where I can save as a Page Template. So when I came back in the Page Template application the list is always empty.
To use Page Templates in Kentico Xperience 13, you either need to create default templates through code - see Developing page templates, or you can save widgets that have been added to a page as a custom page template - see Saving pages as custom page templates
As someone currently working on a site in Xperience 13, you may want to consider taking a class or two on Pluralsight to give you the basics of MVC and .net core. I am new to those but have been using Kentico for over 10 years. This change to MVC has been a bear to learn. But the Pluralsight courses have helped me get a better understanding of the structure.
Kentico does use content based routing as an option (and I think it is default in 13) you can learn more about it here https://docs.xperience.io/developing-websites/implementing-routing#Implementingrouting-Contenttree-basedrouting
when you build page types you don't have to worry about the model and the controller portion, kentico handles it, you just need to build the view.
this tutorial covers the basics https://docs.xperience.io/13tutorial/asp-net-core-development-tutorial

Display standard Kentico CMS document page using MVC controller

Is there an easy way to use an MVC controller in Kentico; and, return a specific page that has been developed in Kentico, as opposed to referencing something like ~/Views/ControllerName/SomeView.cshtml?
I'm trying to use the MVC controller to provide some needed routing functionality, and already had a working page prior to using the controller. I would like the display to be pulled from the working page I had before using the controller.
I'm using Kentico 7.
Especially in Kentico 7, MVC support was more or less "you can use it, but it won't be usable with portal functionality."
You can have MVC pages, and have Portal pages, but there really isn't a way to pull in a portal style page into it. You're best bet is to try to either use some custom logic to render the elements you need and pull in that content dynamically into the page.
I could be wrong, my MVC isn't as strong as my kentico.
Trevor is right - there is an ASP.NET MVC support in Kentico v7 you can use but there is nothing like MVC Portal Engine or something like that. There are two possible ways how to achieve your scenario:
You can use Kentico as a 'model' and read (manipulate) data via API in your controller and view (typically in Razor). Then you need to:
a) register route to your controller in CMS Desk > Node > Properties > URls and choose proper Path type (route or MVC) - this is prefered way
b) create MVC page template in Site manager > Page templates
You can find example on Corporate Site (part of default installation) in CMS Desk > Corporate Site > Examples > Development Models > MVC
You can learn more in Kentico CMS 7 documentation (MVC development overview section).
Please note there is whole new MVC approach in latest version (Kentico 9).
Portal engine is based on web forms and components such as web parts, page templates or widgets are not supported by MVC itself so you wont be able to display your page using MVC.
Kentico 10 will contain many new features regarding MVC, but mixing portal engine with it will not be the case.

Liferay create site / page programmatically

I have been using Liferay for work for 2 weeks. I noticed that it's a bit difficult to find good documentation and tutorials.
Until now I created pages from the web portal. After I create them, I drag and drop portlets. I don't really like this approach, I would prefer to use a coding approach. Is there a way to create a website or page programmatically by defining a project as I do to create portlets?
Moreover, I am using Liferay with WebLogic 10.3.6. I want to know where liferay puts pages I created via web-portal on the file system. I suppose that a file, or something similar, is created when I declare a new site on the Liferay web-portal.
Thank you all,
Marco
Yes Liferay has it's Database, all data of any Liferay object is stored in the database and / or on the file system depending on your configuration.
However, one of the functionality of Liferay is to let you create pages / sites through the UI. As documented in the Java Portal Specification and Liferay Server Documents your approach to create pages in an alternative way is possible but it is part of Liferay's Portal Services. You can use Liferay's Service (HTTP REST) API to call the related service. To access those APIs you need to configure your Liferay Server.
In case you want to do programmatically you still need to configure, enable and call those external HTTP services from your code. You should not create Liferay Objects from your own code hosted as an extension inside your Liferay Instance as that will result inconsistency in your Liferay Database / filesystem. (As in case of page creation Liferay creates a set of other related objects in it's database / filesystem.)
In your liferay bundle you will find two plugins of interest.
First is resources-importer-web for which description says
The Resources Importer app allows front-end developers to package web
content, portlet configurations, and layouts together in a theme
without saving it as a compiled .LAR file thereby allowing for greater
flexibility in its usage between Liferay Portal versions.This app will automatically create associated content when other
plugins are deployed that are configured to make use of the Resource
Importer app.This app installs as a Liferay service.
Second is welcome-theme which declares resources to be created by resources-importer-web. This on should be example how to create your own. Take a look at
welcome-theme\WEB-INF\src\resources-importer\*
welcome-theme\WEB-INF\liferay-plugin-package.properties
This feature is described at importing-resources-with-themes
As mentioned by gabor_the_kid, Liferay stores all objects in its tables. For example, User related objects would be in user table. Liferay exposed services or API's to change the default/to add new behaviors by program but not easier than achieving it through UI. Also maintenance should be considered for going program way of creating pages or layouts etc.
You can describe your changes using xml and use the Liferay Portal DB Setup core to create the changes in DB.
The library defines the list of available xml configurations.

How to integrate orchard into an existing mvc website [duplicate]

I have Orchard CMS and I want to integrate my MVC site with it. Can anybody tell me how to do this?
It depends on how complex your MVC app is, but in most cases it is straighforward. The easiest way is to wrap your existing site into Orchard module. Writing a module is described here. These are the necessary steps:
Copy your site to a subdirectory under ~/Orchard.Web/Modules along with the .csproj file so that the .csproj file should be in your application root (eg. ~/Orchard.Web/Modules/MyApplication/MyApplication.csproj)
In the root of your app create a Module.txt manifest file. This small file describes your application - its syntax is described here
Set appropriate routes so that existing controllers' actions can be hit. It's also described in the article above. By default, your application URLs will look like /MyApplication/Controller/Action - you're free to change it as you wish. Be careful though not to interfere with existing routes, eg. /Admin, /Users and so on. The routes you specify have higher priority and will override every exisiting ones. Btw - Area name, where necessary, would be the name of your application (eg. MyApplication).
Run Orchard and enable your application in Modules/Features admin menu.
Add necessary changes to web.config file.
Remember though that Orchard is based on ASP.NET MVC 4 and uses Razor view engine. If you use some other view engine, you have to specify it appropriately in the web.config file.

Resources