1

我只需要将主页中的文章标题(特色文章)放在一行中。因此,需要标题不超过 26 个字符。剩余的字符将被删除并替换为 ...

我怎样才能做到这一点?

4

3 回答 3

0

只需子串以确保足够的长度。我不知道 Joomla,但 C# 等价物是:

private string FormatForTitle(string input)
{
    if (input.Length <= 26)
    {
        return input;
    }

    // Trim
    return input.Substring(0, 23) + "...";
}

移植到 PHP 应该不难。

于 2013-06-05T18:25:37.860 回答
0

FooThis 是通过插件实现的。以下应该做的工作 - 请。压缩这些文件并使用扩展名安装。

foo.xml:

<?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="1.6" method="upgrade" group="content">
<name>Content - foo</name>
<creationDate>2013-05-30</creationDate>
<version>1.0</version>
<releaseDate>2013-06-07 07:08:00</releaseDate>
<releaseType>First public release!</releaseType>
<author>Michael Baas</author>
<authorEmail>mb@mbaas.de</authorEmail>
<authorUrl>mbaas.de</authorUrl>
<copyright>(c) 2013 Michael Baas</copyright>
<description>Limit length of featured article-titles - demo</description>
<files>
<filename plugin="foo">foo.php</filename>
</files>
</extension>

foo.php

<?php
    class plgContentFoo extends JPlugin
        {
        public function onContentPrepare($context,$article,$params,$limitstart)
        {

        $view = JRequest::getCmd( 'view');
        // echo "view=$view";
        $fp = $in_array($view,array("Frontpagecategory","addmore"));

            if ($fp && 26<strlen($article->title)) {
                $article->title = trim(substr($article->title,0,23)) . "...";
                return true;
            }
        }


    }

?>

如果它对您不起作用,则可能是您在首页上有不同的视图。在这种情况下,请。从 "// echo "view=$view";" 中删除注释 并将以下行中的“addmore”替换为查看首页时显示的结果。(但要小心:“Frontpagearticle”意味着您正在查看首页上的单个文章,我假设在这种情况下您不会想要修剪......)

此处还描述了检测用户是否正在查看首页的“常用”方法:http://docs.joomla.org/How_to_determine_if_the_user_is_viewing_the_front_page 但该方法的问题在于,它还查看了 fp 上的一篇文章会导致这些语句返回“TRUE”,我认为这是错误的,因为用户当时没有查看首页......

然而,话虽如此,在某些情况下我的代码也可能会失败,并且需要与我链接到的文章中的方法(检查菜单)结合使用......

于 2013-06-07T05:09:11.463 回答
0

<script type="text/javascript">
//<![CDATA[
$(".PopularPosts .post-title a").each(function(){
    if($(this).text().length>10)
    {$(this).text($(this).text().substr(0, 10)+'...');}
});    
//]]>
</script>

于 2019-12-10T13:19:32.640 回答