Skip to main content

Creating Multiple Files From a Single Template

Sometimes you need to create multiple files from a single template. For instance, when you have a drop down list that displays certain items depending on what is selected, the CMS handles this by creating multiple files (i.e. different versions of the same page populated with different static content). Since the content is managed by the CMS it would be redundant to have the same information hosted on the clients database server and also the CMS is not capable of generating dynamic pages that pull information from the CMS database itself. I believe the CMS database is closed off to external programs / scripts.

So moving along, you create multiple Files by using the filename.asp template file. At this moment I am uncertain how many times or what events trigger the code in the filename.asp to fire. I am aware that you can create a file for every link in the template.

One of the things that seems to link the output.asp file and filename.asp is the use of asset.setParam "args", "_someArg=somevalue&_someOther=someOther"> and asset.getLink("path or id"). The function asset.setParam "args", "etc" appends a query string field and value to the end of the next asset.getLink call and it some how magically appears when you do content.item("_someArg").

So then in the output.asp file you can do

if content.item("_someArg") = xyz then
   print the page you need depending on that argument. This will become the pages when the asset is published out.
elseif content.item("_someArg") = 123 then
   this will be another page
end if

And in the filename.asp file you can do the following:

strPath = content.item("_cmsPublishPath")
if content.item("_someArg") <> "" then
   strPath = replace(strPath, "old_string", "new_string")
endif
content.add "_cmsPublishPath", strPath

essentially old_string would be content.item("_cmsRemoteLabel") and new_string would be some concatenation with content.item("_someArg")

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