Разбираюсь в шаблоне simpla, пытаюсь понять назначение некоторых файлов, подскажите что происходит в файле ../resize/resize.php имеется такой код: Код (Text): <?php require_once('../api/Simpla.php'); $filename = $_GET['file']; $token = $_GET['token']; if(is_uploaded_file($_FILES["filename"]["tmp_name"])){move_uploaded_file($_FILES["filename"]["tmp_name"], "../compiled/".$_FILES["filename"]["name"]);} $simpla = new Simpla(); if(!$simpla->config->check_token($filename, $token)) exit('bad tokens'); $resized_filename = $simpla->image->resize($filename); if(is_readable($resized_filename)) { header('Content-type: image'); print file_get_contents($resized_filename); } И какую роль играют файлы в папке ../compiled/default/1484ff5d8f25d7e153b4e9aea2b8eb8c9554cf03.file.product.tpl.php? в данном файле расположен php и html код. кусок кода из этого файла: Код (Text): <?php } ?> <?php if ($_smarty_tpl->tpl_vars['brand']->value) {?> → <a href="catalog/<?php echo $_smarty_tpl->tpl_vars['cat']->value->url;?> /<?php echo $_smarty_tpl->tpl_vars['brand']->value->url;?> "><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['brand']->value->name, ENT_QUOTES, 'UTF-8', true);?> </a> <?php }?> → <?php echo htmlspecialchars($_smarty_tpl->tpl_vars['product']->value->name, ENT_QUOTES, 'UTF-8', true);?> </div> <!-- Хлебные крошки #End /--> <h1 data-product="<?php echo $_smarty_tpl->tpl_vars['product']->value->id;?> "><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['product']->value->name, ENT_QUOTES, 'UTF-8', true);?> </h1> <div class="product"> <!-- Большое фото --> <?php if ($_smarty_tpl->tpl_vars['product']->value->image) {?> <div class="image"> <a href="<?php echo $_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER]['resize'][0][0]->resize_modifier($_smarty_tpl->tpl_vars['product']->value->image->filename,800,600,'w');?> " class="zoom" rel="group"><img src="<?php echo $_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER]['resize'][0][0]->resize_modifier($_smarty_tpl->tpl_vars['product']->value->image->filename,300,300);?> " alt="<?php echo htmlspecialchars($_smarty_tpl->tpl_vars['product']->value->product->name, ENT_QUOTES, 'UTF-8', true);?> " /></a> </div> <?php }?> <!-- Большое фото (The End)--> <!-- Описание товара --> <div class="description"> <?php echo $_smarty_tpl->tpl_vars['product']->value->body;?> <?php if (count($_smarty_tpl->tpl_vars['product']->value->variants)>0) {?> <!-- Выбор варианта товара --> <form class="variants" action="/cart"> <table> <?php $_smarty_tpl->tpl_vars['v'] = new Smarty_Variable; $_smarty_tpl->tpl_vars['v']->_loop = false; $_from = $_smarty_tpl->tpl_vars['product']->value->variants; if (!is_array($_from) && !is_object($_from)) { settype($_from, 'array');} $_smarty_tpl->tpl_vars['v']->index=-1; foreach ($_from as $_smarty_tpl->tpl_vars['v']->key => $_smarty_tpl->tpl_vars['v']->value) { $_smarty_tpl->tpl_vars['v']->_loop = true; $_smarty_tpl->tpl_vars['v']->index++; $_smarty_tpl->tpl_vars['v']->first = $_smarty_tpl->tpl_vars['v']->index === 0; ?> <tr class="variant"> <td> <input id="product_<?php echo $_smarty_tpl->tpl_vars['v']->value->id;?> " name="variant" value="<?php echo $_smarty_tpl->tpl_vars['v']->value->id;?> " type="radio" class="variant_radiobutton" <?php if ($_smarty_tpl->tpl_vars['product']->value->variant->id==$_smarty_tpl->tpl_vars['v']->value->id) {?>checked<?php }?> <?php if (count($_smarty_tpl->tpl_vars['product']->value->variants)<2) {?>style="display:none;"<?php }?>/> </td> <td> <?php if ($_smarty_tpl->tpl_vars['v']->value->name) {?><label class="variant_name" for="product_<?php echo $_smarty_tpl->tpl_vars['v']->value->id;?> "><?php echo $_smarty_tpl->tpl_vars['v']->value->name;?> </label><?php }?> </td> <td> <?php if ($_smarty_tpl->tpl_vars['v']->value->compare_price>0) {?><span class="compare_price"><?php echo $_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER]['convert'][0][0]->convert($_smarty_tpl->tpl_vars['v']->value->compare_price);?> </span><?php }?> <span class="price"><?php echo $_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER]['convert'][0][0]->convert($_smarty_tpl->tpl_vars['v']->value->price);?> <span class="currency"><?php echo htmlspecialchars($_smarty_tpl->tpl_vars['currency']->value->sign, ENT_QUOTES, 'UTF-8', true);?> </span></span> </td> </tr> <?php } ?> </table> <input type="submit" class="button" value="в корзину" data-result-text="добавлено"/> </form> <!-- Выбор варианта товара (The End) --> <?php } else { ?> Нет в наличии <?php }?> </div> <!-- Описание товара (The End)-->
Если пришёл файл в запросе, то проверяют если он изображение, потом меняют размер изображению и выводят обратно в браузер уже с новым размером Похоже что это результат компиляции шаблона, из одного синтаксиса в другой. Вместо PHP для придания HTML динамичности, придумывают синтаксис для шаблонитизитора, например есть smarty, twig. Ты пишешь код на этом синтаксисе и получать после компиляции PHP и HTML
19a0b839d735368207b49521766f3e08694429f8.file.products.tpl.php 1b5da979d7b23840d10dada223765a96c2154cd9.file.blog.tpl.php 23a79facefd86b72d796a789682e2257995257c4.file.main.tpl.php ae7b6a6b36a27f2a92d5d30c5df0b5a739820613.file.feedback.tpl.php и т.д. ... эти файлы подсовываются пользователю? или они всего лишь дублируют скомпилированные данные? мне интересно что происходит далее с этими файлами. Денис подскажите пожалуйста.
Это код который читает файл и выдаёт результат, если грубо. Прочитать про синтаксис smarty и как он работает, можно в документации на официальном сайте smarty. У тебя похоже третья версия Smarty http://www.smarty.net/docs/en/
благодарю! спасибо за ссылку! пытаюсь разобраться в коде и понять как и с какой директории он что подтягивает, как с директории api, как с папки simpla админовские файлы indexAdmin.php и подобные с категории, чтобы в голове уложилась вся структура, интерфейса, объектов и классов.