No SharePoint 2013, se criar uma nova web part Content Query (CQWP) e não editar as suas propriedades, ou se a web part não retornar nenhum resultado, a estructura HTML da sua página será alterada e isso poderá ou não danificar o seu design.
No meu caso isso aconteceu. Com algumas web parts numa página, ao adicionar uma nova CQWP, os meus estilos deixaram de funcionar correctamente:
Ao inspeccionar o código da página apercebi-me que a primeira web part (Content Query [5]) estava a envolver todas as outras webparts que aparecem a seguir.
Como podem ver na imagem em baixo, todas as divs com id MSOZoneCell_WebPartWPQxx, que deveriam estar todas ao mesmo nível, estão agora debaixo da primeira (a CQWP).
Para corrigir este problema é necessário usar uma versão personalizada do ficheiro ContentQueryMain.xsl ou editar o original (como com qualquer alteração aos ficheiro default do SharePoint, faça-o a seu próprio risco).
Caso não saiba onde encontrar este ficheiro: ao nível da site collection, clique no botão de settings na Ribbon e depois na opção ‘Site contents’. Vá para a Style Library e depois para a pasta XSL Style Sheets. O ficheiro estará ai.
Agora o que precisa fazer é actualizar o template OuterTemplate.Empty para que consiga lidar com o modo display da página.
Substitua o template original por este:
<xsl:template name="OuterTemplate.Empty">
<xsl:param name="EditMode" />
<xsl:choose>
<xsl:when test="$EditMode = 'True' and string-length($cbq_errortext) = 0">
<div class="wp-content description">
<xsl:value-of disable-output-escaping="yes" select="$cbq_viewemptytext" />
</div>
</xsl:when>
<xsl:otherwise>
<div style="display:none">No Results</div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
E agora os estilos funcionam correctamente: