Tominysun

起因

近日,我再移植Company主题时,因为这个主题是面向公司的,首页有新闻资讯的输出。
我仔细阅读官方文档后发现近提供了如下信息(调用某一分类下的文章 - Typecho Docs):

 比如想某地方调用mid=1那个分类的文章列表..怎么使用呢? 例如: 分类id=1 分类id=2 文章1.. 文章1.. 文章2.. 文章2.. 文章3.. 文章3.. 文章4.. 文章4..

你可以这样调用

<?php $this->widget('[email protected]', 'type=category', 'mid=1')->to($categoryPosts); ?>

然后操作$categoryPosts这个变量即可 

其中出现说

然后操作$categoryPosts这个变量即可

相信看到这里某些想我一样的小白就迷糊了,怎么操作啊啊啊!

学习

我又阅读相关文档,最终总结了两种调用方式:

常规用法

通过widget方法初始化组件,并使用next()进行迭代。

$this->widget('[email protected]', 'type=category', 'mid=1')->to($categoryPosts);
while($categoryPosts->next()):
    ......
endwhile;

快捷用法

通过parse方法,简化常规用法中的代码

$this->widget('[email protected]', 'pageSize=6&type=category', 'mid=3')
->parse('<li><a href="{permalink}">{title}</a></li>'); 

后话

[hide]
哼哼,如果你是个伸手党,拿完代码就走,然后又胡乱套用是要报错的哦!
我在少有的文档和例子中得到一些信息:

1.Widget组件中的[email protected]里面的index是可以自行修改,以避免同一页面中该组件仅能调用一次的问题
2.后半部分'pageSize=6&type=category', 'mid=3',其中6是该分类列表输出几篇文章,3是输出mid为3的分类下的文章。也可自行把mid=3改成slug=test(输出缩略名为test的分类下的文章)
3.如果你想实现高级功能不建议使用parse方法简化代码,最后使用常规调用。
4.while中的代码是要循环输出的。举个栗子:

<?php $this->widget('[email protected]', 'pageSize=5&type=category', 'mid=1')->to($myPosts); ?>
  <?php while($myPosts->next()): ?>
    <div class="233">
      <span>
        <?php $myPosts->date('Y-m-d'); ?></span>
      <a href="<?php $myPosts->permalink() ?>">
        <?php $myPosts->title() ?></a></div>
    <?php endwhile; ?>

这样应该可以理解咯? 循环中变量更多可用字段详见模板制作快速入门 - Typecho Docs也可以留言问我。

[/hide]

感谢

本文部分代码来自:
1.调用某一分类下的文章 - Typecho Docs
2.模板制作快速入门 - Typecho Docs
2.Typecho调用分类列表 - Typecho开发者中文网

已有 2 条评论

  1. 云武
    云武 10Chrome 71
    请问怎么灵活调用mid?怎么获取单独的子分类数量呢?谢谢!
    1. Tominysun
      Tominysun 作者君 10Chrome 67

      不好意思啊,最近我的站都快发霉了! 垃圾评论一大堆,就算有邮件提醒我也不小心忽略了。我会调整一下垃圾评论的拦截设置,尽力避免类似于你的正常评论被淹没的现象。
      接下来是针对你问题的回复:
      灵活调用mid获取子分类数量,你的问题比较模糊。
      不知道是子分类下的文章数量,还是某分类下的子分类数量,亦或是某分类下子分类的文章总数量,你可以参考一下本站另一篇文章:typecho统计当前分类和子分类文章总数。希望能对你有所帮助!如果有其他的问题,可继续留言询问哦!
      最后,欢迎来访哦!

添加新评论