2012-08-02 10 views
6

Tengo una pregunta sobre el sistema de eventos en Tridion 2011 ..... ¿sería posible publicar otra página cuando se envíen otras páginas a la cola de publicación?Sistema de eventos: ¿es posible publicar otra página cuando se está publicando la página?

Actualmente tenemos un archivo XML que define la navegación de nuestro sitio y el mapa del sitio, pero desafortunadamente actualmente se necesita publicar manualmente cada vez que se agrega una nueva página al sitio web.

Mi preocupación sobre la publicación automática desde el sistema de eventos también es tener que publicar la misma página varias veces, cuando realmente solo necesitaría publicación después de que el último elemento en la cola de publicación haya terminado su transacción.

Respuesta

7

Puede publicar el Sitemap por transacción (que puede contener muchas páginas, grupos de estructuras, etc.) suscribiéndose al evento PublishTransaction Save.

Podría considerar verificar la cola de publicación y ver si hay transacciones en espera, pero en teoría esto podría posponer el Sitemap que se publicará durante mucho, mucho tiempo.

EventSystem.SubscribeAsync<PublishTransaction, SaveEventArgs>(
    (subject, args, phase) => 
    { 
     if (!PublishStransactionStateIsSuccessfullyCompleted(subject)) 
      return; 

     // Code to publish sitemap 
    }, 
    EventPhases.TransactionCommitted 
); 
static bool PublishStransactionStateIsSuccessfullyCompleted(PublishTransaction transaction) 
{ 
    return transaction.State == PublishTransactionState.Success || 
      transaction.State == PublishTransactionState.Warning; 
} 
+0

¡Es excelente, he utilizado este ejemplo con gran efecto ya que el uso del evento asincrónico no parece obstruir la cola de publicación!Ahora solo para descubrir si la transacción de publicación es la última en la cola y ¡listo! –

4

Esto es algo que aparece muchas veces durante una implementación, ciertamente con navegación o mapas de sitio que dependen de los elementos publicados (lo que no es una situación ideal en mi opinión).

Una posible solución para esto sería que use el sistema de eventos para colocar la página que genera su XML en la cola de publicación con baja prioridad. Esto asegurará (algo) que solo se publicará después de que se ejecuten las acciones de publicación habituales. Ahora, en segundo lugar, el evento debe verificar si esta página ya está en la cola, por lo que no la agrega una segunda vez.

Tenga en cuenta que esto no impide que se publique varias veces al día, pero al menos debe asegurarse de que nunca esté en la cola dos veces. En un sistema rápido con un editor multihilo dedicado, podría significar que aún se publica aproximadamente cada hora dependiendo de su actividad, etc.

Otra opción sería programar la publicación una vez al día de esa página, utilizando el sistema de eventos para repetir ese proceso, de modo que todos los días al mismo tiempo se publique solo una vez. Esto reducirá la precisión de su XML, ya que solo se actualiza una vez al día, pero evitará que su cola de publicación se llene demasiado podría ser un problema.

8

Cada vez que desee cambiar el número de elementos están siendo publicado por Tridion en respuesta a una acción de publicar, mi mente grita inmediatamente encargo de resolución.

Chris Summers hizo un gran escritura de su experiencia con ellos hace un tiempo: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attribute

Nuno escribió su experiencia un poco más concisa: http://nunolinhares.blogspot.com/2011/10/tridion-publisher-and-custom-resolvers.html

Me suena como que simplemente debe agregar su navegación a la colección ResolvedItems allí. Si utiliza los resolutores de forma coherente, tampoco obtendrá esta explosión de transacciones de publicación de las que parece preocupado y, en su lugar, publicará (e implementará) todos los elementos relacionados en una única transacción.

+0

Tal vez, de hecho, una resolución personalizada sería aún mejor, pero luego el mapa del sitio será parte de la transacción, y me gustó la sugerencia de Bart de publicar el mapa del sitio con una prioridad menor. No todos los creadores de mapas de sitios son tan rápidos. Además, cuando anula la publicación de una página, también quiere volver a publicar su mapa del sitio, y esa es la acción opuesta que la resolución está manejando en ese momento. –

+0

La lucha contra el sistema es ciertamente una forma válida de aumentar la seguridad laboral. Preferiría abrazar el sistema y ver esto como una gran oportunidad para solucionar otros problemas: como el hecho de que el mapa del sitio demora tanto en generar. Por otra parte, también soy el tipo que está pelando lentamente capas de cinta adhesiva de su casa y luego tiene que llamar al hombre práctico, porque arreglar las filtraciones es una cosa que no puedo hacer. –

+0

Dependiendo de cómo se genere el mapa del sitio y cuán pesado sea eso, yo también estaba pensando inicialmente en un solucionador personalizado, pero Richard dijo claramente que su preocupación era que esta página no se publicara varias veces. Un sistema de resolución personalizado lo publicará con cada transacción de publicación y si publica muchas páginas únicas que podrían convertirse en un problema. –

Cuestiones relacionadas