function get_breadcrumb($page_id, $level) { global $ft, $rewrite, $pages_sort, $pages_id; $query = sprintf("\r\n SELECT \r\n id, \r\n parent_id, \r\n title \r\n FROM \r\n %1\$s \r\n WHERE \r\n id = '%2\$d' \r\n AND \r\n published = 'Y' \r\n ORDER BY \r\n id \r\n ASC", TABLE_PAGES, $page_id); $db = new DB_SQL(); $db->query($query); while ($db->next_record()) { $page_id = $db->f("id"); $parent_id = $db->f("parent_id"); $page_name = $db->f("title"); $page_link = (bool) $rewrite ? '1,' . $page_id . ',5,item.html' : 'index.php?p=5&id=' . $page_id . ''; $ft->assign(array('PAGE_TITLE' => $page_name, 'PAGE_ID' => $page_id, 'CLASS' => "child", 'PARENT' => str_repeat(' ', $level), 'PAGE_LINK' => $page_link)); $pages_sort[] = $page_name; $pages_id[] = $page_id; get_breadcrumb($parent_id, $level + 2); } }
function get_breadcrumb($cate_id, $breadcrumb_str = "") { $db = init_db(); $breadcrumb_result = $db->get_results("SELECT cate_id,cate_name,parent_id FROM `plu_product_category` WHERE cate_id = '{$cate_id}' "); //print_r($breadcrumb_result); if (isset($breadcrumb_result)) { foreach ($breadcrumb_result as $row) { //echo $row->cate_name; if ($breadcrumb_str == "") { $breadcrumb_str = " > " . $row->cate_name; } else { $breadcrumb_str = " > " . "<a href='" . WEBROOT . "/index.php?cmsid=2&cate_id={$row->cate_id}'>{$row->cate_name}</a>" . $breadcrumb_str; } if ($row->parent_id != -1) { $breadcrumb_str = get_breadcrumb($row->parent_id, $breadcrumb_str); } } } return $breadcrumb_str; }
/** * Обработка тега модуля * * @param int $sysblock_id идентификатор системного блока */ function mod_sysblock($sysblock_id) { global $AVE_DB; if (is_numeric($sysblock_id)) { $cache_file = BASE_DIR . '/cache/module/sysblock-' . $sysblock_id . '.cache'; if (!file_exists(dirname($cache_file))) { mkdir(dirname($cache_file), 0766, true); } if (file_exists($cache_file)) { $return = file_get_contents($cache_file); } else { $return = $AVE_DB->Query("\r\n SELECT sysblock_text\r\n FROM " . PREFIX . "_modul_sysblock\r\n WHERE id = '" . $sysblock_id . "'\r\n LIMIT 1\r\n ")->GetCell(); file_put_contents($cache_file, $return); } // парсим остальные теги основного шаблона $search = array('[tag:mediapath]', '[tag:path]', '[tag:home]', '[tag:docid]', '[tag:breadcrumb]'); $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, get_home_link(), get_current_document_id(), get_breadcrumb()); $return = str_replace($search, $replace, $return); $return = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $return); // парсим остальные теги основного шаблона eval('?>' . $return . '<?'); } }
/** * Обработка тега системного блока * * @param int $id идентификатор системного блока */ function parse_sysblock($id) { global $AVE_DB, $AVE_Core; $gen_time = microtime(); if (is_array($id)) { $id = $id[1]; } if (is_numeric($id)) { $eval_sysblock = false; if ($id < 0) { $id = abs($id); $eval_sysblock = true; } $cache_file = BASE_DIR . '/cache/sql/sysblock-' . $id . '.cache'; if (!file_exists(dirname($cache_file))) { mkdir(dirname($cache_file), 0766, true); } if (file_exists($cache_file)) { $return = file_get_contents($cache_file); } else { $return = $AVE_DB->Query("\n SELECT sysblock_text\n FROM " . PREFIX . "_sysblocks\n WHERE id = '" . $id . "'\n LIMIT 1\n ")->GetCell(); file_put_contents($cache_file, $return); } // парсим остальные теги основного шаблона $search = array('[tag:mediapath]', '[tag:path]', '[tag:home]', '[tag:docid]', '[tag:breadcrumb]'); $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, get_home_link(), get_current_document_id(), get_breadcrumb()); $return = str_replace($search, $replace, $return); $return = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $return); if ($eval_sysblock) { $return = eval2var('?' . '>' . $return . '<' . '?'); } $gen_time = microtime() - $gen_time; $GLOBALS['block_generate'][] = array('SYSBLOCK_' . $id => $gen_time); return $return; } }
<?php /* * * Breadcrumb for author archive * * */ ?> <p><?php global $post; print get_breadcrumb(); ?> » Posts by: <?php echo get_the_author(); ?> </p>
<?php while (have_posts()) { the_post(); ?> <!-- Page Title --> <div class="page-title-breadcrumbs"> <h1 class="page-title"><span><?php the_title(); ?> </span></h1> <?php if (get_custom_field('show_breadcrumbs') == 'Yes') { ?> <div class="breadcrumbs">| <?php echo get_breadcrumb(); ?> </div><?php } ?> </div> <hr class="page-title-hr" /> <!-- Page Caption Section --> <?php if (get_custom_field('page_caption') . get_custom_field('page_background_image')) { ?> <div class="<?php echo $layout_class; ?>
// $content['body_id'] = $content["cat_id"]; $content['body_id'] = ''; // check if current level is a redirect level if (!empty($content['struct'][$content["cat_id"]]['acat_redirect'])) { $redirect = get_redirect_link($content['struct'][$content["cat_id"]]['acat_redirect']); headerRedirect($redirect['link'], 301); } // Check if curret level is forced for SSL if (!PHPWCMS_SSL && (!empty($phpwcms['site_ssl_mode']) || !empty($content['struct'][$content["cat_id"]]['acat_ssl']))) { headerRedirect($phpwcms['site_ssl_url'] . (count($_getVar) ? rel_url() : ''), 301); } //try to find current tree depth $LEVEL_ID = array(); $LEVEL_KEY = array(); $LEVEL_STRUCT = array(); $level_ID_array = get_breadcrumb($content["cat_id"], $content['struct']); $level_count = 0; foreach ($level_ID_array as $key => $value) { $LEVEL_ID[$level_count] = $key; $LEVEL_KEY[$key] = $level_count; $LEVEL_STRUCT[$level_count] = $content['struct'][$key]['acat_name']; if ($PERMIT_ACCESS && $content['struct'][$key]['acat_regonly']) { $PERMIT_ACCESS = false; // only users have been logged in get access } $level_count++; } define('PERMIT_ACCESS', $PERMIT_ACCESS); // frontend login check _checkFrontendUserAutoLogin(); // read the template information for page based on structure
<?php /** * The template for displaying Search Results for HMC Experts. * * Modified code to adapt display if we're search for HMC Experts. * */ get_header(); ?> <div id="breadcrumb"> <p><?php get_breadcrumb(); ?> <a href="<?php bloginfo('url'); ?> /hmc-experts/">Harvey Mudd College Experts</a> » Experts Search Results</p> </div> </header> <div id="content-wrapper"> <div> <?php get_template_part('nav', 'left'); ?> <main role="main">
/** * Метод, предназанченный для сборки всей страницы в единое целое. * * @param int $id идентификатор документа * @param int $rub_id идентификатор рубрики */ function coreSiteFetch($id, $rub_id = '') { global $AVE_DB; // Если происходит вызов модуля, получаем соответствующие мета-теги и получаем шаблон модуля if (!empty($_REQUEST['module'])) { $out = $this->_coreModuleMetatagsFetch(); $out = $this->_coreDocumentTemplateGet('', '', $this->_coreModuleTemplateGet()); } else { if (!isset($this->curentdoc->Id) && !$this->_coreCurrentDocumentFetch($id, UGROUP)) { // Определяем документ с 404 ошиюкой, в случае, если документ не найден if ($this->_corePageNotFoundFetch(PAGE_NOT_FOUND_ID, UGROUP)) { $_REQUEST['id'] = $_GET['id'] = $id = PAGE_NOT_FOUND_ID; } } // проверяем параметры публикации документа if (!$this->_coreDocumentIsPublished()) { $this->_coreErrorPage404(); } // Определяем права доступа к документам рубрики define('RUB_ID', !empty($rub_id) ? $rub_id : $this->curentdoc->rubric_id); $this->_coreRubricPermissionFetch(RUB_ID); if (!(isset($_SESSION[RUB_ID . '_docread']) && $_SESSION[RUB_ID . '_docread'] == 1 || isset($_SESSION[RUB_ID . '_alles']) && $_SESSION[RUB_ID . '_alles'] == 1)) { // читать запрещено - извлекаем ругательство и отдаём вместо контента $main_content = get_settings('message_forbidden'); } else { if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) { // увеличиваем счетчик версий для печати $AVE_DB->Query("\n\t\t\t\t\t\tUPDATE " . PREFIX . "_documents\n\t\t\t\t\t\tSET document_count_print = document_count_print+1\n\t\t\t\t\t\tWHERE Id = '" . $id . "'\n\t\t\t\t\t"); } else { if (!isset($_SESSION['doc_view'][$id])) { // увеличиваем счетчик просмотров (1 раз в пределах сессии) $AVE_DB->Query("\n\t\t\t\t\t\t\tUPDATE " . PREFIX . "_documents\n\t\t\t\t\t\t\tSET document_count_view = document_count_view+1\n\t\t\t\t\t\t\tWHERE Id = '" . $id . "'\n\t\t\t\t\t\t"); $_SESSION['doc_view'][$id] = time(); } $curdate = mktime(0, 0, 0, date("m"), date("d"), date("Y")); if (!isset($_SESSION['doc_view_dayly[' . $curdate . '][' . $id . ']'])) { // и подневный счетчик просмотров тоже увеличиваем $curdate = mktime(0, 0, 0, date("m"), date("d"), date("Y")); $AVE_DB->Query("\n UPDATE\n " . PREFIX . "_view_count\n SET\n count = count + 1\n WHERE\n document_id = '" . $id . "' AND\n day_id = '" . $curdate . "'\n "); if (!$AVE_DB->_handle->affected_rows) { $AVE_DB->Query("\n INSERT INTO " . PREFIX . "_view_count (\n document_id,\n day_id,\n count\n )\n VALUES (\n '" . $id . "', '" . $curdate . "', '1'\n )\n "); } $_SESSION['doc_view_dayly[' . $curdate . '][' . $id . ']'] = time(); } } if (CACHE_DOC_TPL && empty($_POST) && !(isset($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) { // кэширование разрешено // извлекаем скомпилированный шаблон документа из кэша $main_content = $AVE_DB->Query("\n\t\t\t\t\t\tSELECT compiled\n\t\t\t\t\t\tFROM " . PREFIX . "_rubric_template_cache\n\t\t\t\t\t\tWHERE hash = '" . $this->_get_cache_hash() . "'\n\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t")->GetCell(); } else { // кэширование запрещено $main_content = false; } if (empty($main_content)) { // кэш пустой или отключен, извлекаем и компилируем шаблон if (!empty($this->curentdoc->rubric_template)) { $rubTmpl = $this->curentdoc->rubric_template; } else { $rubTmpl = $AVE_DB->Query("\n\t\t\t\t\t\t\tSELECT rubric_template\n\t\t\t\t\t\t\tFROM " . PREFIX . "_rubrics\n\t\t\t\t\t\t\tWHERE Id = '" . RUB_ID . "'\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t")->GetCell(); } $rubTmpl = trim($rubTmpl); if (empty($rubTmpl)) { // не задан шаблон рубрики $main_content = $this->_rubric_template_empty; } else { // парсим теги полей в шаблоне документа $main_content = preg_replace_callback('/\\[tag:fld:([a-zA-Z0-9-_]+)\\]/', 'document_get_field', $rubTmpl); $main_content = preg_replace_callback('/\\[tag:([r|c|f|t]\\d+x\\d+r*):(.+?)]/', 'callback_make_thumbnail', $main_content); // удаляем ошибочные теги полей $main_content = preg_replace('/\\[tag:fld:\\d*\\]/', '', $main_content); if (CACHE_DOC_TPL && empty($_POST) && !(isset($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) { // кэширование разрешено // сохраняем скомпилированный шаблон в кэш $AVE_DB->Query("\n\t\t\t\t\t\t\t\tINSERT " . PREFIX . "_rubric_template_cache\n\t\t\t\t\t\t\t\tSET\n\t\t\t\t\t\t\t\t\thash = '" . $this->_get_cache_hash() . "',\n\t\t\t\t\t\t\t\t\trub_id = '" . RUB_ID . "',\n\t\t\t\t\t\t\t\t\tgrp_id = '" . UGROUP . "',\n\t\t\t\t\t\t\t\t\tdoc_id = '" . $id . "',\n\t\t\t\t\t\t\t\t\tcompiled = '" . addslashes($main_content) . "'\n\t\t\t\t\t\t\t"); } } } $main_content = preg_replace('/\\[tag:date:([a-zA-Z0-9-]+)\\]/e', "RusDate(date('\$1', " . $this->curentdoc->document_published . "))", $main_content); $main_content = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:docauthorid]', $this->curentdoc->document_author_id, $main_content); $main_content = str_replace('[tag:docauthor]', get_username_by_id($this->curentdoc->document_author_id), $main_content); } $out = str_replace('[tag:maincontent]', $main_content, $this->_coreDocumentTemplateGet(RUB_ID)); } // /вывод документа //Работа с условиями /* $out = preg_replace('/\[tag:if_exp:?(.*)\]/u', '<?php $my_exp000=true; $my_exp0001=\'$my_exp000=\'. str_replace(\'#var#\',\'$\',<<<BLOCK $1; BLOCK ); @eval($my_exp0001); if($my_exp000==true) { ?>', $out); $out = str_replace('[tag:if_exp_else]', '<?php }else{ ?>', $out); $out = str_replace('[tag:/if_exp]', '<?php } ?>', $out); */ // Тут мы вводим в хеадер иньекцию скриптов. if (defined('RUB_ID')) { $rubheader = $AVE_DB->Query("\n\t\t\t\t\t\t\tSELECT rubric_header_template\n\t\t\t\t\t\t\tFROM " . PREFIX . "_rubrics\n\t\t\t\t\t\t\tWHERE Id = '" . RUB_ID . "'\n\t\t\t\t\t\t\tLIMIT 1\n\t\t\t\t\t\t", CACHE_LIFETIME)->GetCell(); $out = str_replace('[tag:rubheader]', $rubheader . '[tag:rubheader]', $out); } $out = preg_replace('/\\[tag:rfld:([a-zA-Z0-9-_]+)]\\[(more|esc|img|[0-9-]+)]/e', "request_get_document_field(\"\$1\", {$id}, \"\$2\")", $out); // Если в запросе пришел параметр print, т.е. страница для печати, парсим контент, который обрамлен // тегами только для печати if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) { $out = str_replace(array('[tag:if_print]', '[/tag:if_print]'), '', $out); $out = preg_replace('/\\[tag:if_notprint\\](.*?)\\[\\/tag:if_notprint\\]/si', '', $out); } else { // В противном случае наоборот, парсим только тот контент, который предназначен НЕ для печати $out = preg_replace('/\\[tag:if_print\\](.*?)\\[\\/tag:if_print\\]/si', '', $out); $out = str_replace(array('[tag:if_notprint]', '[/tag:if_notprint]'), '', $out); } // получаем из шаблона системный тег, определяющий название темы дизайна $match = ''; preg_match('/\\[tag:theme:(\\w+)]/', $out, $match); define('THEME_FOLDER', empty($match[1]) ? DEFAULT_THEME_FOLDER : $match[1]); $out = preg_replace('/\\[tag:theme:(.*?)]/', '', $out); // парсим теги модулей $out = $this->coreModuleTagParse($out); if (isset($_REQUEST['module']) && !(isset($this->install_modules[$_REQUEST['module']]) && '1' == $this->install_modules[$_REQUEST['module']]->ModuleStatus)) { display_notice($this->_module_error); } // парсим теги системных блоков $out = preg_replace_callback('/\\[tag:sysblock:([0-9-]+)\\]/', 'parse_sysblock', $out); // парсим теги системы внутренних запросов $out = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $out); // парсим теги навигации $out = preg_replace_callback('/\\[tag:navigation:(\\d+):?([0-9,]*)\\]/', 'parse_navigation', $out); // парсим теги скрытого текста $out = parse_hide($out); // парсим остальные теги основного шаблона $search = array('[tag:mediapath]', '[tag:path]', '[tag:sitename]', '[tag:document]', '[tag:alias]', '[tag:home]', '[tag:robots]', '[tag:canonical]', '[tag:docid]', '[tag:breadcrumb]'); $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, htmlspecialchars(get_settings('site_name'), ENT_QUOTES), get_redirect_link('print'), @$this->curentdoc->document_alias, get_home_link(), isset($this->curentdoc->document_meta_robots) ? $this->curentdoc->document_meta_robots : '', canonical($_SERVER['REQUEST_URI']), isset($this->curentdoc->Id) ? $this->curentdoc->Id : '', get_breadcrumb()); if (defined('MODULE_CONTENT')) { // парсинг тегов при выводе из модуля $search[] = '[tag:maincontent]'; $replace[] = MODULE_CONTENT; $search[] = '[tag:title]'; $replace[] = htmlspecialchars(defined('MODULE_SITE') ? MODULE_SITE : '', ENT_QUOTES); $search[] = '[tag:description]'; $replace[] = htmlspecialchars(defined('MODULE_DESCRIPTION') ? MODULE_DESCRIPTION : '', ENT_QUOTES); $search[] = '[tag:keywords]'; $replace[] = htmlspecialchars(defined('MODULE_KEYWORDS') ? MODULE_KEYWORDS : '', ENT_QUOTES); } else { $search[] = '[tag:keywords]'; $replace[] = isset($this->curentdoc->document_meta_keywords) ? htmlspecialchars($this->curentdoc->document_meta_keywords, ENT_QUOTES) : ''; $search[] = '[tag:description]'; $replace[] = isset($this->curentdoc->document_meta_description) ? htmlspecialchars($this->curentdoc->document_meta_description, ENT_QUOTES) : ''; $search[] = '[tag:title]'; $replace[] = htmlspecialchars(pretty_chars($this->curentdoc->document_title), ENT_QUOTES); } $search[] = '[tag:maincontent]'; $replace[] = ''; $search[] = '[tag:printlink]'; $replace[] = get_print_link(); $search[] = '[tag:version]'; $replace[] = APP_INFO; $search[] = '[tag:docviews]'; $replace[] = isset($this->curentdoc->document_count_view) ? $this->curentdoc->document_count_view : ''; // парсим тизер документа $out = preg_replace('/\\[tag:teaser:(\\d+)\\]/e', "showteaser(\$1)", $out); if (defined('RUB_ID')) { $out = preg_replace('/\\[tag:docauthoravatar:(\\d+)\\]/e', "getAvatar(" . intval($this->curentdoc->document_author_id) . ",\"\$1\")", $out); } if (defined('RUB_ID')) { $out = preg_replace('/\\[tag:lang:([a-zA-Z0-9-_]+)\\]/', '<?php if($AVE_Core->curentdoc->document_lang=="$1") { ?>', $out); } else { $out = preg_replace('/\\[tag:lang:([a-zA-Z0-9-_]+)\\]/', '<?php if($_SESSION["user_language"]=="$1") { ?>', $out); } $out = str_replace('[tag:/lang]', '<?php } ?>', $out); // парсим остальные теги основного шаблона $out = str_replace($search, $replace, $out); unset($search, $replace); // парсим теги для combine.php $out = preg_replace_callback('/\\[tag:(css|js):([^ :\\/]+):?(\\S+)*\\]/', array($this, '_parse_combine'), $out); // ЧПУ $out = rewrite_link($out); echo $out; }
function css_level_list(&$struct, $struct_path, $level, $parent_level_name = '', $parent_level = 1, $class = '') { // returns list <div><ul><li></li></ul></div> of the current structure level // if $parent_level=1 the first list entry will be the parent level // $parent_level=0 - only the list of all levels in this structure // if $parent_leve_name != "" then it uses the given string // predefined class for this menu is "list_level" if (!trim($class)) { $class = 'list_level'; } $parent_level_name = trim($parent_level_name); $level = intval($level); $parent_level = intval($parent_level); $activated = 0; $css_list = ''; //returns the complete level of NON hidden categories $level_struct = return_struct_level($struct, $level); $breadcrumb = get_breadcrumb(key($struct_path), $struct); foreach ($level_struct as $key => $value) { if (!$level_struct[$key]["acat_redirect"]) { $link = 'index.php?'; if ($level_struct[$key]["acat_alias"]) { $link .= html_specialchars($level_struct[$key]["acat_alias"]); } else { $link .= 'id=' . $key; } $redirect['target'] = ''; } else { $redirect = get_redirect_link($level_struct[$key]["acat_redirect"], ' ', ''); $link = $redirect['link']; } $css_list .= ' <li'; $liclass = trim((empty($breadcrumb[$key]) ? '' : 'active ') . $level_struct[$key]["acat_class"]); $css_list .= empty($liclass) ? '' : ' class="' . $liclass . '"'; $css_list .= '><a href="' . $link . '"' . $redirect['target'] . '>'; $css_list .= html_specialchars($level_struct[$key]["acat_name"]); $css_list .= '</a></li>' . LF; } if ($parent_level) { if (!$struct[$level]["acat_redirect"]) { $link = 'index.php?'; if ($struct[$level]["acat_alias"]) { $link .= html_specialchars($struct[$level]["acat_alias"]); } else { $link .= 'id=' . $level; } $redirect['target'] = ''; } else { $redirect = get_redirect_link($struct[$level]["acat_redirect"], ' ', ''); $link = $redirect['link']; } $css_list_home = ' <li class="' . trim(($GLOBALS['aktion'][0] == $level ? 'active' : 'parent') . ' ' . $struct[$level]["acat_class"]) . '">'; $css_list_home .= '<a href="' . $link . '"' . $redirect['target'] . '>'; $css_list_home .= html_specialchars(!$parent_level_name ? $struct[$level]["acat_name"] : $parent_level_name); $css_list_home .= '</a></li>' . LF; $css_list = $css_list_home . $css_list; } if ($css_list) { $css_list = LF . '<ul class="' . $class . '">' . LF . $css_list . '</ul>' . LF; } return $css_list; }
$id = $db->f("id"); $parent_id = $db->f("parent_id"); $image = $db->f("image"); $assigned_tpl = $db->f("assigned_tpl"); // dynamiczne definiowanie szablonu, jaki ma byc // przydzielony do konkretnej podstrony Core $ft->define($assigned_tpl, $assigned_tpl . '_page.tpl'); $text = highlighter($text, '<code>', '</code>'); $ft->assign(array('PAGE_TITLE' => $title, 'PAGE_TEXT' => $text, 'PAGE_ID' => $id, 'PAGINATED' => false, 'MOVE_BACK' => false, 'MOVE_FORWARD' => false)); // Parsowanie nazw stron rodzicielskich::parent $ft->define_dynamic("breadcrumb_row", "pages_view"); // tablice przechowujace tytul i id strony $pages_sort[] = $title; $pages_id[] = $id; // funkcja pobieraj±ca rekurencyjnie strony dziedzicz±ce::child get_breadcrumb($parent_id, 2); function cmp($pages_sort, $b) { if ($pages_sort == $b) { return 0; } return $pages_sort > $b ? -1 : 1; } // sortujemy tablice w porzadku odwrotnym uksort($pages_sort, "cmp"); uksort($pages_id, "cmp"); // parsujemy menu na podstawie tablicy foreach ($pages_sort as $pid => $ptitle) { if ((bool) $rewrite) { $page_link = sprintf('1,%s,5,item.html', $pages_id[$pid]); } else {
/** * Метод, предназанченный для сборки всей страницы в единое целое. * * @param int $id идентификатор документа * @param int $rub_id идентификатор рубрики */ function coreSiteFetch($id, $rub_id = '') { global $AVE_DB; // Если происходит вызов модуля, получаем соответствующие мета-теги и получаем шаблон модуля if (!empty($_REQUEST['module'])) { $out = $this->_coreModuleMetatagsFetch(); $out = $this->_coreDocumentTemplateGet('', '', $this->_coreModuleTemplateGet()); } else { if (!isset($this->curentdoc->Id) && !$this->_coreCurrentDocumentFetch($id, UGROUP)) { // Определяем документ с 404 ошиюкой, в случае, если документ не найден if ($this->_corePageNotFoundFetch(PAGE_NOT_FOUND_ID, UGROUP)) { $_REQUEST['id'] = $_GET['id'] = $id = PAGE_NOT_FOUND_ID; } } // проверяем параметры публикации документа if (!$this->_coreDocumentIsPublished()) { $this->_coreErrorPage404(); } // Определяем права доступа к документам рубрики define('RUB_ID', !empty($rub_id) ? $rub_id : $this->curentdoc->rubric_id); $this->_coreRubricPermissionFetch(RUB_ID); if (!(isset($_SESSION[RUB_ID . '_docread']) && $_SESSION[RUB_ID . '_docread'] == 1 || isset($_SESSION[RUB_ID . '_alles']) && $_SESSION[RUB_ID . '_alles'] == 1)) { // читать запрещено - извлекаем ругательство и отдаём вместо контента $main_content = get_settings('message_forbidden'); } else { if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) { // увеличиваем счетчик версий для печати $AVE_DB->Query("\r\n\t\t\t\t\t\tUPDATE " . PREFIX . "_documents\r\n\t\t\t\t\t\tSET document_count_print = document_count_print+1\r\n\t\t\t\t\t\tWHERE Id = '" . $id . "'\r\n\t\t\t\t\t"); } else { if (!isset($_SESSION['doc_view[' . $id . ']'])) { // увеличиваем счетчик просмотров (1 раз в пределах сессии) $AVE_DB->Query("\r\n\t\t\t\t\t\t\tUPDATE " . PREFIX . "_documents\r\n\t\t\t\t\t\t\tSET document_count_view = document_count_view+1\r\n\t\t\t\t\t\t\tWHERE Id = '" . $id . "'\r\n\t\t\t\t\t\t"); $_SESSION['doc_view[' . $id . ']'] = 1; } } if (CACHE_DOC_TPL && empty($_POST) && !(isset($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) { // кэширование разрешено // извлекаем скомпилированный шаблон документа из кэша $main_content = $AVE_DB->Query("\r\n\t\t\t\t\t\tSELECT compiled\r\n\t\t\t\t\t\tFROM " . PREFIX . "_rubric_template_cache\r\n\t\t\t\t\t\tWHERE hash = '" . $this->_get_cache_hash() . "'\r\n\t\t\t\t\t\tLIMIT 1\r\n\t\t\t\t\t")->GetCell(); } else { // кэширование запрещено $main_content = false; } if (empty($main_content)) { // кэш пустой или отключен, извлекаем и компилируем шаблон if (!empty($this->curentdoc->rubric_template)) { $rubTmpl = $this->curentdoc->rubric_template; } else { $rubTmpl = $AVE_DB->Query("\r\n\t\t\t\t\t\t\tSELECT rubric_template\r\n\t\t\t\t\t\t\tFROM " . PREFIX . "_rubrics\r\n\t\t\t\t\t\t\tWHERE Id = '" . RUB_ID . "'\r\n\t\t\t\t\t\t\tLIMIT 1\r\n\t\t\t\t\t\t")->GetCell(); } $rubTmpl = trim($rubTmpl); if (empty($rubTmpl)) { // не задан шаблон рубрики $main_content = $this->_rubric_template_empty; } else { // парсим теги полей в шаблоне документа $main_content = preg_replace_callback('/\\[tag:fld:(\\d+)\\]/', 'document_get_field', $rubTmpl); // удаляем ошибочные теги полей $main_content = preg_replace('/\\[tag:fld:\\d*\\]/', '', $main_content); if (CACHE_DOC_TPL && empty($_POST) && !(isset($_SESSION['user_adminmode']) && $_SESSION['user_adminmode'] == 1)) { // кэширование разрешено // сохраняем скомпилированный шаблон в кэш $AVE_DB->Query("\r\n\t\t\t\t\t\t\t\tINSERT " . PREFIX . "_rubric_template_cache\r\n\t\t\t\t\t\t\t\tSET\r\n\t\t\t\t\t\t\t\t\thash = '" . $this->_get_cache_hash() . "',\r\n\t\t\t\t\t\t\t\t\trub_id = '" . RUB_ID . "',\r\n\t\t\t\t\t\t\t\t\tgrp_id = '" . UGROUP . "',\r\n\t\t\t\t\t\t\t\t\tdoc_id = '" . $id . "',\r\n\t\t\t\t\t\t\t\t\tcompiled = '" . addslashes($main_content) . "'\r\n\t\t\t\t\t\t\t"); } } } $main_content = str_replace('[tag:docdate]', pretty_date(strftime(DATE_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:doctime]', pretty_date(strftime(TIME_FORMAT, $this->curentdoc->document_published)), $main_content); $main_content = str_replace('[tag:docauthor]', get_username_by_id($this->curentdoc->document_author_id), $main_content); } $out = str_replace('[tag:maincontent]', $main_content, $this->_coreDocumentTemplateGet(RUB_ID)); } // /вывод документа // Если в запросе пришел параметр print, т.е. страница для печати, парсим контент, который обрамлен // тегами только для печати if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) { $out = str_replace(array('[tag:if_print]', '[/tag:if_print]'), '', $out); $out = preg_replace('/\\[tag:if_notprint\\](.*?)\\[\\/tag:if_notprint\\]/si', '', $out); } else { // В противном случае наоборот, парсим только тот контент, который предназначен НЕ для печати $out = preg_replace('/\\[tag:if_print\\](.*?)\\[\\/tag:if_print\\]/si', '', $out); $out = str_replace(array('[tag:if_notprint]', '[/tag:if_notprint]'), '', $out); } // получаем из шаблона системный тег, определяющий название темы дизайна $match = ''; preg_match('/\\[tag:theme:(\\w+)]/', $out, $match); define('THEME_FOLDER', empty($match[1]) ? DEFAULT_THEME_FOLDER : $match[1]); $out = preg_replace('/\\[tag:theme:(.*?)]/', '', $out); // парсим теги модулей $out = $this->coreModuleTagParse($out); if (isset($_REQUEST['module']) && !(isset($this->install_modules[$_REQUEST['module']]) && '1' == $this->install_modules[$_REQUEST['module']]->Status)) { display_notice($this->_module_error); } // парсим теги системы внутренних запросов $out = preg_replace_callback('/\\[tag:request:(\\d+)\\]/', 'request_parse', $out); // парсим теги скрытого текста $out = parse_hide($out); // парсим остальные теги основного шаблона $search = array('[tag:mediapath]', '[tag:path]', '[tag:sitename]', '[tag:document]', '[tag:home]', '[tag:robots]', '[tag:docid]', '[tag:breadcrumb]'); $replace = array(ABS_PATH . 'templates/' . THEME_FOLDER . '/', ABS_PATH, htmlspecialchars(get_settings('site_name'), ENT_QUOTES), get_redirect_link('print'), get_home_link(), isset($this->curentdoc->document_meta_robots) ? $this->curentdoc->document_meta_robots : '', isset($this->curentdoc->Id) ? $this->curentdoc->Id : '', get_breadcrumb()); if (defined('MODULE_CONTENT')) { // парсинг тегов при выводе из модуля $search[] = '[tag:maincontent]'; $replace[] = MODULE_CONTENT; $search[] = '[tag:title]'; $replace[] = htmlspecialchars(defined('MODULE_SITE') ? MODULE_SITE : '', ENT_QUOTES); $search[] = '[tag:description]'; $replace[] = htmlspecialchars(defined('MODULE_DESCRIPTION') ? MODULE_DESCRIPTION : '', ENT_QUOTES); $search[] = '[tag:keywords]'; $replace[] = htmlspecialchars(defined('MODULE_KEYWORDS') ? MODULE_KEYWORDS : '', ENT_QUOTES); } else { $search[] = '[tag:keywords]'; $replace[] = isset($this->curentdoc->document_meta_keywords) ? htmlspecialchars($this->curentdoc->document_meta_keywords, ENT_QUOTES) : ''; $search[] = '[tag:description]'; $replace[] = isset($this->curentdoc->document_meta_description) ? htmlspecialchars($this->curentdoc->document_meta_description, ENT_QUOTES) : ''; $search[] = '[tag:title]'; $replace[] = htmlspecialchars(pretty_chars($this->curentdoc->document_title), ENT_QUOTES); } $search[] = '[tag:maincontent]'; $replace[] = ''; $search[] = '[tag:printlink]'; $replace[] = get_print_link(); $search[] = '[tag:version]'; $replace[] = APP_INFO; $search[] = '[tag:docviews]'; $replace[] = isset($this->curentdoc->document_count_view) ? $this->curentdoc->document_count_view : ''; $out = str_replace($search, $replace, $out); unset($search, $replace); // /парсим остальные теги основного шаблона // ЧПУ $out = rewrite_link($out); echo $out; }
<?php /* * * Breadcrumb for Page content type * * */ ?> <p><?php get_breadcrumb() . the_title(); ?> </p>
function ace_breadcrumb() { if (get_option('ace_enable_breadcrumb')) { echo get_breadcrumb(); } }