你现在的位置:首页 > PHP网站建设知识库 > phpcms > 正文

phpcms v9标题自动一行两列

有些phpcms网站,一行两列只是简单地使用overflow:hidden,这经常会造成文字从中间被截断,很郁闷。所以还是得用代码判断自动设置。
我们可以这样来做:读取两篇文章,计算标题总长度,然后先把第一个标题显示完整了,再计算剩下的空白,再控制第二篇文章标题的长度。

{pc:content action="lists" catid="132" order="listorder DESC" num="1" return="data"}
  {pc:content action="lists" catid="132" order="listorder DESC" num="1" start="2" return="data2"}
   {php //初始化}
   {php $tit_len=0}
    {loop $data $r}
    {loop $data2 $v}
     {php //判断总长}
      {if strlen($r[title])+strlen($v[title]) > 45}
       {php $tit_len= 45 - strlen($r[title])}
        {$r[title]}  {str_cut($v[title],$tit_len,'')}

       {else}
{$r[title]}  {$r[title]}


       {/if}
    {/loop}
    {/loop}  
    {/pc}
    {/pc}

使用中发现了另外一个问题,如果第一个标题大于45(我的一行显示45个字符),那第二个标题长度就会被设置为0,这可不太好。所以。。。。。以32个字符为基准,第一条标题超过了,就设置为32个字符,如果没超过 就显示完,第二个标题自动设置。  代码很多,应该还有更好的解决方法,望能抛砖迎玉 期待高手给出更好的解决方法

{pc:content action="lists" catid="108" order="listorder DESC" num="1" return="data"}
  {pc:content action="lists" catid="108" order="listorder DESC" num="1" start="1" return="data2"}
   {php //初始化}
   {php $tit_len=0}
    {loop $data $r}
    {loop $data2 $v}
     {php //判断总长}
     {if strlen($r[title]) > 32}
{str_cut($r[title],32,'')}  {str_cut($v[title],13,'')}


     {else}  
     {php $tit_len= 45 - strlen($r[title])}
{$r[title]}  {str_cut($v[title],$tit_len,'')}


       {/if}
    {/loop} {/loop}  
    {/pc} {/pc}