I - like most other Tridion implementers, I'm sure - have also been confronted with this very important decision, and my conclusion has always been that
It doesn't matter as long as it is consistent
Often the challenges I've seen are more around semantics than actual grammar - making sure your "displayHeadline" field is always called "displayHeadline" on ...
I think there are as many navigation solutions as there are Tridion implementers :)
My favorite approach (which is usually tweaked to match any customer-specific requirements):
Use Structure Groups for hierarchy
Have a way to identify that a given page is the "index" page for an SG
Have a way to identify that a page or Structure Group should show in ...
You can only use ECL URIs in the following places:
2) In DataExtenders placed after the ECL data extenders.
3) In the ECL API (accessible from for example templates)
The Tridion core service simply do not know what an ECL URI is. So your links will be treated as unmanaged links - and unmanaged links do ...
I think it's something you agree as a team. At Building Blocks we tend to use underscored names for XML names e.g some_field.
I don't think there's a "right" way of naming, as long as it's consistent throughout the implementation (and valid XML!)
This validation is not performed by Tridion, but is a general XSD rule. The thing is that all of the Tridion web schemas have their fields in sequence element. Here's the definition of sequence from here:
The sequence element specifies that the child elements must appear in
a sequence. Each child element can occur from 0 to any number of
I agreed completely with Nuno's answer above, but wanted to add my two cents.
The rule of:
It doesn't matter as long as it is consistent
Is really important to me as I use it when writing my templates. I'm able to know the naming rules of the schema field so that I can really pump out dwt without having to keep checking the names of the schema / ...
You can start by using HttpUtility.URLEncode
Here you have a nice start list of percent encoded characters, although the RFC (3986) is definite.
Also bear in mind that there are a few characters which can't be parsed (the forward slash one) unless you do a whole lot of hacking. Others ( * : % & ) require a fix that Microsoft brought out.
Yes, the function is available if you are on Tridion 2013 or later version of Tridion. The function is SynchronizeWithSchemaAndUpdate.
There is one nice article by Eric for using this functionality from core service: Synchronize components
If you are using 2011 then there should be power tools for it, details are given here: Synchronize Component in ...
I'd cover all bases and check if the schema field exists (what if someone renames this later or you decide to allow another schema that only has some of the currently covered fields)...
exists and then ensure that
has a value.
var xmlLink = string....
As Peter mentioned in his comments that your question is unclear. But if I consider your last comment which says its a "Object Reference" error, So I think it would be best to check the Objects Variables if those are NULL (a normal C# programming practice) before using them.
so please check objects like currentComponent, linkComponentFields , ...
Your question/problem is not specific to Tridion, but a general question on how to deserialize XML mixed content using the XmlSerializer.
Note that the content of a "rich text field" (a.k.a. XHTML field) is mixed content in XML. That is: it is text content mixed with XML elements from the XHTML namespace.
You currently map the "Body" field to a property of ...
SDL Tridion Schemas can be divided in two categories, a Tridion Web Schema and a W3C Schema.
The first variant (also known as a Simple Schema) does not allow attributes and only accepts certain data types. The second variant (also known as Complex Schema) will allow you anything supported by http://www.w3.org/2001/XMLSchema. But W3C Schemas don't have a ...
"Simple Schemas" don't support attributes, only elements.
You can modify the Source tab of the Schema to add the attribute, but be aware that it will change it to a "Complex Schema" - meaning you will not be able to use the form-based UI to edit Components based on said Schema. You will only be able to edit it in the Source tab or through the API.
The component synchroniser would fix this for you. For an implementation that works over the core service, you could look at https://code.google.com/p/tridion-2011-power-tools/source/browse/branches/dominic/ComponentSynchroniser/. This version is still under test and awaiting integration into the power tools so you'd have to run it from code. Obviously, you'...
You can probably try to work with various rules for what needs to be encoded, and indeed some of us would probably enjoy learning about all the exceptions and edge-cases. For practical work, however, you are much better off using Tridion to find the WebDavURL of an item.
If you have the Power Tools loaded, you can simply copy/paste the webdav url from the ...
I am in agreement with Nuno and also with Dominic.
Generally if you go with naming conventions, Pascal cases are generally specified for methods and camel cases for local variables in a programming methodology (Microsoft).
In XML there is no such specified naming convention, though most of the professional recommend using lower case or camel case.
In my ...
RFC 1738 Uniform Resource Locators lists characters which are regarded as unsafe in any URL. These must always be escaped. Beyond that, specific schemes may have additional characters that need to be escaped.
A more recent standard: RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax gives more details of various character sets.
You could say that ...
Escaping would be a way as @user978511 suggests, but RSS feeds are valid XML, so you can simply keep the tridion:href attribute in your links as long as you add the appropriate namespace to your XML.
The correct namespace for the tridion prefix would be http://www.tridion.com/ContentManager/5.0, you can add that to the rss root element of your feed XML:
If you mean how to determine the field type: it is reflected in the type of your loopVariable (which is a pretty lousy name for a variable, BTW :-)
Note that ItemFieldDefinitionData Is an abstract base class. The actual instances will be of a concrete subtype which reflects the field type.
The easiest way is to apply XSLT transformation to it. You can google a bit and find something like:
Just pick the most appropriate
When you retrieve the path for a folder, Tridion looks this up in the path_mappings table in the database. Of course, it could construct the path every time by walking through the folder hierarchy, but this is less efficient. Of course, this means that the path_mappings table needs to be maintained every time a folder is changed, or moved, or localized, etc. ...
Look at the Content Delivery Web Service, it is a REST endpoint based on oData, which allows you to query Component Presentations, Pages and more from the Broker DB via web service calls.
CD Web Service API Documentation
If your DCPs or Pages contain XML, then you can retrieve that and parse it or load it in your jquery datatable.
Here is an example query ...
I don't recognise Convert-To-Xml as a standard Powershell function, although maybe it's in a module you are using. In any case, to get the content into an XML document all you need to do is:
$xDoc = [xml]$tridionItem.Content
If Convert-To-Xml isn't working, Select-Xml will silently return null - you can test this simply like this:
Not much options. If you are using tcm items then i'd say
Object.serialize($model.getItem("tcm:0-1-1").getXmlDocument()) -> send for manipulation -> $tcm.getItemFromXml(Object.deserialize(result).xml)
But I can assume, you won't be able to serialize XML documents due to its size.
As the component content is inside an xml itself, the text is going to be "escaped", so you need something to unescape the content. So the xml is going to be published full of "& lt;" and "& gt;" characters.
What we usually use is a C# Fragment to unscape such characters. Something like this:
Item salida = package.GetByName(Package.OutputName);
Going directly to the database is also not advised, since the data model of the content delivery is not open, meaning that its data structure can change without notification ...
You will need to reach out directly to SDL Support. As of Jan 1st 2020, SDL Tridion 2013 SP1 HR1 entered in the "extended support phase" as per the notification at https://community.sdl.com/product-groups/sdl-tridion-dx/tridion-sites/b/product-announcements/posts/sdl-tridion-2013-sp1-hr1-standard-support-extended-to-december-31-2019.
I'm not sure if SDL ...