home.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. <!DOCTYPE html>
  2. <html lang="<?= $isHomepage ? ($seo['lang'] ?? 'en') : ($seo['lang-page'] ?? 'en-US') ?>">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <base href="/">
  7. <title><?= $content['title'] ?></title>
  8. <link rel="stylesheet" href="css/styles.css">
  9. <meta name='robots' content='index, follow' />
  10. <?php if (!empty($content['favicon'])): ?>
  11. <link rel="icon" href="<?= htmlspecialchars($content['favicon']) ?>" type="image/x-icon">
  12. <?php endif; ?>
  13. <meta property="og:type" content="<?= $seo['og-type'] ?? '' ?>">
  14. <meta property="og:title" content="<?= $seo['og-title'] ?? '' ?>">
  15. <meta property="og:description" content="<?= $seo['og-description'] ?? '' ?>">
  16. <meta property="og:locale" content="<?= $seo['og-locale'] ?? '' ?>">
  17. <meta property="og:image" content="<?= htmlspecialchars($seo['og-image'] ?? '') ?>">
  18. <meta name="description" content="<?= $seo['description'] ?? '' ?>">
  19. <link rel="canonical" href="<?= $seo['canonical'] ?? '' ?>">
  20. <script type="application/ld+json">
  21. <?= json_encode([
  22. "@context" => "https://schema.org",
  23. "@graph" => [
  24. [
  25. "@type" => "WebPage",
  26. "name" => $content['title'],
  27. "description" => $content['description'],
  28. "inLanguage" => $content['lang'],
  29. "url" => $currentUrl,
  30. "dateModified" => $content['modified-date'] ?? '' , // ISO формат
  31. "author" => [
  32. "@type" => "Person",
  33. "name" => $content['author-name'] ?? '',
  34. "image" => $currentDomain . '/' . htmlspecialchars($content['author-img'] ?? '')
  35. ]
  36. ],
  37. [
  38. "@type" => "Organization",
  39. "name" => $domainName,
  40. "url" => $currentDomain,
  41. "logo" => $currentDomain . '/' . htmlspecialchars($content['uploaded_image'] ?? '')
  42. ],
  43. [
  44. "@type" => "BreadcrumbList",
  45. "itemListElement" => [
  46. [
  47. "@type" => "ListItem",
  48. "position" => 1,
  49. "name" => $content['title-h1'],
  50. "item" => $currentUrl
  51. ]
  52. ]
  53. ],
  54. !empty($casinoItems) ? [
  55. "@type" => "ItemList",
  56. "name" => htmlspecialchars($content['listing']),
  57. "itemListElement" => array_map(function ($item, $index) use ($currentDomain, $currentReviewCount) {
  58. $data = json_decode($item['value'], true);
  59. return [
  60. "@type" => "ListItem",
  61. "position" => $index + 1,
  62. "item" => [
  63. "@type" => "Offer",
  64. "name" => htmlspecialchars($data['heading']),
  65. "description" => htmlspecialchars($data['text']),
  66. "url" => $currentDomain . '/#' . getSlug($data['heading']),
  67. "offeredBy" => [
  68. "@type" => "Organization",
  69. "name" => htmlspecialchars($data['heading']),
  70. "logo" => $currentDomain . '/' . htmlspecialchars($data['image']),
  71. "aggregateRating" => [
  72. "@type" => "AggregateRating",
  73. "ratingValue" => "5",
  74. "reviewCount" => $currentReviewCount + ($index + 1),
  75. "bestRating" => "5",
  76. "worstRating" => "1"
  77. ]
  78. ]
  79. ]
  80. ];
  81. }, $casinoItems, array_keys($casinoItems))
  82. ] : null,
  83. [
  84. "@type" => "FAQPage",
  85. "mainEntity" => array_map(function ($item) {
  86. return [
  87. "@type" => "Question",
  88. "name" => htmlspecialchars($item['question']),
  89. "acceptedAnswer" => [
  90. "@type" => "Answer",
  91. "text" => htmlspecialchars($item['answer'])
  92. ]
  93. ];
  94. }, $faqItems)
  95. ]
  96. ]
  97. ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); ?>
  98. </script>
  99. <style>
  100. th{
  101. color: <?= $styles['pass_btn_color'] ?? '' ?>;
  102. background-color: <?= $styles['accent_color'] ?? '' ?>;
  103. }
  104. .burger:before,
  105. .burger:after,
  106. .burger {
  107. background-color: <?= $styles['burger-color'] ?? '' ?>;
  108. }
  109. .main-font {
  110. font-family: <?= $styles['main-fz'] ?? '' ?>;
  111. }
  112. .main-color {
  113. background: <?= $styles['main_color'] ?? '' ?>;
  114. }
  115. .header-color {
  116. background: <?= $styles['header_color'] ?? '' ?>;
  117. }
  118. .login-btn-bg {
  119. background: <?= $styles['login_btn_bg'] ?? '' ?>;
  120. }
  121. .accent-color {
  122. background: <?= $styles['accent_color'] ?? '' ?>;
  123. }
  124. button.accent-color {
  125. transition: filter 0.3s ease;
  126. }
  127. button.accent-color:hover {
  128. filter: brightness(0.85);
  129. }
  130. .faq-title-font-color {
  131. color: <?= $styles['faq-title-font-color'] ?? '' ?>;
  132. }
  133. .faq-title-hover-font-color:hover {
  134. color: <?= $styles['faq-title-hover-font-color'] ?? '' ?>;
  135. }
  136. .font-color {
  137. color: <?= $styles['font_color'] ?? '' ?>;
  138. }
  139. a {
  140. color: <?= $styles['link_color'] ?? '' ?>;
  141. text-decoration: none;
  142. transition: 300ms;
  143. }
  144. a:hover {
  145. color: <?= $styles['accent_color'] ?? '' ?>;
  146. }
  147. .secondary-color {
  148. background-color: <?= $styles['secondary_color'] ?? '' ?>;
  149. }
  150. .main-fz {
  151. color: <?= $styles['main_fz'] ?? '' ?>;
  152. }
  153. .footer-color {
  154. background: <?= $styles['footer_color'] ?? '' ?>;
  155. }
  156. .accordion-header.active {
  157. background: <?= $styles['accent_color'] ?? '' ?>;
  158. }
  159. .accordion-header:hover {
  160. background: <?= $styles['accent_color'] ?? '' ?>;
  161. }
  162. .header__menu-list {
  163. background: <?= $styles['header_color'] ?? '' ?>;
  164. }
  165. .login-btn-color {
  166. color: <?= $styles['login_btn_color'] ?? '' ?>;
  167. }
  168. .pass-btn-color {
  169. color: <?= $styles['pass_btn_color'] ?? '' ?>;
  170. }
  171. table {
  172. background: <?= $styles['table'] ?? '' ?>;
  173. }
  174. caption {
  175. background: <?= $styles['caption'] ?? '' ?>;
  176. }
  177. .casinos__bonus {
  178. color: <?= $styles['accent_color'] ?? '' ?>;
  179. }
  180. h2 {
  181. color: inherit;
  182. }
  183. h2::after {
  184. background: <?= $styles['accent_color'] ?? '' ?>;
  185. }
  186. @keyframes pulse {
  187. 0% {
  188. transform: scale(0.95);
  189. box-shadow: 0 0 0 0;
  190. }
  191. 70% {
  192. transform: scale(1);
  193. box-shadow: 0 4px 24px 0 <?= $styles['accent_color'] ?? '' ?>;
  194. }
  195. 100% {
  196. transform: scale(0.95);
  197. box-shadow: 0 0 0 0 transparent;
  198. }
  199. }
  200. ul {
  201. list-style: none;
  202. }
  203. .main__text ul li {
  204. position: relative;
  205. margin: 5px 0;
  206. }
  207. .main__text ul li::before {
  208. content: '✓';
  209. width: 22px;
  210. height: 22px;
  211. border-radius: 50%;
  212. background: <?= $styles['accent_color'] ?? '' ?>;
  213. display: inline-flex;
  214. align-items: center;
  215. justify-content: center;
  216. margin-right: 10px;
  217. font-size: 15px;
  218. }
  219. .secondary__text ul li {
  220. position: relative;
  221. margin: 5px 0;
  222. }
  223. .secondary__text ul li::before {
  224. content: '✓';
  225. width: 23px;
  226. height: 23px;
  227. border-radius: 50%;
  228. background: <?= $styles['accent_color'] ?? '' ?>;
  229. display: inline-flex;
  230. align-items: center;
  231. justify-content: center;
  232. margin-right: 10px;
  233. font-size: 15px;
  234. }
  235. .bottom-btn {
  236. margin: auto;
  237. width: 200px;
  238. background: #c30054;
  239. }
  240. ol {
  241. list-style: none;
  242. counter-reset: list-counter;
  243. padding-left: 0;
  244. }
  245. ol li {
  246. counter-increment: list-counter;
  247. position: relative;
  248. padding-left: 40px;
  249. /* Отступ для цифры */
  250. margin: 15px 0;
  251. }
  252. ol li::before {
  253. content: counter(list-counter);
  254. position: absolute;
  255. left: 0;
  256. width: 25px;
  257. height: 25px;
  258. border: 1px solid <?= $styles['accent_color'] ?? '' ?>;
  259. border-radius: 50%;
  260. text-align: center;
  261. line-height: 25px;
  262. font-weight: bold;
  263. top: -1px;
  264. font-size: 14px;
  265. }
  266. .main__btn {
  267. position: relative;
  268. margin: auto;
  269. }
  270. .main__btn a {
  271. display: flex;
  272. align-items: center;
  273. justify-content: center;
  274. height: 100%;
  275. width: 100%;
  276. color: <?= $styles['pass_btn_color'] ?? '' ?>;
  277. }
  278. .main__btn a:hover {
  279. color: <?= $styles['pass_btn_color'] ?? '' ?>;
  280. }
  281. </style>
  282. </head>
  283. <body class="main-color font-color main-font">
  284. <?php include __DIR__ . '/partials/header.php'; ?>
  285. <main class="main">
  286. <section>
  287. <div class="container">
  288. <h1 class="main__title"><?= $content['title'] ?></h1>
  289. <div class="main__banner">
  290. <?php if (!empty($bannerLogo['src'])): ?>
  291. <img class="redirect-js"
  292. width="<?= $bannerLogo['width'] ?? '' ?>"
  293. height="<?= $bannerLogo['height'] ?? '' ?>"
  294. src="<?= htmlspecialchars($bannerLogo['src']) ?>"
  295. alt="<?= $bannerLogo['alt'] ?? '' ?>"
  296. title="<?= $bannerLogo['title'] ?? '' ?>">
  297. <?php endif; ?>
  298. </div>
  299. <div class="container">
  300. <?php if (!empty($content['author-img'])): ?>
  301. <div class="author">
  302. <div class="author__img">
  303. <img width="" height="" src="<?= htmlspecialchars($content['author-img']) ?>" alt="<?= htmlspecialchars($content['author-name'] ?? '') ?>" title="<?= htmlspecialchars($content['author-name'] ?? '') ?>">
  304. </div>
  305. <div class="author__info">
  306. <div class="author__name"><?= htmlspecialchars($content['author-name'] ?? '') ?></div>
  307. <div class="author__date"> <?= $content['modified-date'] ?? '' ?></div>
  308. </div>
  309. </div>
  310. <?php endif; ?>
  311. <div class="main__text">
  312. <?= $content['top_text'] ?>
  313. </div>
  314. <?php if (empty($content['hide-btns'])): ?>
  315. <div class="pulse__btn main__btn accent-color pass-btn-color redirect-js"><?= $content['content_btn'] ?></div>
  316. <?php endif; ?>
  317. </div>
  318. </section>
  319. <section class="casinos">
  320. <div class="container casinos__wrap">
  321. <?php if (!empty($casinoItems)): ?>
  322. <h2 class="casinos__listing"><?= htmlspecialchars($content['listing']) ?></h2>
  323. <?php endif; ?>
  324. <?php if (!empty($casinoItems) && is_array($casinoItems)): ?>
  325. <?php foreach ($casinoItems as $index => $item):
  326. $isTopThree = ($index < 3);
  327. ?>
  328. <div class="casinos__item <?= $isTopThree ? 'top-casino' : '' ?>" id="<?= getSlug(htmlspecialchars($item['heading'] ?? '')) ?>">
  329. <div class="casinos__info">
  330. <div class="casinos__number pass-btn-color accent-color"><?= $index + 1 ?></div>
  331. <div class="casinos__image">
  332. <div class="redirect-js" data-idp="<?= $index + 1 ?>" data-url="<?= htmlspecialchars($item['keitaro'] ?? '') ?>" data-label="repeater-button-<?= $index + 1 ?>">
  333. <?php if (!empty($item['image'])): ?>
  334. <img
  335. width="140" height="92"
  336. class="lazy"
  337. data-src="<?= htmlspecialchars($item['image']) ?>"
  338. alt="<?= isset($item['alt']) ? htmlspecialchars($item['alt']) : '' ?>"
  339. title="<?= isset($item['title']) ? htmlspecialchars($item['title']) : '' ?>">
  340. <?php endif; ?>
  341. </div>
  342. </div>
  343. <div class="casinos__title">
  344. <?php if (!empty($item['heading'])): ?>
  345. <div><?= htmlspecialchars($item['heading']) ?></div>
  346. <?php endif; ?>
  347. <div class="casinos__rait">
  348. <img data-src="images/Star.svg" class="lazy" alt="star" title="star" width="24" height="24">
  349. <div class="casinos__rating-box">
  350. <span class="casinos__rating-value"><?= $item['rating'] ?? calculateRating($index) ?> &nbsp;</span> / 10
  351. </div>
  352. </div>
  353. </div>
  354. </div>
  355. <div class="casinos__bonus">
  356. <?= isset($item['text']) ? htmlspecialchars($item['text']) : '' ?>
  357. </div>
  358. <div class="casinos__button">
  359. <?php if (!empty($item['keitaro']) && !empty($item['button'])): ?>
  360. <div class="redirect-js" data-idp="<?= $index + 1 ?>" data-url="<?= htmlspecialchars($item['keitaro']) ?>" data-label="repeater-button-<?= $index + 1 ?>">
  361. <button class="accent-color pass-btn-color">
  362. <?= htmlspecialchars($item['button']) ?>
  363. </button>
  364. </div>
  365. <?php endif; ?>
  366. </div>
  367. </div>
  368. <?php endforeach; ?>
  369. <?php endif; ?>
  370. </div>
  371. </section>
  372. <section>
  373. <div class="container">
  374. <div class="secondary__text">
  375. <?= htmlspecialchars_decode($content['bottom_text']); ?>
  376. </div>
  377. </div>
  378. </section>
  379. <section>
  380. <div class="container">
  381. <h2><?= $content['faq-title'] ?? '' ?></h2>
  382. <div class="accordion-container">
  383. <?php foreach ($faqItems as $item): ?>
  384. <div class="accordion-item">
  385. <h3 class="accordion-header faq-title-hover-font-color secondary-color faq-title-font-color">
  386. <?= htmlspecialchars($item['question']) ?>
  387. <span class="icon faq-title-hover-font-color faq-title-font-color">+</span>
  388. </h3>
  389. <div class="accordion-content secondary-color faq-title-font-color">
  390. <p>
  391. <?= htmlspecialchars($item['answer']) ?>
  392. </p>
  393. </div>
  394. </div>
  395. <?php endforeach; ?>
  396. </div>
  397. </div>
  398. </section>
  399. </div>
  400. </main>
  401. <?php include __DIR__ . '/partials/footer.php'; ?>
  402. <script src="js/script.js"></script>
  403. <script src="https://cdnjs.cloudflare.com/ajax/libs/blazy/1.8.2/blazy.min.js"></script>
  404. </body>
  405. </html>