templates/themes/theme/casestudies/casestudy.html.twig line 1

Open in your IDE?
  1. <script type="application/ld+json">
  2. {
  3. "@context": "https://schema.org",
  4. "@type": "Article",
  5. "headline": "{{ study.title }}",
  6. "author": {
  7. "@type": "Organization",
  8. "name": "{{ sitename }}"
  9. },
  10. "datePublished": "{{ study.createdAt|date('c') }}",
  11. "dateModified": "{{ study.updatedAt|date('c') }}",
  12. "image": {
  13. "@type": "ImageObject",
  14. "url": "{{ siteurl }}{{ imageCache('/' ~ study.getFullImage2Path, 'zoomCrop', 800, 600) }}",
  15. "width": 800,
  16. "height": 600
  17. },
  18. "about": {
  19. "@type": "Project",
  20. "name": "{{ study.projectName }}",
  21. "startDate": "{{ study.projectStartDate|date('F n, Y') }}",
  22. "location": {
  23. "@type": "Place"{% if study.projectLocation %},
  24. "name": "{{ study.projectLocation }}"{% endif %}
  25. },
  26. "description": "{{ study.kicker|raw|nl2br|striptags }}"
  27. },
  28. "articleBody": "{{ study.detailContent|html_entity_decode|replace({'\n': ' ', '\r': ' '})|striptags }}"
  29. }
  30. </script>
  31. <div class="case-study-banner flex items-end pb-12 mb-12 text-white lazyBackgroundImage" data-mobile="{{ imageCache('/' ~ study.getFullImage5Path, 'zoomCrop', 1566, 822) }}" data-desktop="{{ imageCache('/' ~ study.getFullImage5Path, 'zoomCrop', 3200, 1680) }}">
  32. <div class="container relative z-20">
  33. <div class="row">
  34. <div class="xl:col-4 lg:col-6">
  35. <h1>{{ allowInlineEditor(study, 'title')|raw }}</h1>
  36. </div>
  37. </div>
  38. <div class="row">
  39. <div class="xl:col-6 lg:col-8 text-lg">
  40. {{ allowInlineEditor(study, 'kicker')|raw }}
  41. </div>
  42. </div>
  43. </div>
  44. </div>
  45. <section class="mb-12">
  46. <div class="container">
  47. <div class="row">
  48. {% if study.image %}
  49. <div class="md:col-4 mb-6 md:mb-0">
  50. <img class="h-auto max-h-[60px] w-auto max-w-full mb-3" src="{{ imageCache('/'~ study.getFullImagePath, "cropResize", 200, 200) }}" height="100" width="100" alt="{{ study.clientName }}" loading="lazy" />
  51. </div>
  52. {% endif %}
  53. {% if study.projectName %}
  54. <div class="md:col-4 md:border-l md:border-dark md:pl-4 md:flex md:flex-col md:justify-center mb-6 md:mb-0">
  55. <p class="text-sm mb-0 text-secondary"><strong>Project</strong></p>
  56. <h3 class="capitalize text-dark mt-0 mb-0">{{ allowInlineEditor(study, 'projectName')|raw }}</h3>
  57. </div>
  58. {% endif %}
  59. {% if study.projectType %}
  60. <div class="md:col-4 md:border-l md:border-dark md:pl-4 md:flex md:flex-col md:justify-center">
  61. <p class="text-sm mb-0 text-secondary"><strong>Project Type</strong></p>
  62. <h3 class="capitalize text-dark mt-0 mb-0">{{ study.projectType }}</h3>
  63. </div>
  64. {% endif %}
  65. </div>
  66. </div>
  67. </section>
  68. {% if study.detailContent %}
  69. <section class="mb-12">
  70. <div class="container">
  71. <div class="row">
  72. <div class="md:col-6 mb-6 md:mb-0">
  73. <img class="max-w-full h-auto" src="{{ imageCache('/' ~ study.getFullImage2Path, 'zoomCrop', 1140, 840) }}" alt="{{ study.detailSubtitle }}" loading="lazy" />
  74. </div>
  75. <div class="md:col-6 text-lg cms-area">
  76. {# THE DETAIL #}
  77. {% if study.detailSubtitle %}
  78. {# <p class="text-sm mb-0 uppercase text-secondary"><strong>{{ allowInlineEditor(study, 'detailSubtitle')|raw }}</strong></p> #}
  79. <h2 class="text-3xl mt-0 mb-8">{{ allowInlineEditor(study, 'detailSubtitle')|raw }}</h2>
  80. {% endif %}
  81. {{ allowInlineEditor(study, 'detailContent')|raw }}
  82. </div>
  83. </div>
  84. </div>
  85. </section>
  86. {% endif %}
  87. {% if study.challengesContent %}
  88. <section class="bg-primary text-white py-16 mb-12">
  89. <div class="container">
  90. <div class="row">
  91. <div class="md:col-6 text-lg order-2 md:order-1 cms-area">
  92. {% if study.challengesSubtitle %}
  93. {# <p class="text-sm mb-0 text-white uppercase"><strong>The Challenges</strong></p> #}
  94. <h2 class="text-3xl mt-0 mb-8 text-white">{{ allowInlineEditor(study, 'challengesSubtitle')|raw }}</h2>
  95. {% endif %}
  96. {{ allowInlineEditor(study, 'challengesContent')|raw }}
  97. </div>
  98. <div class="md:col-6 order-1 md:order-2 mb-12 md:mb-0">
  99. <img class="max-w-full h-auto" src="{{ imageCache('/' ~ study.getFullImage3Path, 'zoomCrop', 1140, 840) }}" alt="{{ study.challengesSubtitle }}" loading="lazy" />
  100. </div>
  101. </div>
  102. </div>
  103. </section>
  104. {% endif %}
  105. {% if study.solutionContent %}
  106. <section class="mb-12">
  107. <div class="container">
  108. <div class="row">
  109. <div class="md:col-6 mb-6 md:mb-0">
  110. <img class="max-w-full h-auto" src="{{ imageCache('/' ~ study.getFullImage4Path, 'zoomCrop', 1140, 840) }}" alt="{{ study.solutionSubtitle }}" loading="lazy" />
  111. </div>
  112. <div class="md:col-6 text-lg cms-area">
  113. {% if study.solutionSubtitle %}
  114. {# <p class="text-sm mb-0 uppercase text-secondary"><strong>The Solution</strong></p> #}
  115. <h2 class="text-3xl mt-0 mb-8">{{ allowInlineEditor(study, 'solutionSubtitle')|raw }}</h2>
  116. {% endif %}
  117. {{ allowInlineEditor(study, 'solutionContent')|raw }}
  118. </div>
  119. </div>
  120. </div>
  121. </section>
  122. {% endif %}
  123. {% if study.projectStartDate or study.projectDuration or study.projectBudget or study.projectLocation %}
  124. <section class="bg-dark py-16 mb-12 text-white text-center">
  125. <div class="container">
  126. <div class="row">
  127. {% if study.projectStartDate %}
  128. <div class="md:col-3 sm:col-6 mb-12 md:mb-0">
  129. <i class="fa-solid fa-calendar-days text-green text-5xl mb-6"></i>
  130. <h5 class="uppercase text-white mb-0">{{ study.projectStartDate|date('M Y') }}</h5>
  131. </div>
  132. {% endif %}
  133. {% if study.projectDuration %}
  134. <div class="md:col-3 sm:col-6 mb-12 md:mb-0">
  135. <i class="fa-solid fa-clock text-green text-5xl mb-6"></i>
  136. <h5 class="uppercase text-white mb-0">{{ allowInlineEditor(study, 'projectDuration')|raw }}</h5>
  137. </div>
  138. {% endif %}
  139. {% if study.projectBudget %}
  140. <div class="md:col-3 sm:col-6 mb-12 sm:mb-0">
  141. <i class="fa-solid fa-coin text-green text-5xl mb-6"></i>
  142. <h5 class="uppercase text-white mb-0">{{ allowInlineEditor(study, 'projectBudget')|raw }}</h5>
  143. </div>
  144. {% endif %}
  145. {% if study.projectLocation %}
  146. <div class="md:col-3 sm:col-6">
  147. <i class="fa-solid fa-location-crosshairs text-green text-5xl mb-6"></i>
  148. <h5 class="uppercase text-white mb-0">{{ allowInlineEditor(study, 'projectLocation')|raw }}</h5>
  149. </div>
  150. {% endif %}
  151. </div>
  152. </div>
  153. </section>
  154. {% endif %}
  155. {% if study.gallery and study.gallery.galleryImages|length > 0 %}
  156. <div class="container mb-4">
  157. <div class="row">
  158. <div class="col-12 text-center">
  159. <h3 class="text-green mb-8 mt-0">Project Gallery</h3>
  160. {% if study.gallery.content %}
  161. <div class="mb-12">
  162. {{ allowInlineEditor(study.gallery, 'content')|raw }}
  163. </div>
  164. {% endif %}
  165. </div>
  166. </div>
  167. <div class="row">
  168. {% for image in study.gallery.galleryImages %}
  169. {% if image.file %}
  170. <div class="lg:col-6 mb-8">
  171. <video class="w-full h-auto" src="{{ image.getFileUrl() }}" controls></video>
  172. </div>
  173. {% else %}
  174. <div class="lg:col-6 mb-8">
  175. <img class="max-w-full h-auto" src="{{ imageCache('/'~ image.getFullImagePath, 'zoomCrop', 1140, 640) }}" alt="{{ image.title }}" loading="lazy" />
  176. </div>
  177. {% endif %}
  178. {% endfor %}
  179. </div>
  180. </div>
  181. {% endif %}
  182. {% if study.testimonial and study.testimonial.active and not study.testimonial.deleted %}
  183. <section class="mb-12">
  184. <div class="container">
  185. <div class="row">
  186. <div class="col-12">
  187. <div class="w-full flex flex-col justify-center items-center text-center">
  188. <h3 class="mb-8 mt-0 text-green">What the Client Said</h3>
  189. {% if study.testimonial.image %}
  190. <img class="h-auto max-h-[60px] w-auto max-w-full mb-3" src="{{ imageCache('/'~ study.testimonial.getFullImagePath, 'cropResize', 150, 150) }}" height="60" alt="{{ study.testimonial.clientName }}" loading="lazy" />
  191. {% endif %}
  192. <a href="{{ generatePath(app.request, study.testimonial.linkedPageId, { 'testimonial_slug': study.testimonial.slug }) }}" class="text-dark">
  193. <p class="text-xl font-light mb-2">{{ allowInlineEditor(study.testimonial, 'content')|nl2br }}</p>
  194. <p class="text-sm font-bold mb-0 text-secondary">{{ allowInlineEditor(study.testimonial, 'attestant')|raw }}</p>
  195. <p class="text-sm text-secondary">{{ allowInlineEditor(study.testimonial, 'jobTitle')|raw }}</p>
  196. </a>
  197. </div>
  198. </div>
  199. </div>
  200. </div>
  201. </section>
  202. {% endif %}
  203. <div class="bg-secondary mb-12 relative text-white py-7">
  204. <div class="container">
  205. {% if prev or next %}
  206. <div class="row team-pagination">
  207. {% if prev %}
  208. <div class="{% if next %}col-6{% else %}col-12{% endif %}">
  209. <a class="prev" href="{{ generatePath( app.request, prev.linkedPageId, {'caseStudy_slug' : prev.slug } ) }}">
  210. Previous <span class="hidden md:inline-block">Case Study</span>
  211. </a>
  212. </div>
  213. {% endif %}
  214. {% if next %}
  215. <div class="{% if prev %}col-6{% else %}col-12{% endif %} text-right">
  216. <a class="next" href="{{ generatePath( app.request, next.linkedPageId, {'caseStudy_slug' : next.slug } ) }}">
  217. Next <span class="hidden md:inline-block">Case Study</span>
  218. </a>
  219. </div>
  220. {% endif %}
  221. </div>
  222. {% endif %}
  223. </div>
  224. </div>