products.tpl 81 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668
  1. {debug}
  2. {if $block.sechidden neq "true"}
  3. {if $block.ptstyle == ''}
  4. <div id="sec-{$blockkey}" class="sec products{if $block.bgcolor != ""} {$block.bgcolor}{/if}{if $block.borders != ""} {$block.borders}{/if}{if $block.toppadding == "1"} inner-t-60{elseif $block.toppadding == "2"} inner-t-30{elseif $block.toppadding == "3"} no-padding-top{/if}{if $block.bottompadding == "1"} inner-b-60{elseif $block.bottompadding == "2"} inner-b-30{elseif $block.bottompadding == "3"} no-padding-bottom{/if}">
  5. <div class="container">
  6. {if $block.caption || $block.sectitle || $block.subtitle}
  7. <div class="sec-description">
  8. {if $block.caption}
  9. <div class="sec-caption">
  10. <span class="rounded">{$block.caption}</span>
  11. </div>
  12. {/if}
  13. {if $block.sectitle}
  14. <h2 class="sec-title">{$block.sectitle}</h2>
  15. {/if}
  16. {if $block.subtitle}
  17. <div class="sec-subtitle">{$block.subtitle}</div>
  18. {/if}
  19. </div>
  20. {/if}
  21. <div class="cros-pricing-container{if $block.itemcounts < "3"} mw-768 mx-auto{/if}">
  22. {if $block.SbSwitcher && !$block.DisableSwitcher}
  23. {if $block.switcherCycles !== null && $block.switcherCycles|@count > 1}
  24. {assign var="cycles" value=$block.switcherCycles}
  25. {else}
  26. {assign var="cycles" value=$allCycles}
  27. {/if}
  28. {if !$block.bsco}
  29. {assign var="cycles" value=$cycles|@array_reverse}
  30. {/if}
  31. <div class="product-billing-switcher-{$blockkey}">
  32. <div class="btn-group white border d-none d-sm-inline-block" role="group">
  33. {foreach $cycles as $cycle}
  34. <button type="button" class="btn cycle-change" data-cycle="{$cycle}">
  35. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycle}}</span>
  36. </button>
  37. {/foreach}
  38. </div>
  39. <div class="btn-group white border d-inline-block d-sm-none">
  40. <span class="px-3 py-1 small text-muted border-right">{$WLANG.orderbillingcycle}</span>
  41. <button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
  42. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycles[0]}}</span>
  43. </button>
  44. <ul class="dropdown-menu">
  45. {foreach $cycles as $cycle}
  46. <li class="dropdown-item cycle-change" data-cycle="{$cycle}">
  47. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycle}}</span>
  48. </li>
  49. {/foreach}
  50. </ul>
  51. </div>
  52. </div>
  53. {/if}
  54. <div class="pricing_style_2">
  55. <div class="swiper" id="pricing-tables-{$blockkey}">
  56. <div class="row row-eq-height{if !$block.DisplayInGrid} flex-nowrap{/if} pricing-slider pricing-{$blockkey} swiper-wrapper{if count($block.table) < 3} justify-content-md-center{/if}">
  57. {if count($block.table) > 0}
  58. {foreach from=$block.table item=$ditem key=$kk}
  59. <div class="col-12{if $block.itemcounts == "2"} col-md-6{elseif $block.itemcounts == "3"} col-md-6 col-lg-4 col-xl-4{elseif $block.itemcounts == "4"} col-md-6 col-lg-4 col-xl-3{/if} products-slide">
  60. <div class="cros-pricing-table overflow-hidden mt-0 mb-4{if $block.ststyle} {$block.ststyle}{/if}{if $block.noshadow} no-shadow{/if}{if $block.tablebg == "light"} light{elseif $block.tablebg == "primary"} bg-primary{elseif $block.tablebg == "dark"} dark{else} white{/if}{if $ditem['Featured']} active{/if}{if $block.centered} centered{/if}">
  61. {if $ditem['Graphic']}
  62. <div class="graphics mb-3">
  63. {if !$ditem['Graphic']|strstr:"fa-"}
  64. <img src="{$WEB_ROOT}/{$ditem['Graphic']}" alt="{$ditem.title}" class="img-fluid">
  65. {else}
  66. <span class="icon">
  67. <i class="{$ditem['Graphic']}"></i>
  68. </span>
  69. {/if}
  70. </div>
  71. {/if}
  72. <div class="h4">{$ditem['productdetails']['name']}</div>
  73. {if $ditem['Featured']}
  74. {if $block.ststyle}
  75. <div class="feature-sticker">
  76. <span class="st-sm">
  77. {if $block.featured}{$block.featured}{else}{$WLANG.featuredProduct}{/if}
  78. </span>
  79. </div>
  80. {else}
  81. <div class="sticker-wrapper">
  82. <div class="sticker">
  83. {if $block.featured}{$block.featured}{else}{$WLANG.featuredProduct}{/if}
  84. </div>
  85. </div>
  86. {/if}
  87. {/if}
  88. {if $block.descp == ""}
  89. {if count($ditem['productdetails']['description']['features']) > 0}
  90. {if $ditem['productdetails']['description']['featuresdesc']}
  91. <div class="desc">{$ditem['productdetails']['description']['featuresdesc']}</div>
  92. {/if}
  93. {/if}
  94. {/if}
  95. {if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}
  96. {if $block.bsco}
  97. {foreach $ditem["dropdown"] as $dropdownkey=>$dropdownprice}
  98. {$ditem["dropdown"][$dropdownkey] = $dropdownprice|@array_reverse}
  99. {/foreach}
  100. {/if}
  101. {assign var="dropdownprice" value=$ditem["dropdown"][$ditem['Plan']][0] nocache}
  102. {assign var="defaultbilling" value=$dropdownprice['cycle'] nocache}
  103. {assign var="taxtype" value=$dropdownprice['taxtype'] nocache}
  104. {assign var="hasconfigoptions" value=$dropdownprice['hasconfigoptions'] nocache}
  105. <div class="billing-cycle-pricing float{if $block.descp == "below"} desc_belwo{/if}">
  106. {if !$block.SbSwitcher}
  107. <div class="btn-group mb-2">
  108. <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
  109. <div class="pricing_wrapr">
  110. {$dropdownprice['billingcycle']} @ {if $dropdownprice['save']}<div class="save_text"><span class="badge badge-primary">{$dropdownprice['save']}</span></div>{/if}
  111. </div>
  112. <span class="fal fa-angle-down"></span>
  113. </a>
  114. <ul class="dropdown-menu">
  115. {if $ditem["dropdown"][$ditem['Plan']]}
  116. {foreach $ditem["dropdown"][$ditem['Plan']] as $dropdownprice}
  117. <li class="billinging_wrapr" data-ultn-bilcycle="{$dropdownprice['cycle']}">
  118. <div class="pricing_wrapr">
  119. {$dropdownprice['billingcycle']} @ {if $dropdownprice['save']}<div class="save_text"><span class="badge badge-primary">{$dropdownprice['save']}</span></div>{/if}
  120. </div>
  121. </li>
  122. {/foreach}
  123. {/if}
  124. </ul>
  125. </div>
  126. {/if}
  127. {if $ditem["dropdown"][$ditem['Plan']]}
  128. <div class="product_pricing">
  129. {if $block.SbSwitcher}
  130. <div class="pricing_main_default{if $defaultbilling eq "{$dropdownprice['cycle']}"} w-hidden{/if}">
  131. {if $dropdownprice['hasconfigoptions'] || $dropdownprice['save']}
  132. <div class="regular_pricing">
  133. {if $dropdownprice['hasconfigoptions']}
  134. <span class="small text-muted">{$WLANG.startingat}</span>
  135. {/if}
  136. {if $dropdownprice['save']}
  137. {if $dropdownprice['dollar'] && !$block.DisableBrekdown}
  138. <span class="savecut text-muted">{$dropdownprice['prefix']}{$dropdownprice['dollar']}.{$dropdownprice['cents']}{$dropdownprice['suffix']}</span>
  139. {/if}
  140. {if $block.SbSwitcher}<span class="badge badge-primary">{$dropdownprice['save']}</span>{/if}
  141. {/if}
  142. </div>
  143. {/if}
  144. <div class="price">
  145. <span class="cost">{$dropdownprice['prefix']}{if $block.DisableBrekdown}{$dropdownprice['price']}{else}{$dropdownprice['monthlydollar']}.{$dropdownprice['monthlycents']}{/if}</span>
  146. {if $dropdownprice['suffix']}<span class="suffix">{$dropdownprice['suffix']}</span>{/if}
  147. </div>
  148. <div class="cycle small text-muted">{if $block.DisableBrekdown}{$dropdownprice.cycle|capitalize}{else}{if $dropdownprice['monthlycycle']}{$dropdownprice['monthlycycle']}{else}{$dropdownprice['cycleTerm']}{/if}{/if}</div>
  149. {if $dropdownprice['setup'] > 0}
  150. <div class="small text-muted">
  151. <span><i class="fal fa-plus"></i></span>
  152. <span>{$dropdownprice['prefix']}</span>
  153. {$dropdownprice['setup']}
  154. <span>{$dropdownprice['suffix']}</span>
  155. {$WLANG.ordersetupfee}
  156. </div>
  157. {/if}
  158. </div>
  159. {/if}
  160. {foreach $ditem["dropdown"][$ditem['Plan']] as $dropdownprice}
  161. <div class="pricing_main {$dropdownprice['cycle']}{if $defaultbilling neq "{$dropdownprice['cycle']}"} w-hidden{/if}" data-ultn-bilcycle="{$dropdownprice['cycle']}">
  162. {if $dropdownprice['hasconfigoptions'] || $dropdownprice['save']}
  163. <div class="regular_pricing">
  164. {if $dropdownprice['hasconfigoptions']}
  165. <span class="small text-muted">{$WLANG.startingat}</span>
  166. {/if}
  167. {if $dropdownprice['save']}
  168. {if $dropdownprice['dollar'] && !$block.DisableBrekdown}
  169. <span class="savecut text-muted">{$dropdownprice['prefix']}{$dropdownprice['dollar']}.{$dropdownprice['cents']}{$dropdownprice['suffix']}</span>
  170. {/if}
  171. {if $block.SbSwitcher}<span class="badge badge-primary">{$dropdownprice['save']}</span>{/if}
  172. {/if}
  173. </div>
  174. {/if}
  175. <div class="price">
  176. <span class="cost">{$dropdownprice['prefix']}{if $block.DisableBrekdown}{$dropdownprice['price']}{else}{$dropdownprice['monthlydollar']}.{$dropdownprice['monthlycents']}{/if}</span>
  177. {if $dropdownprice['suffix']}<span class="suffix">{$dropdownprice['suffix']}</span>{/if}
  178. </div>
  179. <div class="cycle small text-muted">{if $block.DisableBrekdown}{$dropdownprice.cycle|capitalize}{else}{if $dropdownprice['monthlycycle']}{$dropdownprice['monthlycycle']}{else}{$dropdownprice['cycleTerm']}{/if}{/if}</div>
  180. {if $dropdownprice['setup'] > 0}
  181. <div class="small text-muted">
  182. <span><i class="fal fa-plus"></i></span>
  183. <span>{$dropdownprice['prefix']}</span>
  184. {$dropdownprice['setup']}
  185. <span>{$dropdownprice['suffix']}</span>
  186. {$WLANG.ordersetupfee}
  187. </div>
  188. {/if}
  189. </div>
  190. {/foreach}
  191. </div>
  192. {/if}
  193. </div>
  194. {else}
  195. <div class="product_pricing_single">
  196. {if $block.DisableBrekdown}
  197. {if isset($ditem.dropdown) && is_array($ditem.dropdown)}
  198. {foreach from=$ditem.dropdown item=$dropdown key=$dropdownKey}
  199. {assign var="firstCycle" value=$dropdown|@end}
  200. {if $firstCycle.hasconfigoptions}
  201. <div class="regular_pricing">
  202. <span class="small text-muted">{$WLANG.startingat}</span>
  203. </div>
  204. {/if}
  205. <div class="price">
  206. <span class="cost">
  207. {$firstCycle.prefix}{$firstCycle.price}
  208. </span>
  209. <span class="suffix">
  210. {$firstCycle.suffix}
  211. </spn>
  212. </div>
  213. <div class="cycle small text-muted">
  214. {$firstCycle.cycle|capitalize}
  215. </div>
  216. {/foreach}
  217. {/if}
  218. {else}
  219. {if $ditem["price"] == 'FREE'}
  220. <span class="badge badge-secondary price-free">{$WLANG.orderfree}</span>
  221. {else}
  222. {if $ditem["productdetails"]['hasconfigoptions']}
  223. <div class="regular_pricing">
  224. <span class="small text-muted">{$WLANG.startingat}</span>
  225. </div>
  226. {/if}
  227. <div class="price">
  228. {assign var="ccurrency" value=$ditem["productdetails"]["price"]["price"]->getCurrency()}
  229. <span class="cost">{$ditem["productdetails"]["price"]['simple']}</span>
  230. {if $ccurrency["suffix"]}<span class="suffix">{$ccurrency["suffix"]}</span>{/if}
  231. </div>
  232. {if $ditem["billingcycle"] != ""}
  233. <div class="cycle small text-muted">{$ditem["billingcycle"]}</div>
  234. {elseif $ditem["productdetails"]["price"]["cycle"] == "onetime"}
  235. <div class="cycle small text-muted">{$WLANG.orderpaymenttermonetime}</div>
  236. {/if}
  237. {if $ditem["productdetails"]["price"]["setupFee"]}
  238. <div class="setup-fee small text-muted"><span><i class="fal fa-plus"></i></span> {$ditem["productdetails"]["price"]["setupFee"]} {$WLANG.ordersetupfee}</div>
  239. {/if}
  240. {/if}
  241. {/if}
  242. </div>
  243. {/if}
  244. {if $block.descp == "below" || $block.descp == "1"}
  245. {if count($ditem['productdetails']['description']['features']) > 0}
  246. {if $ditem['productdetails']['description']['featuresdesc']}
  247. <div class="desc mt-2">{$ditem['productdetails']['description']['featuresdesc']}</div>
  248. {/if}
  249. {/if}
  250. {/if}
  251. {if !$block.orderLinkinLast}
  252. <div class="product-actions w-100">
  253. <a href="{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}javascript:void(0){else}{$WEB_ROOT}/{if $ditem["productdetails"]['isMarketConnect']}cart/order/{else}cart.php{/if}?a=add&pid={$ditem['Plan']}{if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}&billingcycle={$defaultbilling}{/if}{/if}" class="btn btn-primary{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']} disabled{/if}">
  254. {if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}{$WLANG.outofstock}{elseif $block.btntext}{$block.btntext}{else}{$WLANG.addtocart}{/if}
  255. </a>
  256. </div>
  257. {/if}
  258. {if $block.descp == "2"}
  259. {if count($ditem['productdetails']['description']['features']) > 0}
  260. {if $ditem['productdetails']['description']['featuresdesc']}
  261. <div class="desc_small mt-3 mb-1">{$ditem['productdetails']['description']['featuresdesc']}</div>
  262. {/if}
  263. {/if}
  264. {/if}
  265. {if $block.featurescollapsed}
  266. {if $ditem['productdetails']['description']}
  267. {if count($ditem['productdetails']['description']['features']) > 0}
  268. <ul class="plan-features">
  269. <!-- ThurData Featurelist -->
  270. <table border="0" style="display: inline-table; table-layout:fixed; width:100%; visibility:visible;" cellpadding="0" cellspacing="5">
  271. {foreach $ditem['productdetails']['description']['features'] as $feature => $value}
  272. <tr>
  273. <td><b>{$feature}</b></td>
  274. <td>
  275. {if $value == "Ja"}
  276. <i class="far fa-check-square" class="td-product-feature-icon"></i>
  277. {elseif $value == "Nein"}
  278. <i class="far fa-square" class="td-product-feature-icon"></i>
  279. {elseif $value == "Optional"}
  280. <i class="fas fa-plus" class="td-product-feature-icon"></i>
  281. {else}
  282. {$value}
  283. {/if}
  284. </td>
  285. </tr>
  286. {/foreach}
  287. </table>
  288. <!-- End ThurData Featurelist -->
  289. {* original featurelist
  290. {foreach $ditem['productdetails']['description']['features'] as $feature => $value}
  291. <li><b>{$value}</b> {$feature}</li>
  292. {/foreach}
  293. *}
  294. </ul>
  295. {else}
  296. <div class="plan-features">
  297. {$ditem['productdetails']['description']['original']}
  298. </div>
  299. {/if}
  300. {/if}
  301. {else}
  302. <p class="PriceList-toggle collapsed" data-toggle="collapse" data-target="#PlanLists{$kk + 1}">
  303. <span>{$WLANG.clientareaviewdetails}</span>
  304. </p>
  305. {if $ditem['productdetails']['description']}
  306. {if count($ditem['productdetails']['description']['features']) > 0}
  307. <ul class="plan-features collapse" id="PlanLists{$kk + 1}">
  308. <!-- ThurData Featurelist -->
  309. <table border="0" style="display: inline-table; table-layout:fixed; width:100%; visibility:visible;" cellpadding="0" cellspacing="5">
  310. {foreach $ditem['productdetails']['description']['features'] as $feature => $value}
  311. <tr>
  312. <td><b>{$feature}</b></td>
  313. <td>
  314. {if $value == "Ja"}
  315. <i class="far fa-check-square" class="td-product-feature-icon"></i>
  316. {elseif $value == "Nein"}
  317. <i class="far fa-square" class="td-product-feature-icon"></i>
  318. {elseif $value == "Optional"}
  319. <i class="fas fa-plus" class="td-product-feature-icon"></i>
  320. {else}
  321. {$value}
  322. {/if}
  323. </td>
  324. </tr>
  325. {/foreach}
  326. </table>
  327. <!-- End ThurData Featurelist -->
  328. {* original featurelist
  329. {foreach $ditem['productdetails']['description']['features'] as $feature => $value}
  330. <li><b>{$value}</b> {$feature}</li>
  331. {/foreach}
  332. *}
  333. </ul>
  334. {else}
  335. <div class="plan-features collapse" id="PlanLists{$kk + 1}">
  336. {$ditem['productdetails']['description']['original']}
  337. </div>
  338. {/if}
  339. {/if}
  340. {/if}
  341. {if $block.orderLinkinLast}
  342. <div class="product-actions mt-auto">
  343. <a href="{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}javascript:void(0){else}{$WEB_ROOT}/{if $ditem["productdetails"]['isMarketConnect']}cart/order/{else}cart.php{/if}?a=add&pid={$ditem['Plan']}{if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}&billingcycle={$defaultbilling}{/if}{/if}" class="btn btn-primary my-3 w-auto{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']} disabled{/if}">
  344. {if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}{$WLANG.outofstock}{elseif $block.btntext}{$block.btntext}{else}{$WLANG.addtocart}{/if}
  345. </a>
  346. </div>
  347. {/if}
  348. </div>
  349. </div>
  350. {/foreach}
  351. {/if}
  352. </div>
  353. </div>
  354. </div>
  355. {if !$block.DisplayInGrid}
  356. {if !$block.slidertype}
  357. <div class="swiper-pagination pricing-tables_{$blockkey}"></div>
  358. {else}
  359. <div class="swiper-button-prev pricing-tables_{$blockkey}_prev">
  360. <span class="btn_icon_large"><i class="far fa-long-arrow-left"></i></span>
  361. </div>
  362. <div class="swiper-button-next pricing-tables_{$blockkey}_next">
  363. <span class="btn_icon_large"><i class="far fa-long-arrow-right"></i></span>
  364. </div>
  365. {/if}
  366. {/if}
  367. </div>
  368. </div>
  369. </div>
  370. <script>
  371. jQuery(document).ready(function () {
  372. {if !$block.DisplayInGrid}
  373. var swiper = new Swiper('#pricing-tables-{$blockkey}', {
  374. slidesPerView: 1,
  375. preventClicks: true,
  376. slideClass: 'products-slide',
  377. {if !$block.slidertype}
  378. pagination: {
  379. el: '.swiper-pagination.pricing-tables_{$blockkey}',
  380. clickable: true,
  381. },
  382. {else}
  383. navigation: {
  384. nextEl: '.pricing-tables_{$blockkey}_next',
  385. prevEl: '.pricing-tables_{$blockkey}_prev',
  386. },
  387. {/if}
  388. breakpoints: {
  389. 0: {
  390. slidesPerView: 1
  391. },
  392. 768: {
  393. slidesPerView: 2
  394. },
  395. 992: {
  396. slidesPerView:{if $block.itemcounts == "2"} 2{else} 3{/if}
  397. },
  398. 1200: {
  399. slidesPerView:{if $block.itemcounts == ""} 3{else} {$block.itemcounts}{/if}
  400. },
  401. }
  402. });
  403. {/if}
  404. {if $block.SbSwitcher && !$block.DisableSwitcher}
  405. jQuery("#sec-{$blockkey} .product-billing-switcher-{$blockkey} .dropdown-menu li").click(function(){
  406. var selText = jQuery(this).html();
  407. jQuery(this).parents('.btn-group').find('.dropdown-toggle').html(selText);
  408. });
  409. jQuery('#sec-{$blockkey} .product-billing-switcher-{$blockkey} .cycle-change').on('click', function() {
  410. var newCycle = jQuery(this).data('cycle');
  411. var disBtnBilCycle = jQuery(this).data('cycle');
  412. jQuery('.pricing-{$blockkey} .product_pricing .pricing_main').hide();
  413. jQuery('.pricing-{$blockkey} .' + newCycle).show();
  414. jQuery(this).addClass('active').siblings().removeClass('active');
  415. jQuery('.pricing-{$blockkey} .cros-pricing-table').each(function(index) {
  416. var disBtnUrlFetch = jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table').find('.btn-primary').attr('href');
  417. var disBtnUrlRemv = disBtnUrlFetch.indexOf('&billingcycle');
  418. var disBtnUrlFinal = disBtnUrlFetch.substring(0, disBtnUrlRemv);
  419. var disBtnUrlFinal = disBtnUrlFinal+'&billingcycle='+disBtnBilCycle;
  420. jQuery(this).find('.btn-primary').attr('href',disBtnUrlFinal);
  421. if (jQuery(this).find('.' + newCycle).length <= 0) {
  422. jQuery(this).find('.pricing_main_default').show();
  423. jQuery(this).find('.btn-primary').addClass('disabled');
  424. } else {
  425. jQuery(this).find('.pricing_main_default').hide();
  426. jQuery(this).find('.btn-primary').removeClass('disabled');
  427. }
  428. });
  429. });
  430. jQuery('#sec-{$blockkey} .product-billing-switcher-{$blockkey} .cycle-change').first().trigger('click');
  431. {else}
  432. {if !$block.DisableSwitcher}
  433. jQuery(".pricing-{$blockkey} .dropdown-menu li").click(function(){
  434. var selText = jQuery(this).html();
  435. jQuery(this).parents('.btn-group').find('.dropdown-toggle').html(selText+' <span class="fal fa-angle-down"></span>');
  436. });
  437. jQuery('.pricing-{$blockkey} .billinging_wrapr').click(function(){
  438. var disBtnBilCycle = jQuery(this).attr('data-ultn-bilcycle');
  439. var disBtnUrlFetch = jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table').find('.btn-primary').attr('href');
  440. var disBtnUrlRemv = disBtnUrlFetch.indexOf('&billingcycle');
  441. var disBtnUrlFinal = disBtnUrlFetch.substring(0, disBtnUrlRemv);
  442. var disBtnUrlFinal = disBtnUrlFinal+'&billingcycle='+disBtnBilCycle;
  443. jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table').find('.btn-primary').attr('href',disBtnUrlFinal);
  444. var crosPricingTable = jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table');
  445. crosPricingTable.find('.pricing_main').each(function() {
  446. var currentBilCycle = jQuery(this).attr('data-ultn-bilcycle');
  447. if (currentBilCycle === disBtnBilCycle) {
  448. jQuery(this).removeClass('w-hidden');
  449. } else {
  450. jQuery(this).addClass('w-hidden');
  451. }
  452. });
  453. });
  454. {/if}
  455. {/if}
  456. });
  457. </script>
  458. {elseif $block.ptstyle == 'pts_1'}
  459. <div id="sec-{$blockkey}" class="sec products{if $block.bgcolor != ""} {$block.bgcolor}{/if}{if $block.borders != ""} {$block.borders}{/if}{if $block.toppadding == "1"} inner-t-60{elseif $block.toppadding == "2"} inner-t-30{elseif $block.toppadding == "3"} no-padding-top{/if}{if $block.bottompadding == "1"} inner-b-60{elseif $block.bottompadding == "2"} inner-b-30{elseif $block.bottompadding == "3"} no-padding-bottom{/if}">
  460. <div class="container">
  461. {if $block.caption || $block.sectitle || $block.subtitle}
  462. <div class="sec-description">
  463. {if $block.caption}
  464. <div class="sec-caption">
  465. <span class="rounded">{$block.caption}</span>
  466. </div>
  467. {/if}
  468. {if $block.sectitle}
  469. <h2 class="sec-title">{$block.sectitle}</h2>
  470. {/if}
  471. {if $block.subtitle}
  472. <div class="sec-subtitle">{$block.subtitle}</div>
  473. {/if}
  474. </div>
  475. {/if}
  476. <div class="cros-pricing-container">
  477. {if $block.SbSwitcher && !$block.DisableSwitcher}
  478. {if $block.switcherCycles !== null && $block.switcherCycles|@count > 1}
  479. {assign var="cycles" value=$block.switcherCycles}
  480. {else}
  481. {assign var="cycles" value=$allCycles}
  482. {/if}
  483. {if !$block.bsco}
  484. {assign var="cycles" value=$cycles|@array_reverse}
  485. {/if}
  486. <div class="product-billing-switcher-{$blockkey}">
  487. <div class="btn-group white border d-none d-sm-inline-block" role="group">
  488. {foreach $cycles as $cycle}
  489. <button type="button" class="btn cycle-change" data-cycle="{$cycle}">
  490. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycle}}</span>
  491. </button>
  492. {/foreach}
  493. </div>
  494. <div class="btn-group white border d-inline-block d-sm-none">
  495. <span class="px-3 py-1 small text-muted border-right">{$WLANG.orderbillingcycle}</span>
  496. <button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
  497. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycles[0]}}</span>
  498. </button>
  499. <ul class="dropdown-menu">
  500. {foreach $cycles as $cycle}
  501. <li class="dropdown-item cycle-change" data-cycle="{$cycle}">
  502. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycle}}</span>
  503. </li>
  504. {/foreach}
  505. </ul>
  506. </div>
  507. </div>
  508. {/if}
  509. <div class="pricing_style_2 pricing-{$blockkey}" id="pricing-tables-{$blockkey}">
  510. {if count($block.table) > 0}
  511. {foreach from=$block.table item=$ditem key=$kk}
  512. <div class="cros-pricing-table{if $block.SbSwitcher} overflow-hidden{/if}{if $block.ststyle} {$block.ststyle}{/if}{if $block.noshadow} no-shadow{/if}{if $block.tablebg == "light"} light{elseif $block.tablebg == "primary"} bg-primary{elseif $block.tablebg == "dark"} dark{else} white{/if} pt_st_5{if $ditem['Featured']} active{/if}">
  513. <div class="row no-gutters">
  514. <div class="col-lg-8 col-xl-9">
  515. <div class="content align-items-lg-center">
  516. {if $ditem['Graphic']}
  517. {if !$ditem['Graphic']|strstr:"fa-"}
  518. <div class="graphics fix-width">
  519. <img src="{$WEB_ROOT}/{$ditem['Graphic']}" alt="{$ditem.title}" class="img-fluid">
  520. </div>
  521. {else}
  522. <div class="graphics">
  523. <span class="icon">
  524. <i class="{$ditem['Graphic']}"></i>
  525. </span>
  526. </div>
  527. {/if}
  528. {/if}
  529. <div class="plan-details">
  530. <div class="h4 plan-name">
  531. {$ditem['productdetails']['name']}
  532. {if $ditem['Featured']}
  533. {if $block.ststyle}
  534. <span class="st-sm ml-2 fw-400">
  535. {if $block.featured}{$block.featured}{else}{$WLANG.featuredProduct}{/if}
  536. </span>
  537. {/if}
  538. {/if}
  539. </div>
  540. {if count($ditem['productdetails']['description']['features']) > 0}
  541. {if strpos($ditem['productdetails']['description']['featuresdesc'], '<p>') !== false}
  542. {$ditem['productdetails']['description']['featuresdesc']}
  543. {else}
  544. <p>{$ditem['productdetails']['description']['featuresdesc']}</p>
  545. {/if}
  546. {/if}
  547. {if $ditem['productdetails']['description']}
  548. {if count($ditem['productdetails']['description']['features']) > 0}
  549. <ul class="plan-features">
  550. <!-- ThurData Featurelist -->
  551. <table border="0" style="display: inline-table; table-layout:fixed; width:100%; visibility:visible;" cellpadding="0" cellspacing="5">
  552. {foreach $ditem['productdetails']['description']['features'] as $feature => $value}
  553. <tr>
  554. <td><b>{$feature}</b></td>
  555. <td>
  556. {if $value == "Ja"}
  557. <i class="far fa-check-square" class="td-product-feature-icon"></i>
  558. {elseif $value == "Nein"}
  559. <i class="far fa-square" class="td-product-feature-icon"></i>
  560. {elseif $value == "Optional"}
  561. <i class="fas fa-plus" class="td-product-feature-icon"></i>
  562. {else}
  563. {$value}
  564. {/if}
  565. </td>
  566. </tr>
  567. {/foreach}
  568. </table>
  569. <!-- End ThurData Featurelist -->
  570. {* original featurelist
  571. {foreach $ditem['productdetails']['description']['features'] as $feature => $value}
  572. <li><b>{$value}</b> {$feature}</li>
  573. {/foreach}
  574. *}
  575. </ul>
  576. {else}
  577. {$ditem['productdetails']['description']['original']}
  578. {/if}
  579. {/if}
  580. </div>
  581. </div>
  582. </div>
  583. <div class="col-lg-4 col-xl-3">
  584. <div class="content{if $block.SbSwitcher && $ditem['Featured'] && !$block.ststyle} mr-0 mr-lg-4{/if}">
  585. {if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}
  586. {if $block.bsco}
  587. {foreach $ditem["dropdown"] as $dropdownkey=>$dropdownprice}
  588. {$ditem["dropdown"][$dropdownkey] = $dropdownprice|@array_reverse}
  589. {/foreach}
  590. {/if}
  591. {assign var="dropdownprice" value=$ditem["dropdown"][$ditem['Plan']][0] nocache}
  592. {assign var="defaultbilling" value=$dropdownprice['cycle'] nocache}
  593. {assign var="taxtype" value=$dropdownprice['taxtype'] nocache}
  594. {assign var="hasconfigoptions" value=$dropdownprice['hasconfigoptions'] nocache}
  595. <div class="billing-cycle-pricing float{if $block.descp == "below"} desc_belwo{/if}">
  596. {if !$block.SbSwitcher}
  597. <div class="btn-group mb-2 mb-lg-0">
  598. <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
  599. <div class="pricing_wrapr">
  600. {$dropdownprice['billingcycle']} @ {if $dropdownprice['save']}<div class="save_text"><span class="badge badge-primary">{$dropdownprice['save']}</span></div>{/if}
  601. </div>
  602. <span class="fal fa-angle-down"></span>
  603. </a>
  604. <ul class="dropdown-menu">
  605. {if $ditem["dropdown"][$ditem['Plan']]}
  606. {foreach $ditem["dropdown"][$ditem['Plan']] as $dropdownprice}
  607. <li class="billinging_wrapr" data-ultn-bilcycle="{$dropdownprice['cycle']}">
  608. <div class="pricing_wrapr">
  609. {$dropdownprice['billingcycle']} @ {if $dropdownprice['save']}<div class="save_text"><span class="badge badge-primary">{$dropdownprice['save']}</span></div>{/if}
  610. </div>
  611. </li>
  612. {/foreach}
  613. {/if}
  614. </ul>
  615. </div>
  616. {/if}
  617. {if $ditem["dropdown"][$ditem['Plan']]}
  618. <div class="product_pricing">
  619. {if $block.SbSwitcher}
  620. <div class="pricing_main_default{if $defaultbilling eq "{$dropdownprice['cycle']}"} w-hidden{/if}">
  621. <div class="price">
  622. {if $dropdownprice['hasconfigoptions'] || $dropdownprice['save']}
  623. <span class="regular_pricing">
  624. {if $dropdownprice['hasconfigoptions']}
  625. <span class="small text-muted">{$WLANG.startingat}</span>
  626. {/if}
  627. {if $dropdownprice['save']}
  628. {if $dropdownprice['dollar'] && !$block.DisableBrekdown}
  629. <span class="savecut text-muted">{$dropdownprice['prefix']}{$dropdownprice['dollar']}.{$dropdownprice['cents']}{$dropdownprice['suffix']}</span>
  630. {/if}
  631. {if $block.SbSwitcher}<span class="badge badge-primary">{$dropdownprice['save']}</span>{/if}
  632. {/if}
  633. </span>
  634. {/if}
  635. <span class="cost">{$dropdownprice['prefix']}{if $block.DisableBrekdown}{$dropdownprice['price']}{else}{$dropdownprice['monthlydollar']}.{$dropdownprice['monthlycents']}{/if}</span>
  636. {if $dropdownprice['suffix']}<span class="suffix">{$dropdownprice['suffix']}</span>{/if}
  637. </div>
  638. <span class="cycle small text-muted">{if $block.DisableBrekdown}{$dropdownprice.cycle|capitalize}{else}{if $dropdownprice['monthlycycle']}{$dropdownprice['monthlycycle']}{else}{$dropdownprice['cycleTerm']}{/if}{/if}</span>
  639. {if $dropdownprice['setup'] > 0}
  640. <div class="small text-muted">
  641. <span><i class="fal fa-plus"></i></span>
  642. <span>{$dropdownprice['prefix']}</span>
  643. {$dropdownprice['setup']}
  644. <span>{$dropdownprice['suffix']}</span>
  645. {$WLANG.ordersetupfee}
  646. </div>
  647. {/if}
  648. </div>
  649. {/if}
  650. {foreach $ditem["dropdown"][$ditem['Plan']] as $dropdownprice}
  651. <div class="pricing_main {$dropdownprice['cycle']}{if $defaultbilling neq "{$dropdownprice['cycle']}"} w-hidden{/if}" data-ultn-bilcycle="{$dropdownprice['cycle']}">
  652. <div class="price">
  653. {if $dropdownprice['hasconfigoptions'] || $dropdownprice['save']}
  654. <span class="regular_pricing">
  655. {if $dropdownprice['hasconfigoptions']}
  656. <span class="small text-muted">{$WLANG.startingat}</span>
  657. {/if}
  658. {if $dropdownprice['save']}
  659. {if $dropdownprice['dollar'] && !$block.DisableBrekdown}
  660. <span class="savecut text-muted">{$dropdownprice['prefix']}{$dropdownprice['dollar']}.{$dropdownprice['cents']}{$dropdownprice['suffix']}</span>
  661. {/if}
  662. {if $block.SbSwitcher}<span class="badge badge-primary">{$dropdownprice['save']}</span>{/if}
  663. {/if}
  664. </span>
  665. {/if}
  666. <span class="cost">{$dropdownprice['prefix']}{if $block.DisableBrekdown}{$dropdownprice['price']}{else}{$dropdownprice['monthlydollar']}.{$dropdownprice['monthlycents']}{/if}</span>
  667. {if $dropdownprice['suffix']}<span class="suffix">{$dropdownprice['suffix']}</span>{/if}
  668. </div>
  669. <span class="cycle small text-muted">{if $block.DisableBrekdown}{$dropdownprice.cycle|capitalize}{else}{if $dropdownprice['monthlycycle']}{$dropdownprice['monthlycycle']}{else}{$dropdownprice['cycleTerm']}{/if}{/if}</span>
  670. {if $dropdownprice['setup'] > 0}
  671. <div class="small text-muted">
  672. <span><i class="fal fa-plus"></i></span>
  673. <span>{$dropdownprice['prefix']}</span>
  674. {$dropdownprice['setup']}
  675. <span>{$dropdownprice['suffix']}</span>
  676. {$WLANG.ordersetupfee}
  677. </div>
  678. {/if}
  679. </div>
  680. {/foreach}
  681. </div>
  682. {/if}
  683. </div>
  684. {else}
  685. <div class="product_pricing_single">
  686. {if $block.DisableBrekdown}
  687. {if isset($ditem.dropdown) && is_array($ditem.dropdown)}
  688. {foreach from=$ditem.dropdown item=$dropdown key=$dropdownKey}
  689. {assign var="firstCycle" value=$dropdown|@end}
  690. <div class="price">
  691. {if $firstCycle.hasconfigoptions}
  692. <span class="regular_pricing">
  693. <span class="small text-muted">{$WLANG.startingat}</span>
  694. </span>
  695. {/if}
  696. <span class="cost">
  697. {$firstCycle.prefix}{$firstCycle.price}
  698. </span>
  699. <span class="suffix">
  700. {$firstCycle.suffix}
  701. </spn>
  702. </div>
  703. <div class="cycle small text-muted">
  704. {$firstCycle.cycle|capitalize}
  705. </div>
  706. {/foreach}
  707. {/if}
  708. {else}
  709. {if $ditem["price"] == 'FREE'}
  710. <div class="d-flex align-items-center justify-content-end">
  711. <span class="badge badge-secondary price-free">{$WLANG.orderfree}</span>
  712. </div>
  713. {else}
  714. <div class="price">
  715. {if $ditem["productdetails"]['hasconfigoptions']}
  716. <span class="regular_pricing">
  717. <span class="small text-muted">{$WLANG.startingat}</span>
  718. </span>
  719. {/if}
  720. {assign var="ccurrency" value=$ditem["productdetails"]["price"]["price"]->getCurrency()}
  721. <span class="cost">{$ditem["productdetails"]["price"]['simple']}</span>
  722. {if $ccurrency["suffix"]}<span class="suffix">{$ccurrency["suffix"]}</span>{/if}
  723. </div>
  724. {if $ditem["billingcycle"] != ""}
  725. <div class="cycle small text-muted">{$ditem["billingcycle"]}</div>
  726. {elseif $ditem["productdetails"]["price"]["cycle"] == "onetime"}
  727. <div class="cycle small text-muted">{$WLANG.orderpaymenttermonetime}</div>
  728. {/if}
  729. {if $ditem["productdetails"]["price"]["setupFee"]}
  730. <div class="setup-fee small text-muted"><span><i class="fal fa-plus"></i></span> {$ditem["productdetails"]["price"]["setupFee"]} {$WLANG.ordersetupfee}</div>
  731. {/if}
  732. {/if}
  733. {/if}
  734. </div>
  735. {/if}
  736. <div class="plan-action mt-auto">
  737. <a href="{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}javascript:void(0){else}{$WEB_ROOT}/{if $ditem["productdetails"]['isMarketConnect']}cart/order/{else}cart.php{/if}?a=add&pid={$ditem['Plan']}{if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}&billingcycle={$defaultbilling}{/if}{/if}" class="btn btn-sm btn-primary mt-2{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']} disabled{/if}">
  738. {if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}{$WLANG.outofstock}{elseif $block.btntext}{$block.btntext}{else}{$WLANG.addtocart}{/if}
  739. </a>
  740. </div>
  741. </div>
  742. </div>
  743. </div>
  744. {if $ditem['Featured']}
  745. {if $block.ststyle == ""}
  746. <div class="sticker-wrapper{if !$block.SbSwitcher} se{/if}">
  747. <div class="sticker">
  748. {if $block.featured}{$block.featured}{else}{$WLANG.featuredProduct}{/if}
  749. </div>
  750. </div>
  751. {/if}
  752. {/if}
  753. </div>
  754. {/foreach}
  755. {/if}
  756. </div>
  757. </div>
  758. </div>
  759. </div>
  760. <script>
  761. jQuery(document).ready(function () {
  762. {if $block.SbSwitcher && !$block.DisableSwitcher}
  763. jQuery("#sec-{$blockkey} .product-billing-switcher-{$blockkey} .dropdown-menu li").click(function(){
  764. var selText = jQuery(this).html();
  765. jQuery(this).parents('.btn-group').find('.dropdown-toggle').html(selText);
  766. });
  767. jQuery('#sec-{$blockkey} .product-billing-switcher-{$blockkey} .cycle-change').on('click', function() {
  768. var newCycle = jQuery(this).data('cycle');
  769. var disBtnBilCycle = jQuery(this).data('cycle');
  770. jQuery('.pricing-{$blockkey} .product_pricing .pricing_main').hide();
  771. jQuery('.pricing-{$blockkey} .' + newCycle).show();
  772. jQuery(this).addClass('active').siblings().removeClass('active');
  773. jQuery('.pricing-{$blockkey} .cros-pricing-table').each(function(index) {
  774. var disBtnUrlFetch = jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table').find('.btn-primary').attr('href');
  775. var disBtnUrlRemv = disBtnUrlFetch.indexOf('&billingcycle');
  776. var disBtnUrlFinal = disBtnUrlFetch.substring(0, disBtnUrlRemv);
  777. var disBtnUrlFinal = disBtnUrlFinal+'&billingcycle='+disBtnBilCycle;
  778. jQuery(this).find('.btn-primary').attr('href',disBtnUrlFinal);
  779. if (jQuery(this).find('.' + newCycle).length <= 0) {
  780. jQuery(this).find('.pricing_main_default').show();
  781. jQuery(this).find('.btn-primary').addClass('disabled');
  782. } else {
  783. jQuery(this).find('.pricing_main_default').hide();
  784. jQuery(this).find('.btn-primary').removeClass('disabled');
  785. }
  786. });
  787. });
  788. jQuery('#sec-{$blockkey} .product-billing-switcher-{$blockkey} .cycle-change').first().trigger('click');
  789. {else}
  790. {if !$block.DisableSwitcher}
  791. jQuery(".pricing-{$blockkey} .dropdown-menu li").click(function(){
  792. var selText = jQuery(this).html();
  793. jQuery(this).parents('.btn-group').find('.dropdown-toggle').html(selText+' <span class="fal fa-angle-down"></span>');
  794. });
  795. jQuery('.pricing-{$blockkey} .billinging_wrapr').click(function(){
  796. var disBtnBilCycle = jQuery(this).attr('data-ultn-bilcycle');
  797. var disBtnUrlFetch = jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table').find('.btn-primary').attr('href');
  798. var disBtnUrlRemv = disBtnUrlFetch.indexOf('&billingcycle');
  799. var disBtnUrlFinal = disBtnUrlFetch.substring(0, disBtnUrlRemv);
  800. var disBtnUrlFinal = disBtnUrlFinal+'&billingcycle='+disBtnBilCycle;
  801. jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table').find('.btn-primary').attr('href',disBtnUrlFinal);
  802. var crosPricingTable = jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table');
  803. crosPricingTable.find('.pricing_main').each(function() {
  804. var currentBilCycle = jQuery(this).attr('data-ultn-bilcycle');
  805. if (currentBilCycle === disBtnBilCycle) {
  806. jQuery(this).removeClass('w-hidden');
  807. } else {
  808. jQuery(this).addClass('w-hidden');
  809. }
  810. });
  811. });
  812. {/if}
  813. {/if}
  814. });
  815. </script>
  816. {elseif $block.ptstyle == 'pts_2'}
  817. <div id="sec-{$blockkey}" class="sec products{if $block.bgcolor != ""} {$block.bgcolor}{/if}{if $block.borders != ""} {$block.borders}{/if}{if $block.toppadding == "1"} inner-t-60{elseif $block.toppadding == "2"} inner-t-30{elseif $block.toppadding == "3"} no-padding-top{/if}{if $block.bottompadding == "1"} inner-b-60{elseif $block.bottompadding == "2"} inner-b-30{elseif $block.bottompadding == "3"} no-padding-bottom{/if}">
  818. <div class="section__plan_comparison">
  819. <div class="container">
  820. {if $block.caption || $block.sectitle || $block.subtitle}
  821. <div class="sec-description">
  822. {if $block.caption}
  823. <div class="sec-caption">
  824. <span class="rounded">{$block.caption}</span>
  825. </div>
  826. {/if}
  827. {if $block.sectitle}
  828. <h2 class="sec-title">{$block.sectitle}</h2>
  829. {/if}
  830. {if $block.subtitle}
  831. <div class="sec-subtitle">{$block.subtitle}</div>
  832. {/if}
  833. </div>
  834. {/if}
  835. <div class="cros-pricing-container">
  836. {if $block.SbSwitcher && !$block.DisableSwitcher}
  837. {if $block.switcherCycles !== null && $block.switcherCycles|@count > 1}
  838. {assign var="cycles" value=$block.switcherCycles}
  839. {else}
  840. {assign var="cycles" value=$allCycles}
  841. {/if}
  842. {if !$block.bsco}
  843. {assign var="cycles" value=$cycles|@array_reverse}
  844. {/if}
  845. <div class="product-billing-switcher-{$blockkey}">
  846. <div class="btn-group white border d-none d-sm-inline-block" role="group">
  847. {foreach $cycles as $cycle}
  848. <button type="button" class="btn cycle-change" data-cycle="{$cycle}">
  849. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycle}}</span>
  850. </button>
  851. {/foreach}
  852. </div>
  853. <div class="btn-group white border d-inline-block d-sm-none">
  854. <span class="px-3 py-1 small text-muted border-right">{$WLANG.orderbillingcycle}</span>
  855. <button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
  856. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycles[0]}}</span>
  857. </button>
  858. <ul class="dropdown-menu">
  859. {foreach $cycles as $cycle}
  860. <li class="dropdown-item cycle-change" data-cycle="{$cycle}">
  861. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycle}}</span>
  862. </li>
  863. {/foreach}
  864. </ul>
  865. </div>
  866. </div>
  867. {/if}
  868. <div class="cros-pricing-table tables_{$blockkey} no-animation{if $block.noshadow} no-shadow{/if}{if $block.tablebg == "light"} light{elseif $block.tablebg == "primary"} bg-primary{elseif $block.tablebg == "dark"} dark{else} white{/if}">
  869. <div class="plans_slider__nav border-bottom">
  870. <div class="swiper-button-next tables_{$blockkey}_next">
  871. <span class="btn__text text-muted">{$WLANG.tablepagesnext}</span>
  872. <span class="btn__icon"><i class="far fa-long-arrow-right"></i></span>
  873. </div>
  874. <div class="swiper-button-prev tables_{$blockkey}_prev">
  875. <span class="btn__icon"><i class="far fa-long-arrow-left"></i></span>
  876. <span class="btn__text text-muted">{$WLANG.tablepagesprevious}</span>
  877. </div>
  878. </div>
  879. <div class="plan plan-{$blockkey}{if $block.centered} centered{/if}">
  880. <div class="plan__column plan__column--empty">
  881. <div class="plan__header d-flex align-items-center{if $block.table[0].Graphic|trim != ""} hg{/if}">
  882. <span class="h4">{$WLANG['store']['ox']['featuresHeadline']}</span>
  883. </div>
  884. <div class="plan__body plan__body--right">
  885. {foreach from=$block.table|@array_column:'featurelist'|@array_count_values item=count key=featurelist}
  886. {$featurelist}
  887. {/foreach}
  888. <div class="plan__cell plan__cell-last{if $block.SbSwitcher || $block.DisableSwitcher} sb{/if}"></div>
  889. </div>
  890. </div>
  891. <div class="swiper-container" id="plans-slider-{$blockkey}">
  892. <div class="swiper-wrapper">
  893. {if count($block.table) > 0}
  894. {foreach from=$block.table item=$ditem key=$kk}
  895. <div class="swiper-slide">
  896. <div class="plan__column">
  897. <div class="plan__header{if $ditem['Graphic']} hg{/if}">
  898. {if $ditem['Graphic']}
  899. <div class="graphics">
  900. {if !$ditem['Graphic']|strstr:"fa-"}
  901. <img src="{$WEB_ROOT}/{$ditem['Graphic']}" alt="{$ditem.title}" class="img-fluid">
  902. {else}
  903. <span class="icon">
  904. <i class="{$ditem['Graphic']}"></i>
  905. </span>
  906. {/if}
  907. </div>
  908. {/if}
  909. <span class="h4">{$ditem['productdetails']['name']}</span>
  910. </div>
  911. <div class="plan__body">
  912. {$ditem['featuresvalues']}
  913. <div class="plan__cell plan__cell-last{if $block.SbSwitcher || $block.DisableSwitcher} sb{/if}">
  914. {if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}
  915. {if $block.bsco}
  916. {foreach $ditem["dropdown"] as $dropdownkey=>$dropdownprice}
  917. {$ditem["dropdown"][$dropdownkey] = $dropdownprice|@array_reverse}
  918. {/foreach}
  919. {/if}
  920. {assign var="dropdownprice" value=$ditem["dropdown"][$ditem['Plan']][0] nocache}
  921. {assign var="defaultbilling" value=$dropdownprice['cycle'] nocache}
  922. {assign var="taxtype" value=$dropdownprice['taxtype'] nocache}
  923. {assign var="hasconfigoptions" value=$dropdownprice['hasconfigoptions'] nocache}
  924. <div class="billing-cycle-pricing float{if $block.descp == "below"} desc_belwo{/if}">
  925. {if !$block.SbSwitcher}
  926. <div class="btn-group mb-2 dropup">
  927. <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
  928. <div class="pricing_wrapr">
  929. {$dropdownprice['billingcycle']} @ {if $dropdownprice['save']}<div class="save_text"><span class="badge badge-primary">{$dropdownprice['save']}</span></div>{/if}
  930. </div>
  931. <span class="fal fa-angle-down"></span>
  932. </a>
  933. <ul class="dropdown-menu">
  934. {if $ditem["dropdown"][$ditem['Plan']]}
  935. {foreach $ditem["dropdown"][$ditem['Plan']] as $dropdownprice}
  936. <li class="billinging_wrapr" data-ultn-bilcycle="{$dropdownprice['cycle']}">
  937. <div class="pricing_wrapr">
  938. {$dropdownprice['billingcycle']} @ {if $dropdownprice['save']}<div class="save_text"><span class="badge badge-primary">{$dropdownprice['save']}</span></div>{/if}
  939. </div>
  940. </li>
  941. {/foreach}
  942. {/if}
  943. </ul>
  944. </div>
  945. {/if}
  946. {if $ditem["dropdown"][$ditem['Plan']]}
  947. <div class="product_pricing">
  948. {if $block.SbSwitcher}
  949. <div class="pricing_main_default{if $defaultbilling eq "{$dropdownprice['cycle']}"} w-hidden{/if}">
  950. {if $dropdownprice['hasconfigoptions'] || $dropdownprice['save']}
  951. <div class="regular_pricing">
  952. {if $dropdownprice['hasconfigoptions']}
  953. <span class="small text-muted">{$WLANG.startingat}</span>
  954. {/if}
  955. {if $dropdownprice['save']}
  956. {if $dropdownprice['dollar'] && !$block.DisableBrekdown}
  957. <span class="savecut text-muted">{$dropdownprice['prefix']}{$dropdownprice['dollar']}.{$dropdownprice['cents']}{$dropdownprice['suffix']}</span>
  958. {/if}
  959. {if $block.SbSwitcher}<span class="badge badge-primary">{$dropdownprice['save']}</span>{/if}
  960. {/if}
  961. </div>
  962. {/if}
  963. <div class="price">
  964. <span class="cost">{$dropdownprice['prefix']}{if $block.DisableBrekdown}{$dropdownprice['price']}{else}{$dropdownprice['monthlydollar']}.{$dropdownprice['monthlycents']}{/if}</span>
  965. {if $dropdownprice['suffix']}<span class="suffix">{$dropdownprice['suffix']}</span>{/if}
  966. </div>
  967. <div class="cycle small text-muted">{if $block.DisableBrekdown}{$dropdownprice.cycle|capitalize}{else}{if $dropdownprice['monthlycycle']}{$dropdownprice['monthlycycle']}{else}{$dropdownprice['cycleTerm']}{/if}{/if}</div>
  968. {if $dropdownprice['setup'] > 0}
  969. <div class="small text-muted">
  970. <span><i class="fal fa-plus"></i></span>
  971. <span>{$dropdownprice['prefix']}</span>
  972. {$dropdownprice['setup']}
  973. <span>{$dropdownprice['suffix']}</span>
  974. {$WLANG.ordersetupfee}
  975. </div>
  976. {/if}
  977. </div>
  978. {/if}
  979. {foreach $ditem["dropdown"][$ditem['Plan']] as $dropdownprice}
  980. <div class="pricing_main {$dropdownprice['cycle']}{if $defaultbilling neq "{$dropdownprice['cycle']}"} w-hidden{/if}" data-ultn-bilcycle="{$dropdownprice['cycle']}">
  981. {if $dropdownprice['hasconfigoptions'] || $dropdownprice['save']}
  982. <div class="regular_pricing">
  983. {if $dropdownprice['hasconfigoptions']}
  984. <span class="small text-muted">{$WLANG.startingat}</span>
  985. {/if}
  986. {if $dropdownprice['save']}
  987. {if $dropdownprice['dollar'] && !$block.DisableBrekdown}
  988. <span class="savecut text-muted">{$dropdownprice['prefix']}{$dropdownprice['dollar']}.{$dropdownprice['cents']}{$dropdownprice['suffix']}</span>
  989. {/if}
  990. {if $block.SbSwitcher}<span class="badge badge-primary">{$dropdownprice['save']}</span>{/if}
  991. {/if}
  992. </div>
  993. {/if}
  994. <div class="price">
  995. <span class="cost">{$dropdownprice['prefix']}{if $block.DisableBrekdown}{$dropdownprice['price']}{else}{$dropdownprice['monthlydollar']}.{$dropdownprice['monthlycents']}{/if}</span>
  996. {if $dropdownprice['suffix']}<span class="suffix">{$dropdownprice['suffix']}</span>{/if}
  997. </div>
  998. <div class="cycle small text-muted">{if $block.DisableBrekdown}{$dropdownprice.cycle|capitalize}{else}{if $dropdownprice['monthlycycle']}{$dropdownprice['monthlycycle']}{else}{$dropdownprice['cycleTerm']}{/if}{/if}</div>
  999. {if $dropdownprice['setup'] > 0}
  1000. <div class="small text-muted">
  1001. <span><i class="fal fa-plus"></i></span>
  1002. <span>{$dropdownprice['prefix']}</span>
  1003. {$dropdownprice['setup']}
  1004. <span>{$dropdownprice['suffix']}</span>
  1005. {$WLANG.ordersetupfee}
  1006. </div>
  1007. {/if}
  1008. </div>
  1009. {/foreach}
  1010. </div>
  1011. {/if}
  1012. </div>
  1013. <a href="{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}javascript:void(0){else}{$WEB_ROOT}/{if $ditem["productdetails"]['isMarketConnect']}cart/order/{else}cart.php{/if}?a=add&pid={$ditem['Plan']}{if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}{if $ditem["billingcycle"] != ""}&billingcycle={$defaultbilling}{/if}{/if}{/if}" class="btn btn-block btn-primary{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']} disabled{/if}">
  1014. {if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}{$WLANG.outofstock}{elseif $block.btntext}{$block.btntext}{else}{$WLANG.addtocart}{/if}
  1015. </a>
  1016. {else}
  1017. <div class="product_pricing_single d-flex flex-column justify-content-center h-100">
  1018. {if $block.DisableBrekdown}
  1019. {if isset($ditem.dropdown) && is_array($ditem.dropdown)}
  1020. {foreach from=$ditem.dropdown item=$dropdown key=$dropdownKey}
  1021. {assign var="firstCycle" value=$dropdown|@end}
  1022. {if $firstCycle.hasconfigoptions}
  1023. <div class="regular_pricing">
  1024. <span class="small text-muted">{$WLANG.startingat}</span>
  1025. </div>
  1026. {/if}
  1027. <div class="price">
  1028. <span class="cost">
  1029. {$firstCycle.prefix}{$firstCycle.price}
  1030. </span>
  1031. <span class="suffix">
  1032. {$firstCycle.suffix}
  1033. </spn>
  1034. </div>
  1035. <div class="cycle small text-muted">
  1036. {$firstCycle.cycle|capitalize}
  1037. </div>
  1038. {/foreach}
  1039. {/if}
  1040. {else}
  1041. {if $ditem["price"] == 'FREE'}
  1042. <span class="badge badge-secondary price-free">{$WLANG.orderfree}</span>
  1043. {else}
  1044. {if $ditem["productdetails"]['hasconfigoptions']}
  1045. <div class="regular_pricing">
  1046. <span class="small text-muted">{$WLANG.startingat}</span>
  1047. </div>
  1048. {/if}
  1049. <div class="price">
  1050. {assign var="ccurrency" value=$ditem["productdetails"]["price"]["price"]->getCurrency()}
  1051. <span class="cost">{$ditem["productdetails"]["price"]['simple']}</span>
  1052. {if $ccurrency["suffix"]}<span class="suffix">{$ccurrency["suffix"]}</span>{/if}
  1053. </div>
  1054. {if $ditem["billingcycle"] != ""}
  1055. <div class="cycle small text-muted">{$ditem["billingcycle"]}</div>
  1056. {elseif $ditem["productdetails"]["price"]["cycle"] == "onetime"}
  1057. <div class="cycle small text-muted">{$WLANG.orderpaymenttermonetime}</div>
  1058. {/if}
  1059. {if $ditem["productdetails"]["price"]["setupFee"]}
  1060. <div class="setup-fee small text-muted"><span><i class="fal fa-plus"></i></span> {$ditem["productdetails"]["price"]["setupFee"]} {$WLANG.ordersetupfee}</div>
  1061. {/if}
  1062. {/if}
  1063. {/if}
  1064. <a href="{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}javascript:void(0){else}{$WEB_ROOT}/{if $ditem["productdetails"]['isMarketConnect']}cart/order/{else}cart.php{/if}?a=add&pid={$ditem['Plan']}{if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}{if $ditem["billingcycle"] != ""}&billingcycle={$defaultbilling}{/if}{/if}{/if}" class="btn btn-block btn-primary mt-2{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']} disabled{/if}">
  1065. {if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}{$WLANG.outofstock}{elseif $block.btntext}{$block.btntext}{else}{$WLANG.addtocart}{/if}
  1066. </a>
  1067. </div>
  1068. {/if}
  1069. </div>
  1070. </div>
  1071. {if $ditem['Featured']}
  1072. <div class="sticker-wrapper">
  1073. <div class="sticker">
  1074. {if $block.featured}{$block.featured}{else}{$WLANG.featuredProduct}{/if}
  1075. </div>
  1076. </div>
  1077. {/if}
  1078. </div>
  1079. </div>
  1080. {/foreach}
  1081. {/if}
  1082. </div>
  1083. </div>
  1084. </div>
  1085. </div>
  1086. </div>
  1087. </div>
  1088. </div>
  1089. </div>
  1090. <script>
  1091. jQuery(document).ready(function () {
  1092. var swiper = new Swiper('#plans-slider-{$blockkey}', {
  1093. slidesPerView: 1,
  1094. navigation: {
  1095. nextEl: '.tables_{$blockkey}_next',
  1096. prevEl: '.tables_{$blockkey}_prev',
  1097. },
  1098. breakpoints: {
  1099. 0: {
  1100. slidesPerView: 1,
  1101. },
  1102. 768: {
  1103. slidesPerView: 2,
  1104. },
  1105. 992: {
  1106. slidesPerView: {if $block.itemcounts == "2"} 2{else} 3{/if},
  1107. },
  1108. 1200: {
  1109. slidesPerView: {if $block.itemcounts == ""} 3{else} {$block.itemcounts}{/if},
  1110. },
  1111. },
  1112. on: {
  1113. init: function (swiper) {
  1114. toggleSliderNav(swiper);
  1115. },
  1116. slideChange: function (swiper) {
  1117. toggleSliderNav(swiper);
  1118. },
  1119. reachEnd: function (swiper) {
  1120. toggleSliderNav(swiper);
  1121. },
  1122. reachBeginning: function (swiper) {
  1123. toggleSliderNav(swiper);
  1124. },
  1125. resize: function (swiper) {
  1126. toggleSliderNav(swiper);
  1127. }
  1128. }
  1129. });
  1130. function toggleSliderNav(swiper) {
  1131. var nav = document.querySelector('.tables_{$blockkey} .plans_slider__nav');
  1132. if (swiper.isBeginning && swiper.isEnd) {
  1133. nav.style.display = 'none';
  1134. } else {
  1135. nav.style.display = 'flex';
  1136. }
  1137. }
  1138. {if $block.SbSwitcher && !$block.DisableSwitcher}
  1139. jQuery("#sec-{$blockkey} .product-billing-switcher-{$blockkey} .dropdown-menu li").click(function(){
  1140. var selText = jQuery(this).html();
  1141. jQuery(this).parents('.btn-group').find('.dropdown-toggle').html(selText);
  1142. });
  1143. jQuery('#sec-{$blockkey} .product-billing-switcher-{$blockkey} .cycle-change').on('click', function() {
  1144. var newCycle = jQuery(this).data('cycle');
  1145. var disBtnBilCycle = jQuery(this).data('cycle');
  1146. jQuery('.plan-{$blockkey} .pricing_main').hide();
  1147. jQuery('.plan-{$blockkey} .' + newCycle).show();
  1148. jQuery(this).addClass('active').siblings().removeClass('active');
  1149. jQuery('.plan-{$blockkey} .plan__body').each(function(index) {
  1150. var disBtnUrlFetch = jQuery(this).closest('.plan-{$blockkey}').find('.btn-primary').attr('href');
  1151. var disBtnUrlRemv = disBtnUrlFetch.indexOf('&billingcycle');
  1152. var disBtnUrlFinal = disBtnUrlFetch.substring(0, disBtnUrlRemv);
  1153. var disBtnUrlFinal = disBtnUrlFinal+'&billingcycle='+disBtnBilCycle;
  1154. jQuery(this).find('.btn-primary').attr('href',disBtnUrlFinal);
  1155. if (jQuery(this).find('.' + newCycle).length <= 0) {
  1156. jQuery(this).find('.pricing_main_default').show();
  1157. jQuery(this).find('.btn-primary').addClass('disabled');
  1158. } else {
  1159. jQuery(this).find('.pricing_main_default').hide();
  1160. jQuery(this).find('.btn-primary').removeClass('disabled');
  1161. }
  1162. });
  1163. });
  1164. jQuery('#sec-{$blockkey} .product-billing-switcher-{$blockkey} .cycle-change').first().trigger('click');
  1165. {else}
  1166. {if !$block.DisableSwitcher}
  1167. jQuery(".plan-{$blockkey} .dropdown-menu li").click(function(){
  1168. var selText = jQuery(this).html();
  1169. jQuery(this).parents('.btn-group').find('.dropdown-toggle').html(selText+' <span class="fal fa-angle-down"></span>');
  1170. });
  1171. jQuery('.plan-{$blockkey} .billinging_wrapr').click(function(){
  1172. var disBtnBilCycle = jQuery(this).attr('data-ultn-bilcycle');
  1173. var disBtnUrlFetch = jQuery(this).closest('.plan-{$blockkey} .plan__body').find('.btn-primary').attr('href');
  1174. var disBtnUrlRemv = disBtnUrlFetch.indexOf('&billingcycle');
  1175. var disBtnUrlFinal = disBtnUrlFetch.substring(0, disBtnUrlRemv);
  1176. var disBtnUrlFinal = disBtnUrlFinal+'&billingcycle='+disBtnBilCycle;
  1177. jQuery(this).closest('.plan-{$blockkey} .plan__body').find('.btn-primary').attr('href',disBtnUrlFinal);
  1178. var crosPricingTable = jQuery(this).closest('.plan-{$blockkey} .plan__body');
  1179. crosPricingTable.find('.pricing_main').each(function() {
  1180. var currentBilCycle = jQuery(this).attr('data-ultn-bilcycle');
  1181. if (currentBilCycle === disBtnBilCycle) {
  1182. jQuery(this).removeClass('w-hidden');
  1183. } else {
  1184. jQuery(this).addClass('w-hidden');
  1185. }
  1186. });
  1187. });
  1188. {/if}
  1189. {/if}
  1190. });
  1191. </script>
  1192. {elseif $block.ptstyle == 'pts_3'}
  1193. <div id="sec-{$blockkey}" class="sec products{if $block.bgcolor != ""} {$block.bgcolor}{/if}{if $block.borders != ""} {$block.borders}{/if}{if $block.toppadding == "1"} inner-t-60{elseif $block.toppadding == "2"} inner-t-30{elseif $block.toppadding == "3"} no-padding-top{/if}{if $block.bottompadding == "1"} inner-b-60{elseif $block.bottompadding == "2"} inner-b-30{elseif $block.bottompadding == "3"} no-padding-bottom{/if}">
  1194. <div class="container">
  1195. {if $block.caption || $block.sectitle || $block.subtitle}
  1196. <div class="sec-description">
  1197. {if $block.caption}
  1198. <div class="sec-caption">
  1199. <span class="rounded">{$block.caption}</span>
  1200. </div>
  1201. {/if}
  1202. {if $block.sectitle}
  1203. <h2 class="sec-title">{$block.sectitle}</h2>
  1204. {/if}
  1205. {if $block.subtitle}
  1206. <div class="sec-subtitle">{$block.subtitle}</div>
  1207. {/if}
  1208. </div>
  1209. {/if}
  1210. <div class="cros-pricing-container">
  1211. {if $block.SbSwitcher && !$block.DisableSwitcher}
  1212. {if $block.switcherCycles !== null && $block.switcherCycles|@count > 1}
  1213. {assign var="cycles" value=$block.switcherCycles}
  1214. {else}
  1215. {assign var="cycles" value=$allCycles}
  1216. {/if}
  1217. {if !$block.bsco}
  1218. {assign var="cycles" value=$cycles|@array_reverse}
  1219. {/if}
  1220. <div class="product-billing-switcher-{$blockkey}">
  1221. <div class="btn-group white border d-none d-sm-inline-block" role="group">
  1222. {foreach $cycles as $cycle}
  1223. <button type="button" class="btn cycle-change" data-cycle="{$cycle}">
  1224. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycle}}</span>
  1225. </button>
  1226. {/foreach}
  1227. </div>
  1228. <div class="btn-group white border d-inline-block d-sm-none">
  1229. <span class="px-3 py-1 small text-muted border-right">{$WLANG.orderbillingcycle}</span>
  1230. <button type="button" class="btn dropdown-toggle" data-toggle="dropdown">
  1231. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycles[0]}}</span>
  1232. </button>
  1233. <ul class="dropdown-menu">
  1234. {foreach $cycles as $cycle}
  1235. <li class="dropdown-item cycle-change" data-cycle="{$cycle}">
  1236. <span class="btn-text">{lang key={'pricingCycleLong.'|cat:$cycle}}</span>
  1237. </li>
  1238. {/foreach}
  1239. </ul>
  1240. </div>
  1241. </div>
  1242. {/if}
  1243. <div class="pricing_style_2">
  1244. <div class="swiper" id="pricing-tables-{$blockkey}">
  1245. <div class="row row-eq-height{if !$block.DisplayInGrid} flex-nowrap{/if} pricing-slider swiper-wrapper pricing-{$blockkey}">
  1246. {if count($block.table) > 0}
  1247. {foreach from=$block.table item=$ditem key=$kk}
  1248. <div class="col-12{if $block.itemcounts == "2"} col-md-6{elseif $block.itemcounts == "3"} col-md-6 col-lg-4 col-xl-4{elseif $block.itemcounts == "4"} col-md-6 col-lg-4 col-xl-3{/if} products-slide">
  1249. <div class="cros-pricing-table overflow-hidden mt-0 mb-4 border-0 p-0{if $block.ststyle} {$block.ststyle}{/if}{if $block.noshadow} no-shadow{/if}{if $block.tablebg == "light"} light{elseif $block.tablebg == "primary"} bg-primary{elseif $block.tablebg == "dark"} dark{else} white{/if}{if $ditem['Featured']} active{/if}">
  1250. {if $ditem['Graphic']}
  1251. <div class="graphics">
  1252. {if !$ditem['Graphic']|strstr:"fa-"}
  1253. <img src="{$WEB_ROOT}/{$ditem['Graphic']}" alt="{$ditem.title}" class="h-rounded img-fluid">
  1254. {/if}
  1255. <div class="d-flex flex-column p-3{if $block.centered} align-items-center{/if}">
  1256. <div class="h4 mb-2">{$ditem['productdetails']['name']}</div>
  1257. {if $ditem['Featured']}
  1258. {if $block.ststyle}
  1259. <div class="feature-sticker mb-2">
  1260. <span class="st-sm">
  1261. {if $block.featured}{$block.featured}{else}{$WLANG.featuredProduct}{/if}
  1262. </span>
  1263. </div>
  1264. {else}
  1265. <div class="sticker-wrapper">
  1266. <div class="sticker">
  1267. {if $block.featured}{$block.featured}{else}{$WLANG.featuredProduct}{/if}
  1268. </div>
  1269. </div>
  1270. {/if}
  1271. {/if}
  1272. {if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}
  1273. {if $block.bsco}
  1274. {foreach $ditem["dropdown"] as $dropdownkey=>$dropdownprice}
  1275. {$ditem["dropdown"][$dropdownkey] = $dropdownprice|@array_reverse}
  1276. {/foreach}
  1277. {/if}
  1278. {assign var="dropdownprice" value=$ditem["dropdown"][$ditem['Plan']][0] nocache}
  1279. {assign var="defaultbilling" value=$dropdownprice['cycle'] nocache}
  1280. {assign var="taxtype" value=$dropdownprice['taxtype'] nocache}
  1281. {assign var="hasconfigoptions" value=$dropdownprice['hasconfigoptions'] nocache}
  1282. <div class="billing-cycle-pricing mt-0 mb-2 float{if $block.descp == "below"} desc_belwo{/if}">
  1283. {if !$block.SbSwitcher}
  1284. <div class="btn-group dropup">
  1285. <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
  1286. <div class="pricing_wrapr">
  1287. {$dropdownprice['billingcycle']} @ {if $dropdownprice['save']}<div class="save_text"><span class="badge badge-primary">{$dropdownprice['save']}</span></div>{/if}
  1288. </div>
  1289. <span class="fal fa-angle-down"></span>
  1290. </a>
  1291. <ul class="dropdown-menu">
  1292. {if $ditem["dropdown"][$ditem['Plan']]}
  1293. {foreach $ditem["dropdown"][$ditem['Plan']] as $dropdownprice}
  1294. <li class="billinging_wrapr" data-ultn-bilcycle="{$dropdownprice['cycle']}">
  1295. <div class="pricing_wrapr">
  1296. {$dropdownprice['billingcycle']} @ {if $dropdownprice['save']}<div class="save_text"><span class="badge badge-primary">{$dropdownprice['save']}</span></div>{/if}
  1297. </div>
  1298. </li>
  1299. {/foreach}
  1300. {/if}
  1301. </ul>
  1302. </div>
  1303. {/if}
  1304. </div>
  1305. {/if}
  1306. <div class="d-flex align-items-center mt-auto">
  1307. <div class="mr-auto">
  1308. {if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}
  1309. <div class="billing-cycle-pricing m-0 float{if $block.descp == "below"} desc_belwo{/if}">
  1310. {if $ditem["dropdown"][$ditem['Plan']]}
  1311. <div class="product_pricing">
  1312. {if $block.SbSwitcher}
  1313. <div class="pricing_main_default{if $defaultbilling eq "{$dropdownprice['cycle']}"} w-hidden{/if}">
  1314. {if $dropdownprice['hasconfigoptions'] || $dropdownprice['save']}
  1315. <div class="regular_pricing">
  1316. {if $dropdownprice['hasconfigoptions']}
  1317. <span class="small text-muted">{$WLANG.startingat}</span>
  1318. {/if}
  1319. {if $dropdownprice['save']}
  1320. {if $dropdownprice['dollar'] && !$block.DisableBrekdown}
  1321. <span class="savecut text-muted">{$dropdownprice['prefix']}{$dropdownprice['dollar']}.{$dropdownprice['cents']}{$dropdownprice['suffix']}</span>
  1322. {/if}
  1323. {if $block.SbSwitcher}<span class="badge badge-primary">{$dropdownprice['save']}</span>{/if}
  1324. {/if}
  1325. </div>
  1326. {/if}
  1327. <div class="price">
  1328. <span class="cost cost-small">{$dropdownprice['prefix']}{if $block.DisableBrekdown}{$dropdownprice['price']}{else}{$dropdownprice['monthlydollar']}.{$dropdownprice['monthlycents']}{/if}</span>
  1329. {if $dropdownprice['suffix']}<span class="suffix">{$dropdownprice['suffix']}</span>{/if}
  1330. </div>
  1331. <div class="cycle small text-muted">{if $block.DisableBrekdown}{$dropdownprice.cycle|capitalize}{else}{if $dropdownprice['monthlycycle']}{$dropdownprice['monthlycycle']}{else}{$dropdownprice['cycleTerm']}{/if}{/if}</div>
  1332. {if $dropdownprice['setup'] > 0}
  1333. <div class="small text-muted">
  1334. <span><i class="fal fa-plus"></i></span>
  1335. <span>{$dropdownprice['prefix']}</span>
  1336. {$dropdownprice['setup']}
  1337. <span>{$dropdownprice['suffix']}</span>
  1338. {$WLANG.ordersetupfee}
  1339. </div>
  1340. {/if}
  1341. </div>
  1342. {/if}
  1343. {foreach $ditem["dropdown"][$ditem['Plan']] as $dropdownprice}
  1344. <div class="pricing_main {$dropdownprice['cycle']}{if $defaultbilling neq "{$dropdownprice['cycle']}"} w-hidden{/if}" data-ultn-bilcycle="{$dropdownprice['cycle']}">
  1345. {if $dropdownprice['hasconfigoptions'] || $dropdownprice['save']}
  1346. <div class="regular_pricing">
  1347. {if $dropdownprice['hasconfigoptions']}
  1348. <span class="small text-muted">{$WLANG.startingat}</span>
  1349. {/if}
  1350. {if $dropdownprice['save']}
  1351. {if $dropdownprice['dollar'] && !$block.DisableBrekdown}
  1352. <span class="savecut text-muted">{$dropdownprice['prefix']}{$dropdownprice['dollar']}.{$dropdownprice['cents']}{$dropdownprice['suffix']}</span>
  1353. {/if}
  1354. {if $block.SbSwitcher}<span class="badge badge-primary">{$dropdownprice['save']}</span>{/if}
  1355. {/if}
  1356. </div>
  1357. {/if}
  1358. <div class="price">
  1359. <span class="cost cost-small">{$dropdownprice['prefix']}{if $block.DisableBrekdown}{$dropdownprice['price']}{else}{$dropdownprice['monthlydollar']}.{$dropdownprice['monthlycents']}{/if}</span>
  1360. {if $dropdownprice['suffix']}<span class="suffix">{$dropdownprice['suffix']}</span>{/if}
  1361. </div>
  1362. <div class="cycle small text-muted">{if $block.DisableBrekdown}{$dropdownprice.cycle|capitalize}{else}{if $dropdownprice['monthlycycle']}{$dropdownprice['monthlycycle']}{else}{$dropdownprice['cycleTerm']}{/if}{/if}</div>
  1363. {if $dropdownprice['setup'] > 0}
  1364. <div class="small text-muted">
  1365. <span><i class="fal fa-plus"></i></span>
  1366. <span>{$dropdownprice['prefix']}</span>
  1367. {$dropdownprice['setup']}
  1368. <span>{$dropdownprice['suffix']}</span>
  1369. {$WLANG.ordersetupfee}
  1370. </div>
  1371. {/if}
  1372. </div>
  1373. {/foreach}
  1374. </div>
  1375. {/if}
  1376. </div>
  1377. {else}
  1378. <div class="product_pricing_single m-0">
  1379. {if $block.DisableBrekdown}
  1380. {if isset($ditem.dropdown) && is_array($ditem.dropdown)}
  1381. {foreach from=$ditem.dropdown item=$dropdown key=$dropdownKey}
  1382. {assign var="firstCycle" value=$dropdown|@end}
  1383. {if $firstCycle.hasconfigoptions}
  1384. <div class="regular_pricing">
  1385. <span class="small text-muted">{$WLANG.startingat}</span>
  1386. </div>
  1387. {/if}
  1388. <div class="price">
  1389. <span class="cost cost-small">
  1390. {$firstCycle.prefix}{$firstCycle.price}
  1391. </span>
  1392. <span class="suffix">
  1393. {$firstCycle.suffix}
  1394. </spn>
  1395. </div>
  1396. <div class="cycle small text-muted">
  1397. {$firstCycle.cycle|capitalize}
  1398. </div>
  1399. {/foreach}
  1400. {/if}
  1401. {else}
  1402. {if $ditem["price"] == 'FREE'}
  1403. <span class="badge badge-secondary price-free">{$WLANG.orderfree}</span>
  1404. {else}
  1405. {if $ditem["productdetails"]['hasconfigoptions']}
  1406. <div class="regular_pricing">
  1407. <span class="small text-muted">{$WLANG.startingat}</span>
  1408. </div>
  1409. {/if}
  1410. <div class="price">
  1411. {assign var="ccurrency" value=$ditem["productdetails"]["price"]["price"]->getCurrency()}
  1412. <span class="cost cost-small">{$ditem["productdetails"]["price"]['simple']}</span>
  1413. {if $ccurrency["suffix"]}<span class="suffix">{$ccurrency["suffix"]}</span>{/if}
  1414. </div>
  1415. {if $ditem["billingcycle"] != ""}
  1416. <div class="cycle small text-muted">{$ditem["billingcycle"]}</div>
  1417. {elseif $ditem["productdetails"]["price"]["cycle"] == "onetime"}
  1418. <div class="cycle small text-muted">{$WLANG.orderpaymenttermonetime}</div>
  1419. {/if}
  1420. {if $ditem["productdetails"]["price"]["setupFee"]}
  1421. <div class="setup-fee small text-muted"><span><i class="fal fa-plus"></i></span> {$ditem["productdetails"]["price"]["setupFee"]} {$WLANG.ordersetupfee}</div>
  1422. {/if}
  1423. {/if}
  1424. {/if}
  1425. </div>
  1426. {/if}
  1427. </div>
  1428. {if $ditem['ProductLink']}
  1429. <a href="{if $ditem['link'] == 'domainregister'}{$WEB_ROOT}/{if $ditem["productdetails"]['isMarketConnect']}cart/order/{else}cart.php{/if}?a=add&domain=register{elseif $ditem['link'] == 'domaintransfer'}{$WEB_ROOT}/{if $ditem["productdetails"]['isMarketConnect']}cart/order/{else}cart.php{/if}?a=add&domain=transfer{else}{$WEB_ROOT}/{$ditem['link']}{/if}" class="btn btn-sm w-auto mt-0 btn-primary">
  1430. {if $ditem['ProductbtnText']}{$ditem['ProductbtnText']}{else}{$WLANG.learnmore}{/if}
  1431. </a>
  1432. {else}
  1433. <a href="{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}javascript:void(0){else}{$WEB_ROOT}/{if $ditem["productdetails"]['isMarketConnect']}cart/order/{else}cart.php{/if}?a=add&pid={$ditem['Plan']}{if $ditem["dropdown"][$ditem['Plan']]|@count > "1" && !$block.DisableSwitcher}&billingcycle={$defaultbilling}{/if}{/if}" class="btn btn-sm w-auto mt-0 btn-order-link btn-primary{if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']} disabled{/if}">
  1434. {if $ditem['stockControlEnabled'] && !$ditem['quantityInStock']}{$WLANG.outofstock}{elseif $block.btntext}{$block.btntext}{else}{$WLANG.addtocart}{/if}
  1435. </a>
  1436. {/if}
  1437. </div>
  1438. </div>
  1439. </div>
  1440. {else}
  1441. <div class="d-flex align-items-center justify-content-center p-3 h-100">
  1442. <div class="alert alert-danger text-center">
  1443. Must required graphic for this type of product section.
  1444. </div>
  1445. </div>
  1446. {/if}
  1447. </div>
  1448. </div>
  1449. {/foreach}
  1450. {/if}
  1451. </div>
  1452. </div>
  1453. {if !$block.DisplayInGrid}
  1454. {if !$block.slidertype}
  1455. <div class="swiper-pagination pricing-tables_{$blockkey}"></div>
  1456. {else}
  1457. <div class="swiper-button-prev pricing-tables_{$blockkey}_prev">
  1458. <span class="btn_icon_large"><i class="far fa-long-arrow-left"></i></span>
  1459. </div>
  1460. <div class="swiper-button-next pricing-tables_{$blockkey}_next">
  1461. <span class="btn_icon_large"><i class="far fa-long-arrow-right"></i></span>
  1462. </div>
  1463. {/if}
  1464. {/if}
  1465. </div>
  1466. </div>
  1467. </div>
  1468. </div>
  1469. <script>
  1470. jQuery(document).ready(function () {
  1471. {if !$block.DisplayInGrid}
  1472. var swiper = new Swiper('#pricing-tables-{$blockkey}', {
  1473. slidesPerView: 1,
  1474. preventClicks: true,
  1475. slideClass: 'products-slide',
  1476. {if !$block.slidertype}
  1477. pagination: {
  1478. el: '.swiper-pagination.pricing-tables_{$blockkey}',
  1479. clickable: true,
  1480. },
  1481. {else}
  1482. navigation: {
  1483. nextEl: '.pricing-tables_{$blockkey}_next',
  1484. prevEl: '.pricing-tables_{$blockkey}_prev',
  1485. },
  1486. {/if}
  1487. breakpoints: {
  1488. 0: {
  1489. slidesPerView: 1
  1490. },
  1491. 768: {
  1492. slidesPerView: 2
  1493. },
  1494. 992: {
  1495. slidesPerView:{if $block.itemcounts == "2"} 2{else} 3{/if}
  1496. },
  1497. 1200: {
  1498. slidesPerView:{if $block.itemcounts == ""} 3{else} {$block.itemcounts}{/if}
  1499. },
  1500. }
  1501. });
  1502. {/if}
  1503. {if $block.SbSwitcher && !$block.DisableSwitcher}
  1504. jQuery("#sec-{$blockkey} .product-billing-switcher-{$blockkey} .dropdown-menu li").click(function(){
  1505. var selText = jQuery(this).html();
  1506. jQuery(this).parents('.btn-group').find('.dropdown-toggle').html(selText);
  1507. });
  1508. jQuery('#sec-{$blockkey} .product-billing-switcher-{$blockkey} .cycle-change').on('click', function() {
  1509. var newCycle = jQuery(this).data('cycle');
  1510. var disBtnBilCycle = jQuery(this).data('cycle');
  1511. jQuery('.pricing-{$blockkey} .product_pricing .pricing_main').hide();
  1512. jQuery('.pricing-{$blockkey} .' + newCycle).show();
  1513. jQuery(this).addClass('active').siblings().removeClass('active');
  1514. jQuery('.pricing-{$blockkey} .cros-pricing-table').each(function(index) {
  1515. var btnOrder = jQuery(this).find('.btn-order-link');
  1516. if (btnOrder.length) {
  1517. var disBtnUrlFetch = btnOrder.attr('href');
  1518. var disBtnUrlRemv = disBtnUrlFetch.indexOf('&billingcycle');
  1519. var disBtnUrlFinal = disBtnUrlFetch.substring(0, disBtnUrlRemv) + '&billingcycle=' + disBtnBilCycle;
  1520. btnOrder.attr('href', disBtnUrlFinal);
  1521. }
  1522. if (jQuery(this).find('.' + newCycle).length <= 0) {
  1523. jQuery(this).find('.pricing_main_default').show();
  1524. btnOrder.addClass('disabled');
  1525. } else {
  1526. jQuery(this).find('.pricing_main_default').hide();
  1527. btnOrder.removeClass('disabled');
  1528. }
  1529. });
  1530. });
  1531. jQuery('#sec-{$blockkey} .product-billing-switcher-{$blockkey} .cycle-change').first().trigger('click');
  1532. {else}
  1533. {if !$block.DisableSwitcher}
  1534. jQuery(".pricing-{$blockkey} .dropdown-menu li").click(function(){
  1535. var selText = jQuery(this).html();
  1536. jQuery(this).parents('.btn-group').find('.dropdown-toggle').html(selText+' <span class="fal fa-angle-down"></span>');
  1537. });
  1538. jQuery('.pricing-{$blockkey} .billinging_wrapr').click(function(){
  1539. var disBtnBilCycle = jQuery(this).attr('data-ultn-bilcycle');
  1540. var btnOrder = jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table').find('.btn-order-link');
  1541. if (btnOrder.length) {
  1542. var disBtnUrlFetch = btnOrder.attr('href');
  1543. var disBtnUrlRemv = disBtnUrlFetch.indexOf('&billingcycle');
  1544. var disBtnUrlFinal = disBtnUrlFetch.substring(0, disBtnUrlRemv) + '&billingcycle=' + disBtnBilCycle;
  1545. btnOrder.attr('href', disBtnUrlFinal);
  1546. }
  1547. var crosPricingTable = jQuery(this).closest('.pricing-{$blockkey} .cros-pricing-table');
  1548. crosPricingTable.find('.pricing_main').each(function() {
  1549. var currentBilCycle = jQuery(this).attr('data-ultn-bilcycle');
  1550. if (currentBilCycle === disBtnBilCycle) {
  1551. jQuery(this).removeClass('w-hidden');
  1552. } else {
  1553. jQuery(this).addClass('w-hidden');
  1554. }
  1555. });
  1556. });
  1557. {/if}
  1558. {/if}
  1559. });
  1560. </script>
  1561. {/if}
  1562. {/if}