我在CodeIgniter中使用模板解析器类为视图(MVC)提供了一个设计友好的外观。我有一系列我要展示的帖子,但在首页上我只想要显示一部分帖子(前200个字符),然后是......“阅读更多”链接。
它正在输出帖子,但似乎忽略了PHP substr()函数bc文本全长。
在模型类中:
function __construct()
{
parent::__construct();
$this->load->library('parser');
$this->load->model('MPosts');
}
function index() // BASE_URL
{
$data = array("article_posts" => $this->MPosts->get_posts());
$this->parser->parse('VPosts', $data);
}
在视图中:
<body>
{article_posts}
<h2><a href="posts/post/{postID}">{title}</a></h2>
<p><?=substr("{post}", 0, 200);?>...</p>
<p><a href="posts/post/{postID}">Read More</a></p>
<hr />
{/article_posts}
</body>
答案 0 :(得分:1)
由于您使用MySQL查询来获取文章,因此您始终可以使用SUBSTRING(article_column_name,1,200)
仅获取前200个字符,基本上substr()
请参阅:https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring
答案 1 :(得分:1)
在parser->parse()
代码中:
load->view()
处理器传递模板,就像常规视图一样(因此它在模板中执行PHP代码),{pseudovar}
- 替换者”。此时我确定您已理解此问题:substr()
已应用于字符串"{post}"
我可以为您的案例考虑这些选项:
substr()
控制器端,可能是解决问题的最快解决方案答案 2 :(得分:0)
尝试使用echo
代替?=
。
人们倾向于将代码留给控制器构造函数中的load
(模型)库,其中用户定义的函数将调用对模型文件中实现的用户定义函数的调用。