He estado tratando de resolver este problema desde esta mañana, y sé que me falta algo obvio aquí, pero parece que no puedo encontrarlo.Uso de cadenas de traducción en los enlaces de componentes
Estamos utilizando un archivo XML que se publica en el servidor que contiene traducciones de todas las palabras estándar, como 'leer más'. Es una página con un componente que está localizado en la publicación apropiada.
En nuestras plantillas Razor utilizamos el siguiente código debajo de un elemento de resumen de noticias simple que a su vez vincula al artículo completo.
<a tridion:href="@news.ID" class="more" ><%=DefaultLabels.TranslatedTerm(((HomePage)Page).Location, "read_more")%></a>
La cosa es que la etiqueta del servidor funciona muy bien, pero se resuelve como
<tridion:ComponentLink runat="server" PageURI="tcm:15-407-64" ComponentURI="tcm:15-1475" TemplateURI="tcm:0-0-0" AddAnchor="false" LinkText="<%= DefaultLabels.TranslatedTerm(((HomePage)Page).Location, "read_more") %>" LinkAttributes=" class="more"" TextOnFail="true"/>
Como se puede notar, que se escribe como texto sin formato en la página (no hay sorpresa porque el parámetro LinkText se declara como cadena en primer lugar de acuerdo con LiveDocs).
Si yo quite la
tridion:href
en el primer ejemplo, y escribo como
href
Funciona bien, el código se resuelve en una cadena traducida y es aún vinculado ... a nada más que la ID TCM del componente, no la página correcta con la noticia completa en él.
He intentado crear una función en Razor, intenté reemplazar el texto de enlace, intenté configurar el ComponentLink en la plantilla, pero fue en vano. Siento que debería funcionar con solo un pequeño ajuste en el código de esta plantilla, pero no lo veo y comencé a buscar TBB personalizados para manejar el código.
¿Alguien tiene una idea de cómo resolver esto?
EDIT:
respuesta de Chris era en realidad el que yo estaba buscando en esta situación particular, pero siento que debo señalar que la función de Priyank es algo que debe ser considerado como tal también. Así que gracias a los dos por la ayuda, ¡me hizo la vida algo más fácil ahora!
Chris, ¿podría explicar por qué no debería usar las plantillas predeterminadas para resolver enlaces y usar esta sintaxis en su lugar? ¿Y qué pasa con la salida de TCDL? Gracias. – MDa
El valor predeterminado "Resolver enlaces TBB" encuentra todos los enlaces que contienen TCM URI, y los convierte a TCDL, que más tarde se convierte a REL, JSP, ASP.NET etc. Construye el TCDL colocando el texto del enlace en un atributo (que para usted no está siendo ejecutado por su control ASP.NET).Para hacer que su código se ejecute, lo más fácil es que el texto del enlace (o en su caso un poco de código) en el cuerpo de la etiqueta (en lugar de un atributo). El código que proporcioné directamente hace referencia al control del servidor ComponentLink que cargará el texto del enlace del cuerpo del control si no está en el atributo. –