Далее в нем создадим экземпляры класса DataBase() и FrontPage(). В классе Modules() создадим метод getContent(), который будет содержать ряд метод которые необходимы для замены конструкций на части шаблонов. Класс FrontPage() создадим в файле frontpage.php наследовав его от класса Modules(). В данном классе пропишем ряд наследуемых методов. Методы класса FrontPage(): 1) Метод getTitle() - для отображения заголовка (protected) 2) Метод getMetaDesc() - для отображения мета описания (protected) 3) Метод getMetaKey() - для отображения ключевых слов (protected) 4) Метод getTop() - для отображения верхней части области контента (отображает главную статью[protected]) 5) Метод getMiddle() - для отображения средней части контента (отображает статьи в виде блока) 6) Метод getBottom() - для отображения нижней части сайта (отображает пагинацию[protected]) Даалее в файле index.php создадим объект $content класса FrontPage() и у него вызовем унаследованный от класса Modules() метод getContent(). */ mb_internal_encoding("UTF-8"); require_once "lib/database.php"; require_once "lib/frontpage.php"; /*Создаем объект БД, проверяем параметры $_GET чтобы знать какая страница*/ $db = new DataBase(); $view = $GET["view"]; switch ($view) { case "": $content = new FrontPage($db); break; default: exit; } echo $content->getContent(); ?> ?>
<?php namespace CLIENT_NAMESPACE; /** * Class FrontPage * @package CLIENT_NAMESPACE * * Filters and actions for the front-page */ class FrontPage { public static function init() { add_action('wp', function () { if (is_front_page()) { self::hook_wordpress(); } }); } public static function hook_wordpress() { } } FrontPage::init();
</div> <h3>Section 4</h3> <div id="four_para"> <p>Maecenas hendrerit diam ac dui malesuada molestie. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris facilisis magna eget gravida tempor. Nunc ut libero nec nisl aliquet pretium. Nulla blandit ullamcorper augue, vitae gravida tortor finibus vel. Ut elementum ipsum vitae nibh faucibus, non vulputate orci facilisis. Integer neque enim, volutpat vel feugiat non, viverra nec ligula. Nunc eleifend pretium egestas. Morbi porta ante id enim rutrum ullamcorper. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec scelerisque rutrum risus, nec pretium magna volutpat id. Praesent vehicula, metus ac laoreet varius, augue enim congue felis, non accumsan nisi metus sed felis. Pellentesque bibendum dignissim pulvinar. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin diam sem, consequat elementum magna nec, placerat hendrerit nisl. </div> <h3>Section 5</h3> <div id="five_para"> <p>Maecenas odio lorem, scelerisque in nulla ac, auctor congue turpis. Nam placerat mauris a vestibulum vulputate. Etiam scelerisque urna sagittis, gravida dolor sed, viverra mauris. Fusce ligula nulla, pharetra ac odio nec, sollicitudin ultricies ante. Nunc euismod, ligula sed venenatis commodo, risus erat mollis sapien, accumsan accumsan ex nisl in tellus. Duis sed dapibus mi. Praesent ultrices blandit auctor. Aenean condimentum justo justo, quis rutrum tortor maximus non. Nulla accumsan vestibulum tortor sed pharetra. Aliquam nec tempus libero. Donec interdum tortor ornare tortor consequat suscipit. Integer tincidunt justo augue, eget imperdiet nisi vestibulum in. Vivamus ut consectetur metus. In hac habitasse platea dictumst. </div> </div> <?php } protected function RenderCustomFooter(\mysqli $objArchon) { ?> <div style="border: 1px solid black; background-color: #8080ff; padding: 40px; text-align: center;"> Developed by Simon Mitchell for <a href="http://www.sunsetcoders.com/" target="_blank">Sunset Coders</a>. </div> <?php } } try { $objSettings = new Rendering\ArchonPageSettings(); $objSettings->txtTitle = "Molon Labe"; $objArchon = DBUtils\DBFactory::GetConnection(); $objFrontPage = new FrontPage($objArchon, $objSettings); $objFrontPage->RenderPage($objArchon); } catch (ExceptionHandlers\ArchonDBException $objException) { $objException->Display(true); } $objArchon->close();
/** * Template filter callback for Bootstrap skin. * Takes an associative array of data set from a SkinTemplate-based * class, and a wrapper for MediaWiki's localization database, and * outputs a formatted page. * * @access private */ public function execute() { global $wgRequest, $wgUser, $wgSitename, $wgSitenameshort, $wgCopyrightLink, $wgCopyright, $wgBootstrap, $wgArticlePath, $wgGoogleAnalyticsID, $wgSiteCSS; global $wgEnableUploads; global $wgLogo, $wgHuijiPrefix, $wgFavicon; global $wgTOCLocation; global $wgNavBarClasses; global $wgSubnavBarClasses; global $wgParser, $wgTitle, $wgEmailAuthentication; $wgFavicon = (new wSiteAvatar($wgHuijiPrefix, 'l'))->getAvatarImage(); $this->skin = $this->data['skin']; $action = $wgRequest->getText('action'); $url_prefix = str_replace('$1', '', $wgArticlePath); $NS = $wgTitle->getNamespace(); // Suppress warnings to prevent notices about missing indexes in $this->data wfSuppressWarnings(); $this->html('headelement'); if ($wgUser->isLoggedIn()) { $usf = new UserSiteFollow(); $followed = $usf->checkUserSiteFollow($wgUser, $wgHuijiPrefix) !== false; } else { $followed = false; } ?> <!--[if lt IE 8]> <p class="alert alert-warning alert-dismissible browsehappy"> 你正在使用一个<strong>过时</strong>的浏览器。请<a class="link" href="http://browsehappy.com">升级你的浏览器</a>以查看此页面。</p> </p> <![endif]--> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-10190882-3', 'auto'); ga('send', 'pageview'); </script> <!-- <script type="text/javascript" src="/resources/qc/qc_loader.js" data-appid="101264508" charset="utf-8"></script>--> <script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=2445834038" type="text/javascript" charset="utf-8"></script> <div id="wrapper" class="toggled"> <script> var menutoggle; document.domain = "huiji.wiki"; menutoggle = localStorage.getItem("menu-toggle"); document.getElementById('wrapper').className = menutoggle; </script> <?php echo $this->showHeader(); ?> <script> var classlst; var x = 0; classlst = document.getElementById('wrapper').className.split(/\s+/); for(x in classlst) { if(classlst[x] == 'toggled') { var list = document.getElementById('menu-toggle').className; var blank,added; blank = (list!='')?' ':''; added = list + blank + 'menu-active'; document.getElementById('menu-toggle').className = added; } } </script> <?php if (($wgHuijiPrefix === 'slx.test' || $wgHuijiPrefix === 'test' || $wgHuijiPrefix === 'zs.test' || $wgHuijiPrefix === 'www') && $this->getSkin()->getTitle()->isMainPage()) { include 'View/Sidebar.php'; echo FrontPage::showPage(); include 'View/Modal.php'; } else { ?> <?php include 'View/Sidebar.php'; ?> <div id="wiki-outer-body"> <div id="content-actions" class="subnav subnav-fixed"> <div class="container-fluid"> <ul class="nav nav-pills"> <li> <a class="navbar-brand logo-wiki-user" href="<?php echo $this->data['nav_urls']['mainpage']['href']; ?> " title="<?php echo $wgSitename; ?> "><?php echo (new wSiteAvatar($wgHuijiPrefix, 'm'))->getAvatarHtml(array('style' => 'height : 1em; padding-bottom:0.2em;')); echo ' ' . ($wgSitenameshort ? $wgSitenameshort : $wgSitename); ?> </a> </li> <li><span id="user-site-follow" class="mw-ui-button <?php echo $followed ? '' : 'mw-ui-progressive'; echo $followed ? 'unfollow' : ''; ?> "><?php echo $followed ? '取消关注' : '<span class="glyphicon glyphicon-plus"></span>关注'; ?> </span> </li> <?php echo $this->nav($this->get_page_links('Bootstrap:Subnav')); ?> <li class="site-count"><p><a id="site-article-count" href="<?php echo $url_prefix; ?> Special:AllPages"><?php $result = self::format_nice_number(SiteStats::articles()); $result2 = self::format_nice_number(SiteStats::edits()); echo $result; ?> </a>页面<a href="/wiki/Special:RecentChanges"><?php echo $result2; ?> </a>编辑<a id="site-follower-count" data-toggle="modal" data-target=".follow-msg"><?php echo self::format_nice_number(UserSiteFollow::getFollowerCount($wgHuijiPrefix)); ?> </a>关注</p></li> <span id="subnav-toggle"><i class="fa fa-ellipsis-h"></i></span> </ul> </div> </div> <div id="wiki-body" class="container"> <div id="content"> <div class="row"> <nav class="hidden-md hidden-sm hidden-xs hidden-print toc-sidebar" role="complementary navigation"></nav> <section class="col-md-12 wiki-body-section" role="main"> <div id="firstHeading" class="pagetitle page-header"> <div class="pull-right"><?php if ($this->data['isarticle']) { echo $this->getIndicators(); } ?> </div> <h1><?php $this->html('title'); ?> <?php if (isset($this->data['content_actions']['edit'])) { $isVisualEditorEnabled = $wgUser->getOption('visualeditor-enable', '1'); $editHref = $this->data['content_actions']['edit']['href']; $veHref = $this->data['content_actions']['ve-edit']['href']; if ($isVisualEditorEnabled == 1 && isset($this->data['content_actions']['ve-edit'])) { ?> <div id="huiji-h1-edit-button" class="huiji-h1-edit-button"> <a id="ca-ve-edit" href="<?php echo $veHref; ?> " class="icon-pencil" data-toggle="tooltip" data-placement="top" title="使用可视化编辑器"></a> <span class="mw-editsection-divider"></span> <a id="ca-edit" href="<?php echo $editHref; ?> " class="icon-edit-code " data-toggle="tooltip" data-placement="top" title="使用源代码编辑器"></a> </div> <?php } else { ?> <div id="huiji-h1-edit-button" class="huiji-h1-edit-button"> <a id="ca-edit" href="<?php echo $editHref; ?> " class="icon-edit-code" title="<?php echo wfMsg('bootstrap-mediawiki-view-edit'); ?> "></a> </div> <?php } } ?> <div id="contentSub"> <small> <?php $this->html('subtitle'); ?> <?php if ($this->data['isarticle'] && !$this->getSkin()->getTitle()->isMainPage() && $this->getSkin()->getTitle()->exists()) { $revPageId = $this->getSkin()->getTitle()->getArticleId(); $editinfo = UserStats::getLastEditer($revPageId, $wgHuijiPrefix); $userPage = Title::makeTitle(NS_USER, $editinfo['rev_user_text']); $userPageURL = htmlspecialchars($userPage->getFullURL()); $bjtime = strtotime($editinfo['rev_timestamp']) + 8 * 60 * 60; $edittime = CommentFunctions::getTimeAgo($bjtime); echo '<a class="mw-ui-anchor mw-ui-progressive mw-ui-quiet" href="' . $userPageURL . '">' . $editinfo['rev_user_text'] . '</a> 于' . $edittime . '前编辑了此页面'; echo '<div class="bdsharebuttonbox pull-right hidden-sm hidden-xs" data-tag="share_2"><a href="#" class="icon-weixin-share" data-tag="share_2" data-cmd="weixin" title="分享到微信"></a><a href="#" class="icon-weibo-share" data-tag="share_2" data-cmd="tsina" title="分享到新浪微博"></a><a href="#" class="icon-qqspace-share" data-tag="share_2" data-cmd="qzone" title="分享到QQ空间"></a><a href="#" class="icon-tieba-share" data-tag="share_2" data-cmd="tieba" title="分享到百度贴吧"></a><a href="#" class="icon-douban-share" data-tag="share_2" data-cmd="douban" title="分享到豆瓣网"></a></div>'; } ?> </small> </div> </h1> </div> <?php if ($this->data['isarticle']) { ?> <div id="siteSub" class="alert alert-info visible-print-block" role="alert"><?php $this->msg('tagline'); ?> </div><?php } ?> <!-- ConfirmEmail --> <?php if ($wgUser->isLoggedIn() && !$wgUser->isEmailConfirmed() && !$this->getSkin()->getTitle()->isMainPage()) { ?> <div class="alert alert-danger" role="alert"> <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> <span class="sr-only">Error:</span> 只有确认邮件后才能对页面进行编辑 :) <a href="/wiki/%E7%89%B9%E6%AE%8A:%E7%A1%AE%E8%AE%A4%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6">点此确认</a> |  <a href="/wiki/特殊:修改邮箱地址">修改邮箱地址</a> </div> <?php } ?> <!-- /ConfirmEmail --> <?php if ($this->data['undelete']) { ?> <!-- undelete --> <div id="contentSub2" class="alert alert-warning alert-dismissible"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> <?php $this->html('undelete'); ?> </div> <!-- /undelete --> <?php } ?> <?php if ($this->data['newtalk']) { ?> <!-- newtalk --> <div class="usermessage"><?php $this->html('newtalk'); ?> </div> <!-- /newtalk --> <?php } ?> <div id="bodyContent" class="body"> <?php $this->html('bodytext'); ?> </div> <?php if ($this->data['catlinks']) { ?> <div class="category-links"> <!-- catlinks --> <?php $this->html('catlinks'); ?> <!-- /catlinks --> </div> <?php } ?> <div class="bdsharebuttonbox pull-right" data-tag="share_1"><a href="#" class="icon-weixin-share hidden-xs hidden-sm" data-tag="share_1" data-cmd="weixin" title="分享到微信"></a><a href="#" class="icon-weibo-share" data-tag="share_1" data-cmd="tsina" title="分享到新浪微博"></a><a href="#" class="icon-qqspace-share" data-tag="share_1" data-cmd="qzone" title="分享到QQ空间"></a><a href="#" class="icon-tieba-share" data-tag="share_1" data-cmd="tieba" title="分享到百度贴吧"></a><a href="#" class="icon-douban-share" data-tag="share_1" data-cmd="douban" title="分享到豆瓣网"></a></div> <?php if ($this->data['isarticle'] && !$this->getSkin()->getTitle()->isMainPage() && $this->getSkin()->getTitle()->exists()) { $commentHtml = '<div class="clearfix"></div>'; $wgParser->setTitle($this->getSkin()->getTitle()); $commentHtml .= CommentsHooks::displayComments('', array(), $wgParser); echo $commentHtml; } ?> <?php if ($this->data['dataAfterContent']) { ?> <div class="data-after-content"> <!-- dataAfterContent --> <?php $this->html('dataAfterContent'); ?> <!-- /dataAfterContent --> </div> <?php } ?> <?php if ('sidebar' == $wgTOCLocation) { ?> </section></section> <?php } //end if ?> </div> </div><!-- container --> </div> <?php include 'View/Modal.php'; ?> <div class="bottom"> <div class="container"> <?php self::includePage('Bootstrap:Footer'); ?> <?php if ($this->data['sitenotice']) { ?> <div id="siteNotice" class="site-notice"> <?php $this->html('sitenotice'); ?> </div> <?php } ?> <footer> <p class="text-center"> <a class="mw-ui-anchor mw-ui-progressive mw-ui-quiet" href="http://www.huiji.wiki/wiki/%E7%81%B0%E6%9C%BA%E5%81%9C%E6%9C%BA%E5%9D%AA">灰机停机坪</a> | <a class="mw-ui-anchor mw-ui-progressive mw-ui-quiet" href="http://www.huiji.wiki/wiki/%E7%BB%B4%E5%9F%BA%E5%AE%B6%E5%9B%AD%E8%AE%A1%E5%88%92">维基家园计划</a> | <a class="mw-ui-anchor mw-ui-progressive mw-ui-quiet" href="http://www.huiji.wiki/wiki/%E5%AE%87%E5%AE%99%E5%B0%BD%E5%A4%B4%E7%9A%84%E7%81%B0%E6%9C%BAwiki">关于灰机wiki</a> | <a class="mw-ui-anchor mw-ui-progressive mw-ui-quiet" href="http://www.huiji.wiki/wiki/%E7%81%B0%E6%9C%BAwiki:%E4%BD%BF%E7%94%A8%E6%9D%A1%E6%AC%BE%E5%92%8C%E5%86%85%E5%AE%B9%E5%A3%B0%E6%98%8E">使用条款和声明</a> | <a class="mw-ui-anchor mw-ui-progressive mw-ui-quiet" href="http://www.huiji.wiki/wiki/%E7%81%B0%E6%9C%BAwiki:%E7%94%A8%E6%88%B7%E7%BC%96%E8%BE%91%E6%9D%A1%E6%AC%BE">编辑条款</a><br>Powered by <a class="mw-ui-anchor mw-ui-progressive mw-ui-quiet" href="http://mediawiki.org">MediaWiki</a> <a class="mw-ui-anchor mw-ui-progressive mw-ui-quiet" href="http://www.miitbeian.gov.cn/">京ICP备15015138号</a></p> </footer> </div><!-- container --> </div><!-- bottom --> </div><!-- /#wrapper --> <?php } ?> <!-- mainpage if end --> <?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ $this->html('reporttime'); if ($this->data['debug']) { ?> <!-- Debug output: <?php $this->text('debug'); ?> --> <?php } //end if ?> <script> (function(){ var bp = document.createElement('script'); bp.src = '//push.zhanzhang.baidu.com/push.js'; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> <script>window._bd_share_config={ "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "2", "bdMiniList": false, "bdPic": "", "bdStyle": "2" }, "share": [ { "tag": "share_1", "bdSize": 32 }, { "tag": "share_2", "bdSize": 16 } ] };with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script> </body> </html> <?php }