codecamp

制作模板

默认地,ModPHP 并不自带模板,在安装了 ModPHP 之后,你还需要为自己的网站制作或下载一套(主题)模板。

由于 ModPHP 是支持无限模块扩展的,所以这篇文档仅以默认的五个模块为例,向你介绍开发一套 ModPHP 模板所需要进行的工作。

必需或者建议创建的模板文件:

  • index.php  索引文件,存放和展示站点的首页内容。
  • functions.php  模板函数文件,存储与模板相关的自定义函数、Api Hook 回调函数,以及模板将会使用的全局变量等。
  • header.php  公共头部文件,显示整站统一的网页头部内容。
  • footer.php  公共脚部文件,显示整站统一的网页脚注内容。
  • profile.php  用户详情页,显示登录用户的详细信息。
  • category.php  分类目录页面,显示分类目录下的文章列表。
  • single.php  文章详情页,显示文章的具体内容。

除了 function.php,其他模板文件的命名都是可选的,但是要根据配置中的模板设定来选择正确的命名,否则将会无法正确加载页面。

调用并展示数据:

要调用存储在数据库中的数据,你可以使用函数或类方法来实现,相关的函数可以在 文档 >> 函数 的后面部分找到,类方法可以在 文档 >>  >> mod 中找到。 例如,要在文章详情页中显示一篇文章,你可以这么做:

<article>
    <h1 class="title"><?php echo post_title(); ?></h1>
    <section class="content">
        <?php echo post_content(); ?>
    </section>
</article>

在公共头部文件中,你可以使用页面面判断函数类选择在不同的页面显示不同的内容:

<?php
    if(is_home()){
        $title = '首页';
    }elseif(is_category()){
        $title = category_alias() ?: category_name();
    }elseif(is_profile()){
        $title = user_nickname() ?: user_name();
    }
?>
<head>
    <title><?php echo $title.' - '.config('site.name'); ?></title>
</head>

然后在其他模板文件中,你可以使用 include 命令引入这个头部文件:

<?php include 'header.php'; ?>

在分类目录页面,可以使用 get_multi_post() 来获取并列举文章:

<div class="container">
    <ul>
        <?php while(get_multi_post()): ?>
        <li>
            <h2 class="title"><a href="<?php echo post_link() ?: create_url(config('post.staticURI'), post_category('name'), post_id()); ?>"><?php echo post_title(); ?></a></h2>
            <div class="desc"><?php echo substr(post_content(), 0, 100); ?>...</div>
            <div class="meta">作者:<?php echo post_user('nickname') ?: post_user('name'); ?>,日期:<?php echo date('Y-m-d', post_time()); ?></div>
        </li>
        <?php endwhile; ?>
    </ul>
</div>

你可以在模板函数文件中定义一些函数或变量,将功能相同的代码集中到一起,然后在模板中调用它们,也可以设置 Api Hook 回调函数,定义自己对数据的过滤和修饰规则。

例如上面在公共头部文件中进行页面判断代码,也可以做成函数放在模板函数文件中:

<?php
function get_title(){
    if(is_home()){
        $title = '首页';
    }elseif(is_category()){
        $title = category_alias() ?: category_name();
    }elseif(is_profile()){
        $title = user_nickname() ?: user_name();
    }
    return $title.' - '.config('site.name');
}

然后直接在头部文件中调用这个函数:

<head>
    <title><?php echo get_title(); ?></title>
</head>

要创作出漂亮又功能强大的模板,你需要更多地了解 ModPHP 所提供地各类函数、对象及其他特性,并且熟练掌握 HTML、CSS 和 JavaScript。 另外,你可以到互联网上下载现有的网站模板,对其中的内容进行一定的修改,加入 ModPHP 的元素,让其成为一个 ModPHP 主题模板,从而加快你的开发进度。 在多套模板之间进行切换: ModPHP 所加载的模板,是由 config('mod.template.savePath')  设定的,假如你的网站存在多套可供选择的模板,你应当将它们分别存放在不同的文件夹中,然后通过写改配置来设置应当调用的模板,例如可以设置 config('mod.template.savePath', 'template/default/')  来调用 default 模板。

认识 CMS
在模板中使用 HTML 语义标签
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

挂钩机制

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }