function m_products($argv = array()) { $tpl = new strontium_tpl("private/tpl/m_products.html", array(), false); if (isset($argv['cat_id'])) { $cat_id = $argv['cat_id']; } $products = products_get_list_by_category($cat_id); if ($products < 0) { //если запрос не нашел продукты $tpl->assign("product_error_message"); } else { foreach ($products as $product) { $tpl->assign("products", $product); $product_id = $product['id']; $properties = product_get_dynamic_properties($product_id); if ($properties < 0) { continue; } else { foreach ($properties as $property) { $tpl->assign('dymnamic_property', $property); } } } } return $tpl->result(); }
function m_articles($argv = array()) { $tpl = new strontium_tpl("private/tpl/m_articles.html", array(), false); if (isset($argv['id'])) { $article = article_get_by_id($argv['id']); } else { if (isset($argv['key'])) { $article = article_get_by_key($argv['key']); } else { $article = article_get_by_key("welcome"); } } if ($article < 0) { $tpl->assign("article_error_message"); } else { $tpl->assign("article", $article); } page_set_title($article['page_title']); return $tpl->result(); }
function m_adm_products($argv = array()) { global $global_marks; $tpl = new strontium_tpl("private/tpl/m_adm_products.html", $global_marks, false); $mode = 'list_products'; if (isset($argv['mode'])) { $mode = $argv['mode']; } switch ($mode) { case "list_products": if (!isset($argv['cat_id'])) { $cat_id = 1; } else { $cat_id = $argv["cat_id"]; } /* вывод меню выбора категории */ $tpl->assign("category_menu"); $categories = product_categories_get_list(); /* вывод списка категорий */ foreach ($categories as $category) { $tpl->assign("categories_list", $category); /* выбор названия категории */ if ($category['id'] == $cat_id) { $cat_name = $category['category_name']; } } /* вывод названия выбранной категории */ $tpl->assign("category_name", array('category_name' => $cat_name)); /* вывод списка продуктов выбранной категории */ $tpl->assign("products_list"); $products = products_get_list_by_category($cat_id); foreach ($products as $product) { $tpl->assign("products_row_table", $product); } return $tpl->result(); break; case "edit_product": $tpl->assign("product_add_edit"); return $tpl->result(); break; } }
case 'adm_login': if (auth_get_admin()) { break; } else { $mod_content = m_adm_login($_GET); } break; case 'articles': $mod_content = m_articles($_GET); break; case 'products': $mod_content = m_products($_GET); break; } /* Если введен некорректный mode то вывод статьи по умолчанию */ if (!$mod_content) { $mod_content = m_articles(); } /* Заполнение главного шаблона */ $tpl = new strontium_tpl("private/tpl/skeleton.html", $global_marks, false); $tpl->assign(NULL, array('title' => page_get_title(), 'mod_content' => $mod_content)); /* Вывод всплывающего сообщения, если нужно */ $win = message_box_check_for_display(); if ($win) { $tpl->assign($win['block'], $win['data']); } /* Вывод меню администратора если автозирован */ if (auth_get_admin()) { $tpl->assign("admin_menu"); } echo $tpl->result();
function m_adm_articles($argv = array()) { global $global_marks; $tpl = new strontium_tpl("private/tpl/m_adm_articles.html", $global_marks, false); $mode = 'list_articles'; if (isset($argv['mode'])) { $mode = $argv['mode']; } switch ($mode) { /* вывод списка статей */ case "list_articles": $tpl->assign("articles_list"); $articles_list = article_get_list(); foreach ($articles_list as $article) { $tpl->assign("articles_row_table", $article); } break; /* вывод формы редактирования статьи */ /* вывод формы редактирования статьи */ case "edit_article": $article_id = $argv['id']; $article = article_get_by_id($article_id); if ($article['public'] == 1) { $article['public'] = "checked"; } $tpl->assign("article_add_edit", $article); $tpl->assign("article_query_edit"); $tpl->assign("article_edit", array('id' => $article_id)); $tpl->assign("article_edit_submit"); break; /* вывод формы добавление статьи */ /* вывод формы добавление статьи */ case "add_article": $tpl->assign("article_add_edit"); $tpl->assign("article_add"); $tpl->assign("article_query_add"); $tpl->assign("article_add_submit"); break; } return $tpl->result(); }
function m_adm_login($argv = array()) { $tpl = new strontium_tpl("private/tpl/m_login.html", $global_marks, false); $tpl->assign("adm_login"); return $tpl->result(); }
/** Рекурсивная функция разворачивает все INSERT блоки и возвращает развернутый шаблон @param $tpl_content - Текст шаблона @param $tpl_path - Путь к шаблону @param $parent_file - внутренний параметер используется для рекурсивного обхода INSERT блоков. Путь к родительскому файлу внутри которого разворачивается текущий INSERT @return возвращает развернутый шаблон */ private function do_insert_blocks($tpl_content, $tpl_path, $parent_file = '') { // получение списока INSERT блоков $insert_blocks = $this->find_blocks('INSERT', $tpl_content); if (!$insert_blocks) { return $tpl_content; } // обработка каждого INSERT блока foreach ($insert_blocks as $insert_block) { foreach ($insert_block as $tpl_file_name => $preassign_content) { } if (!file_exists($tpl_path . $tpl_file_name)) { echo "Can not find teamplate file '" . $tpl_path . $tpl_file_name . "' in parent teamplate file: '" . $parent_file . "'\n"; exit; } // Загрузка шаблона указанного в INSERT блоке $insert_content = file_get_contents($tpl_path . $tpl_file_name); // удаление коментариев /* */ и // $insert_content = $this->strip_comments($insert_content); // Получение древовидного массива всех блоков с метками для ассайна их в заргужаемый шаблон $preassign_data = $this->get_preassign_data($preassign_content); // асайн древовидного массива статический меток $preassign_tpl = new strontium_tpl(); $preassign_tpl->open_buffer($insert_content); $preassign_tpl->assign(0, $preassign_data['marks']); // ассайн дерева блоков с меткаими в заргужаемый шаблон $preassign_tpl->assign_array($preassign_data); $preassigned_content = $preassign_tpl->result_content; // поиск временных блоковых меток и замена их на заполненное содержимое этих блоков preg_match_all("/<<-(.*)->>/Us", $preassigned_content, $extract); $list_blocks = $extract[1]; if ($list_blocks) { foreach ($list_blocks as $block_name) { $block_src = $this->find_block('BLOCK', $block_name, $insert_content); $preassigned_content = str_replace("<<-" . $block_name . "->>", '<!-- START BLOCK : ' . $block_name . ' -->' . $block_src . '<!-- END BLOCK : ' . $block_name . ' -->', $preassigned_content); } } // поскольку вместо INSERT блока вставляется содержимое этого блока, // то если в содержимом блоке встретится INSERT блок, то к нему надо дописать текущий путь. $insert_path_prefix = $this->get_file_path($tpl_file_name); // рекурсивный запуск для поиска новых INSERT блоков в загруженном шаблоне $preassigned_content = $this->do_insert_blocks($preassigned_content, $tpl_path . $insert_path_prefix, $tpl_file_name); // замена текущего INSERT блока сформированными данными $tpl_content = $this->replace_block('INSERT', $tpl_content, $tpl_file_name, $preassigned_content); } return $tpl_content; }