templates/blog/ss_thematique/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}{{ sousThematique.name }}, toutes les dernières tendances et nouveautés{% endblock %}
  3. {% block meta %}
  4.     <meta name="description"
  5.           content="{{ sousThematique.name }}, ce qu’il faut savoir, les dernières actualités et nouveautés sur le sujet.">
  6.     <meta name="keywords" content="freelance, dispo, missions, it">
  7.     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=3">
  8.     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
  9.     <script type="text/javascript">(window.NREUM || (NREUM = {})).init = {ajax: {deny_list: ["bam.nr-data.net"]}};
  10.         (window.NREUM || (NREUM = {})).loader_config = {
  11.             licenseKey: "NRJS-8c6c895b97ea60d5ee0",
  12.             applicationID: "1333848373"
  13.         };
  14.         window.NREUM || (NREUM = {}), __nr_require = function (t, e, n) {
  15.             function r(n) {
  16.                 if (!e[n]) {
  17.                     var i = e[n] = {exports: {}};
  18.                     t[n][0].call(i.exports, function (e) {
  19.                         var i = t[n][1][e];
  20.                         return r(i || e)
  21.                     }, i, i.exports)
  22.                 }
  23.                 return e[n].exports
  24.             }
  25.             if ("function" == typeof __nr_require) return __nr_require;
  26.             for (var i = 0; i < n.length; i++) r(n[i]);
  27.             return r
  28.         }({
  29.             1: [function (t, e, n) {
  30.                 function r() {
  31.                 }
  32.                 function i(t, e, n, r) {
  33.                     return function () {
  34.                         return s.recordSupportability("API/" + e + "/called"), o(t + e, [u.now()].concat(c(arguments)), n ? null : this, r), n ? void 0 : this
  35.                     }
  36.                 }
  37.                 var o = t("handle"), a = t(9), c = t(10), f = t("ee").get("tracer"), u = t("loader"), s = t(4),
  38.                     d = NREUM;
  39.                 "undefined" == typeof window.newrelic && (newrelic = d);
  40.                 var p = ["setPageViewName", "setCustomAttribute", "setErrorHandler", "finished", "addToTrace", "inlineHit", "addRelease"],
  41.                     l = "api-", v = l + "ixn-";
  42.                 a(p, function (t, e) {
  43.                     d[e] = i(l, e, !0, "api")
  44.                 }), d.addPageAction = i(l, "addPageAction", !0), d.setCurrentRouteName = i(l, "routeName", !0), e.exports = newrelic, d.interaction = function () {
  45.                     return (new r).get()
  46.                 };
  47.                 var m = r.prototype = {
  48.                     createTracer: function (t, e) {
  49.                         var n = {}, r = this, i = "function" == typeof e;
  50.                         return o(v + "tracer", [u.now(), t, n], r), function () {
  51.                             if (f.emit((i ? "" : "no-") + "fn-start", [u.now(), r, i], n), i) try {
  52.                                 return e.apply(this, arguments)
  53.                             } catch (t) {
  54.                                 throw f.emit("fn-err", [arguments, this, t], n), t
  55.                             } finally {
  56.                                 f.emit("fn-end", [u.now()], n)
  57.                             }
  58.                         }
  59.                     }
  60.                 };
  61.                 a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","), function (t, e) {
  62.                     m[e] = i(v, e)
  63.                 }), newrelic.noticeError = function (t, e) {
  64.                     "string" == typeof t && (t = new Error(t)), s.recordSupportability("API/noticeError/called"), o("err", [t, u.now(), !1, e])
  65.                 }
  66.             }, {}], 2: [function (t, e, n) {
  67.                 function r(t) {
  68.                     if (NREUM.init) {
  69.                         for (var e = NREUM.init, n = t.split("."), r = 0; r < n.length - 1; r++) if (e = e[n[r]], "object" != typeof e) return;
  70.                         return e = e[n[n.length - 1]]
  71.                     }
  72.                 }
  73.                 e.exports = {getConfiguration: r}
  74.             }, {}], 3: [function (t, e, n) {
  75.                 var r = !1;
  76.                 try {
  77.                     var i = Object.defineProperty({}, "passive", {
  78.                         get: function () {
  79.                             r = !0
  80.                         }
  81.                     });
  82.                     window.addEventListener("testPassive", null, i), window.removeEventListener("testPassive", null, i)
  83.                 } catch (o) {
  84.                 }
  85.                 e.exports = function (t) {
  86.                     return r ? {passive: !0, capture: !!t} : !!t
  87.                 }
  88.             }, {}], 4: [function (t, e, n) {
  89.                 function r(t, e) {
  90.                     var n = [a, t, {name: t}, e];
  91.                     return o("storeMetric", n, null, "api"), n
  92.                 }
  93.                 function i(t, e) {
  94.                     var n = [c, t, {name: t}, e];
  95.                     return o("storeEventMetrics", n, null, "api"), n
  96.                 }
  97.                 var o = t("handle"), a = "sm", c = "cm";
  98.                 e.exports = {
  99.                     constants: {SUPPORTABILITY_METRIC: a, CUSTOM_METRIC: c},
  100.                     recordSupportability: r,
  101.                     recordCustom: i
  102.                 }
  103.             }, {}], 5: [function (t, e, n) {
  104.                 function r() {
  105.                     return c.exists && performance.now ? Math.round(performance.now()) : (o = Math.max((new Date).getTime(), o)) - a
  106.                 }
  107.                 function i() {
  108.                     return o
  109.                 }
  110.                 var o = (new Date).getTime(), a = o, c = t(11);
  111.                 e.exports = r, e.exports.offset = a, e.exports.getLastTimestamp = i
  112.             }, {}], 6: [function (t, e, n) {
  113.                 function r(t, e) {
  114.                     var n = t.getEntries();
  115.                     n.forEach(function (t) {
  116.                         "first-paint" === t.name ? l("timing", ["fp", Math.floor(t.startTime)]) : "first-contentful-paint" === t.name && l("timing", ["fcp", Math.floor(t.startTime)])
  117.                     })
  118.                 }
  119.                 function i(t, e) {
  120.                     var n = t.getEntries();
  121.                     if (n.length > 0) {
  122.                         var r = n[n.length - 1];
  123.                         if (u && u < r.startTime) return;
  124.                         var i = [r], o = a({});
  125.                         o && i.push(o), l("lcp", i)
  126.                     }
  127.                 }
  128.                 function o(t) {
  129.                     t.getEntries().forEach(function (t) {
  130.                         t.hadRecentInput || l("cls", [t])
  131.                     })
  132.                 }
  133.                 function a(t) {
  134.                     var e = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
  135.                     if (e) return e.type && (t["net-type"] = e.type), e.effectiveType && (t["net-etype"] = e.effectiveType), e.rtt && (t["net-rtt"] = e.rtt), e.downlink && (t["net-dlink"] = e.downlink), t
  136.                 }
  137.                 function c(t) {
  138.                     if (t instanceof y && !w) {
  139.                         var e = Math.round(t.timeStamp), n = {type: t.type};
  140.                         a(n), e <= v.now() ? n.fid = v.now() - e : e > v.offset && e <= Date.now() ? (e -= v.offset, n.fid = v.now() - e) : e = v.now(), w = !0, l("timing", ["fi", e, n])
  141.                     }
  142.                 }
  143.                 function f(t) {
  144.                     "hidden" === t && (u = v.now(), l("pageHide", [u]))
  145.                 }
  146.                 if (!("init" in NREUM && "page_view_timing" in NREUM.init && "enabled" in NREUM.init.page_view_timing && NREUM.init.page_view_timing.enabled === !1)) {
  147.                     var u, s, d, p, l = t("handle"), v = t("loader"), m = t(8), g = t(3), y = NREUM.o.EV;
  148.                     if ("PerformanceObserver" in window && "function" == typeof window.PerformanceObserver) {
  149.                         s = new PerformanceObserver(r);
  150.                         try {
  151.                             s.observe({entryTypes: ["paint"]})
  152.                         } catch (h) {
  153.                         }
  154.                         d = new PerformanceObserver(i);
  155.                         try {
  156.                             d.observe({entryTypes: ["largest-contentful-paint"]})
  157.                         } catch (h) {
  158.                         }
  159.                         p = new PerformanceObserver(o);
  160.                         try {
  161.                             p.observe({type: "layout-shift", buffered: !0})
  162.                         } catch (h) {
  163.                         }
  164.                     }
  165.                     if ("addEventListener" in document) {
  166.                         var w = !1, b = ["click", "keydown", "mousedown", "pointerdown", "touchstart"];
  167.                         b.forEach(function (t) {
  168.                             document.addEventListener(t, c, g(!1))
  169.                         })
  170.                     }
  171.                     m(f)
  172.                 }
  173.             }, {}], 7: [function (t, e, n) {
  174.                 function r(t, e) {
  175.                     if (!i) return !1;
  176.                     if (t !== i) return !1;
  177.                     if (!e) return !0;
  178.                     if (!o) return !1;
  179.                     for (var n = o.split("."), r = e.split("."), a = 0; a < r.length; a++) if (r[a] !== n[a]) return !1;
  180.                     return !0
  181.                 }
  182.                 var i = null, o = null, a = /Version\/(\S+)\s+Safari/;
  183.                 if (navigator.userAgent) {
  184.                     var c = navigator.userAgent, f = c.match(a);
  185.                     f && c.indexOf("Chrome") === -1 && c.indexOf("Chromium") === -1 && (i = "Safari", o = f[1])
  186.                 }
  187.                 e.exports = {agent: i, version: o, match: r}
  188.             }, {}], 8: [function (t, e, n) {
  189.                 function r(t) {
  190.                     function e() {
  191.                         t(c && document[c] ? document[c] : document[o] ? "hidden" : "visible")
  192.                     }
  193.                     "addEventListener" in document && a && document.addEventListener(a, e, i(!1))
  194.                 }
  195.                 var i = t(3);
  196.                 e.exports = r;
  197.                 var o, a, c;
  198.                 "undefined" != typeof document.hidden ? (o = "hidden", a = "visibilitychange", c = "visibilityState") : "undefined" != typeof document.msHidden ? (o = "msHidden", a = "msvisibilitychange") : "undefined" != typeof document.webkitHidden && (o = "webkitHidden", a = "webkitvisibilitychange", c = "webkitVisibilityState")
  199.             }, {}], 9: [function (t, e, n) {
  200.                 function r(t, e) {
  201.                     var n = [], r = "", o = 0;
  202.                     for (r in t) i.call(t, r) && (n[o] = e(r, t[r]), o += 1);
  203.                     return n
  204.                 }
  205.                 var i = Object.prototype.hasOwnProperty;
  206.                 e.exports = r
  207.             }, {}], 10: [function (t, e, n) {
  208.                 function r(t, e, n) {
  209.                     e || (e = 0), "undefined" == typeof n && (n = t ? t.length : 0);
  210.                     for (var r = -1, i = n - e || 0, o = Array(i < 0 ? 0 : i); ++r < i;) o[r] = t[e + r];
  211.                     return o
  212.                 }
  213.                 e.exports = r
  214.             }, {}], 11: [function (t, e, n) {
  215.                 e.exports = {exists: "undefined" != typeof window.performance && window.performance.timing && "undefined" != typeof window.performance.timing.navigationStart}
  216.             }, {}], ee: [function (t, e, n) {
  217.                 function r() {
  218.                 }
  219.                 function i(t) {
  220.                     function e(t) {
  221.                         return t && t instanceof r ? t : t ? u(t, f, a) : a()
  222.                     }
  223.                     function n(n, r, i, o, a) {
  224.                         if (a !== !1 && (a = !0), !l.aborted || o) {
  225.                             t && a && t(n, r, i);
  226.                             for (var c = e(i), f = m(n), u = f.length, s = 0; s < u; s++) f[s].apply(c, r);
  227.                             var p = d[w[n]];
  228.                             return p && p.push([b, n, r, c]), c
  229.                         }
  230.                     }
  231.                     function o(t, e) {
  232.                         h[t] = m(t).concat(e)
  233.                     }
  234.                     function v(t, e) {
  235.                         var n = h[t];
  236.                         if (n) for (var r = 0; r < n.length; r++) n[r] === e && n.splice(r, 1)
  237.                     }
  238.                     function m(t) {
  239.                         return h[t] || []
  240.                     }
  241.                     function g(t) {
  242.                         return p[t] = p[t] || i(n)
  243.                     }
  244.                     function y(t, e) {
  245.                         l.aborted || s(t, function (t, n) {
  246.                             e = e || "feature", w[n] = e, e in d || (d[e] = [])
  247.                         })
  248.                     }
  249.                     var h = {}, w = {}, b = {
  250.                         on: o,
  251.                         addEventListener: o,
  252.                         removeEventListener: v,
  253.                         emit: n,
  254.                         get: g,
  255.                         listeners: m,
  256.                         context: e,
  257.                         buffer: y,
  258.                         abort: c,
  259.                         aborted: !1
  260.                     };
  261.                     return b
  262.                 }
  263.                 function o(t) {
  264.                     return u(t, f, a)
  265.                 }
  266.                 function a() {
  267.                     return new r
  268.                 }
  269.                 function c() {
  270.                     (d.api || d.feature) && (l.aborted = !0, d = l.backlog = {})
  271.                 }
  272.                 var f = "nr@context", u = t("gos"), s = t(9), d = {}, p = {}, l = e.exports = i();
  273.                 e.exports.getOrSetContext = o, l.backlog = d
  274.             }, {}], gos: [function (t, e, n) {
  275.                 function r(t, e, n) {
  276.                     if (i.call(t, e)) return t[e];
  277.                     var r = n();
  278.                     if (Object.defineProperty && Object.keys) try {
  279.                         return Object.defineProperty(t, e, {value: r, writable: !0, enumerable: !1}), r
  280.                     } catch (o) {
  281.                     }
  282.                     return t[e] = r, r
  283.                 }
  284.                 var i = Object.prototype.hasOwnProperty;
  285.                 e.exports = r
  286.             }, {}], handle: [function (t, e, n) {
  287.                 function r(t, e, n, r) {
  288.                     i.buffer([t], r), i.emit(t, e, n)
  289.                 }
  290.                 var i = t("ee").get("handle");
  291.                 e.exports = r, r.ee = i
  292.             }, {}], id: [function (t, e, n) {
  293.                 function r(t) {
  294.                     var e = typeof t;
  295.                     return !t || "object" !== e && "function" !== e ? -1 : t === window ? 0 : a(t, o, function () {
  296.                         return i++
  297.                     })
  298.                 }
  299.                 var i = 1, o = "nr@id", a = t("gos");
  300.                 e.exports = r
  301.             }, {}], loader: [function (t, e, n) {
  302.                 function r() {
  303.                     if (!M++) {
  304.                         var t = T.info = NREUM.info, e = m.getElementsByTagName("script")[0];
  305.                         if (setTimeout(u.abort, 3e4), !(t && t.licenseKey && t.applicationID && e)) return u.abort();
  306.                         f(x, function (e, n) {
  307.                             t[e] || (t[e] = n)
  308.                         });
  309.                         var n = a();
  310.                         c("mark", ["onload", n + T.offset], null, "api"), c("timing", ["load", n]);
  311.                         var r = m.createElement("script");
  312.                         0 === t.agent.indexOf("http://") || 0 === t.agent.indexOf("https://") ? r.src = t.agent : r.src = l + "://" + t.agent, e.parentNode.insertBefore(r, e)
  313.                     }
  314.                 }
  315.                 function i() {
  316.                     "complete" === m.readyState && o()
  317.                 }
  318.                 function o() {
  319.                     c("mark", ["domContent", a() + T.offset], null, "api")
  320.                 }
  321.                 var a = t(5), c = t("handle"), f = t(9), u = t("ee"), s = t(7), d = t(2), p = t(3),
  322.                     l = d.getConfiguration("ssl") === !1 ? "http" : "https", v = window, m = v.document,
  323.                     g = "addEventListener", y = "attachEvent", h = v.XMLHttpRequest, w = h && h.prototype, b = !1;
  324.                 NREUM.o = {
  325.                     ST: setTimeout,
  326.                     SI: v.setImmediate,
  327.                     CT: clearTimeout,
  328.                     XHR: h,
  329.                     REQ: v.Request,
  330.                     EV: v.Event,
  331.                     PR: v.Promise,
  332.                     MO: v.MutationObserver
  333.                 };
  334.                 var E = "" + location, x = {
  335.                     beacon: "bam.nr-data.net",
  336.                     errorBeacon: "bam.nr-data.net",
  337.                     agent: "js-agent.newrelic.com/nr-1216.min.js"
  338.                 }, O = h && w && w[g] && !/CriOS/.test(navigator.userAgent), T = e.exports = {
  339.                     offset: a.getLastTimestamp(),
  340.                     now: a,
  341.                     origin: E,
  342.                     features: {},
  343.                     xhrWrappable: O,
  344.                     userAgent: s,
  345.                     disabled: b
  346.                 };
  347.                 if (!b) {
  348.                     t(1), t(6), m[g] ? (m[g]("DOMContentLoaded", o, p(!1)), v[g]("load", r, p(!1))) : (m[y]("onreadystatechange", i), v[y]("onload", r)), c("mark", ["firstbyte", a.getLastTimestamp()], null, "api");
  349.                     var M = 0
  350.                 }
  351.             }, {}], "wrap-function": [function (t, e, n) {
  352.                 function r(t, e) {
  353.                     function n(e, n, r, f, u) {
  354.                         function nrWrapper() {
  355.                             var o, a, s, p;
  356.                             try {
  357.                                 a = this, o = d(arguments), s = "function" == typeof r ? r(o, a) : r || {}
  358.                             } catch (l) {
  359.                                 i([l, "", [o, a, f], s], t)
  360.                             }
  361.                             c(n + "start", [o, a, f], s, u);
  362.                             try {
  363.                                 return p = e.apply(a, o)
  364.                             } catch (v) {
  365.                                 throw c(n + "err", [o, a, v], s, u), v
  366.                             } finally {
  367.                                 c(n + "end", [o, a, p], s, u)
  368.                             }
  369.                         }
  370.                         return a(e) ? e : (n || (n = ""), nrWrapper[p] = e, o(e, nrWrapper, t), nrWrapper)
  371.                     }
  372.                     function r(t, e, r, i, o) {
  373.                         r || (r = "");
  374.                         var c, f, u, s = "-" === r.charAt(0);
  375.                         for (u = 0; u < e.length; u++) f = e[u], c = t[f], a(c) || (t[f] = n(c, s ? f + r : r, i, f, o))
  376.                     }
  377.                     function c(n, r, o, a) {
  378.                         if (!v || e) {
  379.                             var c = v;
  380.                             v = !0;
  381.                             try {
  382.                                 t.emit(n, r, o, e, a)
  383.                             } catch (f) {
  384.                                 i([f, n, r, o], t)
  385.                             }
  386.                             v = c
  387.                         }
  388.                     }
  389.                     return t || (t = s), n.inPlace = r, n.flag = p, n
  390.                 }
  391.                 function i(t, e) {
  392.                     e || (e = s);
  393.                     try {
  394.                         e.emit("internal-error", t)
  395.                     } catch (n) {
  396.                     }
  397.                 }
  398.                 function o(t, e, n) {
  399.                     if (Object.defineProperty && Object.keys) try {
  400.                         var r = Object.keys(t);
  401.                         return r.forEach(function (n) {
  402.                             Object.defineProperty(e, n, {
  403.                                 get: function () {
  404.                                     return t[n]
  405.                                 }, set: function (e) {
  406.                                     return t[n] = e, e
  407.                                 }
  408.                             })
  409.                         }), e
  410.                     } catch (o) {
  411.                         i([o], n)
  412.                     }
  413.                     for (var a in t) l.call(t, a) && (e[a] = t[a]);
  414.                     return e
  415.                 }
  416.                 function a(t) {
  417.                     return !(t && t instanceof Function && t.apply && !t[p])
  418.                 }
  419.                 function c(t, e) {
  420.                     var n = e(t);
  421.                     return n[p] = t, o(t, n, s), n
  422.                 }
  423.                 function f(t, e, n) {
  424.                     var r = t[e];
  425.                     t[e] = c(r, n)
  426.                 }
  427.                 function u() {
  428.                     for (var t = arguments.length, e = new Array(t), n = 0; n < t; ++n) e[n] = arguments[n];
  429.                     return e
  430.                 }
  431.                 var s = t("ee"), d = t(10), p = "nr@original", l = Object.prototype.hasOwnProperty, v = !1;
  432.                 e.exports = r, e.exports.wrapFunction = c, e.exports.wrapInPlace = f, e.exports.argsToArray = u
  433.             }, {}]
  434.         }, {}, ["loader"]);</script>
  435.     <meta property="og:image" content="{{ absolute_url(asset('images/logo_freelance_new.png')) }}">
  436.     <meta property="og:image:secure_url" content="{{ absolute_url(asset('images/logo_freelance_new.png')) }}">
  437.     <meta property="og:title"
  438.           content="Freelance: missions {{ 'now'|date('Y') }} sur toute la France | WorkDispo"/>
  439.     <meta property="og:type" content="WorkDispo"/>
  440.     <meta property="og:url" content="{{ app.request.getBaseURL() }}"/>
  441.     <meta name="Content-Language" content="fr">
  442.     <meta name="author" content="www.workdispo.com">
  443.     <meta name="revisit-after" content="revisit-after">
  444.     <meta name="pragma" content="no-cache">
  445.     <meta name="classification" content="WorkDispo: des missions sans commission">
  446.     <meta property="og:site_name" data-js-id="meta-og_site_name" content="WorkDispo">
  447.     <meta http-equiv="Cache-Control" content="max-age=31536000">
  448. {% endblock %}
  449. {% block stylesheets %}
  450.     <style>
  451.         .limited-lines-two {
  452.             display: -webkit-box !important;
  453.             -webkit-line-clamp: 2 !important;
  454.             -webkit-box-orient: vertical !important;
  455.             overflow: hidden !important;
  456.         }
  457.     </style>
  458. {% endblock %}
  459. {% block body %}
  460.     <div id="titlebar" class="white margin-bottom-30">
  461.         <div class="container">
  462.             <div class="row">
  463.                 <div class="col-md-12">
  464.                     <h2>{{ sousThematique.name }}</h2>
  465.                     <!-- Breadcrumbs -->
  466.                     <nav id="breadcrumbs" class="dark">
  467.                         <ul>
  468.                             <li><a href="{{ path('blog') }}">Blog</a></li>
  469.                             <li><a href="{{ path('blog_show',{thematique:thematique.slug}) }}">{{ thematique.slug }}</a></li>
  470.                             <li>{{ sousThematique.slug }}</li>
  471.                         </ul>
  472.                     </nav>
  473.                     <div class="task-tags d-flex col-md-12" style="gap: 2px;flex-wrap: wrap">
  474.                         <a style="background-color: rgba(42, 65, 232, .07)"
  475.                            href="{{ path('blog_show',{thematique:thematique.slug}) }}">
  476.                             <span style="color: #2a41e8 !important;font-size: 16px;">{{ thematique.name }}</span>
  477.                         </a>
  478.                         {% for sousThematique in listeSousThematique %}
  479.                             <a style="background-color: rgba(42, 65, 232, .07)"
  480.                                href="{{ path('blog_show',{thematique:thematique.slug,sousThematique:sousThematique.slug}) }}">
  481.                                 <span
  482.                                     style="color: #2a41e8 !important;font-size: 16px;">{{ sousThematique.name }}</span>
  483.                             </a>
  484.                         {% endfor %}
  485.                     </div>
  486.                 </div>
  487.             </div>
  488.         </div>
  489.     </div>
  490.     <div class="container">
  491.         <div class="row">
  492.             {% for blog in blogs %}
  493.                 <a href="{{ path('blog_show',{thematique:blog.slug}) }}" class="blog-compact-item-container col-md-4">
  494.                     <div class="blog-compact-item">
  495.                         <img src="{{ asset( blog.blogimage ? 'uploads/img/'~blog.blogimage.path : 'images/blog-04.jpg') }}" alt="{{ blog.blogimage ? blog.blogimage.name : '' }}">
  496.                         <div style="position: absolute;top: 32px;left: 16px;">
  497.                             {% if blog.getSousThematique() is not empty %}
  498.                                 {% for sous_thematique in blog.getSousThematique() %}
  499.                                     <span class="blog-item-tag" style="position: relative !important;top: auto;left: auto;z-index: 110">{{ sous_thematique.getName() }}</span>
  500.                                 {% endfor %}
  501.                             {% else %}
  502.                                 {% for thematique in blog.getThematique() %}
  503.                                     <span class="blog-item-tag" style="position: relative !important;top: auto;left: auto;z-index: 110">{{ thematique.getName() }}</span>
  504.                                 {% endfor %}
  505.                             {% endif %}
  506.                         </div>
  507.                         <div class="blog-compact-item-content">
  508.                             <ul class="blog-post-tags">
  509.                                 {% set trans_month_hash = {
  510.                                     "January": "Janvier",
  511.                                     "February": "Février",
  512.                                     "March": "Mars",
  513.                                     "April": "Avril",
  514.                                     "May": "Mai",
  515.                                     "June": "Juin",
  516.                                     "July": "Juillet",
  517.                                     "August": "Août",
  518.                                     "September": "Septembre",
  519.                                     "October": "Octobre",
  520.                                     "November": "Novembre",
  521.                                     "December": "Décembre"
  522.                                 } %}
  523.                                     <li>{{ blog.getCreatedAt()|date("d") }} {{ trans_month_hash[blog.getCreatedAt()|date("F")] }} {{ blog.getCreatedAt()|date("Y") }}</li>
  524.                                 </ul>
  525.                             <h3 class="limited-lines-two">{{ blog.title }}</h3>
  526.                             <p>{{ blog.description }}</p>
  527.                         </div>
  528.                     </div>
  529.                 </a>
  530.             {% endfor %}
  531.         </div>
  532.     </div>
  533. {% endblock %}