Skip to main content

Abstracting Out Content Into a Layout

Heres a pattern that abstracts out common code to a single file and publishes out to the live site as an include file. Think snippet of html that gets included in the big file.

1. Create a layout file in any Template, layout.asp (clone out output would work great)

2. Create a filename.asp that checks for the layout and changes publishing path accordingly. This is so this particular layout has different name from output.asp


if content.("_cmsLayout") = "layout.asp" then
content.add "_cmsPublishPath", replace(content.item("_cmsPublishPath"), "old_val", "new_val"
end if


3. In the template we wish to include this code do this


if content.isPublishing then

asset.setParam "_cmsLayout", "layout.asp"
<!--#include virtual="<% asset.getLink("path to asset that uses template with layout.asp file") %>" -->
'when the asset that asset.getLink() is referring to is published, one is published using layout.asp as the template and one using the standard output.asp

else

'include the code as if it was part of this template
system.include "/Template Path/layout.asp"

end if


To publish out the layout file you still need to set it up under the assets publishing properties. View -> Properties -> Publishing. Select the package in the first column then set the layout file to use. In this case it would be layout.asp.

Comments

Popular posts from this blog

Questions about Outages

Routine CMS maintentance windows are from 6pm - 7pm, every Monday and Wednesday. Generally, the system is still available during these times, but may be unavailable for a few minutes during that period. There are other times where maintenance must be performed outside these windows due to unforeseen circumstances. We aim to provide as much notice as possible for these events, typically via email and via an alert on the login page. The routine maintenance is also mentioned on the login page on the day of maintenance.

Checking / Creating New Folders from an SMTP Import

To check if a folder exists in the CMS already you have to create a folder list. There is no direct commands to do this. dim folderExists folderExists = false set folderlist = asset.getFolderList("/path/") 'loop through folder list do while folderlist.nextEntry() if folderlist.item("_cmsLabel") = "foldername" folderExists = true exit do end if loop To create a folder in the CMS, first make a Model that only contains a folder. Then do the following: if folderExists = false then 'create folder set dict = system.createDictionary() fId = asset.create(folderName, "/Site/Global/Picture of the Week/", "/System/Models/Directory Builder", dict) end if The parameters for the asset.create("label", "Path", "Model to use", content or dictionary)

Laravel 5.1 - Posting and Retrieving JSON

This is how you can use jQuery to POST data and retrieve it within the controllers. To Send Data: First off on the page where you are POSTing data from, you need to have a CSRF_TOKEN as a meta tag. <meta name="csrf_token" content="{{ csrf_token() }}" /> Then in the JavaScript, pull the token and send it along with the POST as headers. <script type="text/javascript"> var CSRF_TOKEN = $('meta[name="csrf_token"]').attr('content');    var jsonData = "{ 'data' : 'data' }";   $.ajax({     url: '/route/path',         type: 'POST',     data: jsonData,     headers: {      'X-CSRF-TOKEN': CSRF_TOKEN     },        dataType: 'JSON',     success: function (data) { } }); </script> To Retrieve Data: Setup a post route in /app/Http/routes.php Route::post('/route/path', 'ControllerName@controllerMethod' ); Then setup the controller