Day: April 13, 2014

  • 在Symfony 2中获取WordPress信息

    在我正在进行的任氏有无轩改版中,我希望在首页获得我的博客的一些信息,比如最新发布的五个帖子。

    我使用的博客后台是Wordpress,它提供了很好的编程接口,可以轻松地完成这个任务。而且Wordpress也提供了这些编程接口的说明。

    Wordpress对博客信息的操作是通过所谓的XML-RPC实现的,其官方文档见此处。它也提供了诸如MetaWeblog API接口和其它格式的API接口。经过比较后,我还是选择使用MetaWeblog API接口,主要是因为它调用相对更加简单,返回值虽然不完整,但是够用也很精练。

    获取最新的若干(缺省为4)篇帖子的代码如下:

    private function getRecentPostsFromWP($num=4)
        {
            require_once 'wordpress/wp-includes/class-IXR.php';
            $user='user';
            $pwd='password';
            $xmlclient='http://www.rsywx.net/wordpress/xmlrpc.php';
            $client=new IXR_Client($xmlclient);
            $params=array(0, $user, $pwd, $num);
            $client->query('metaWeblog.getRecentPosts', $params);
            $posts=$client->getResponse();
            return $posts;
        }

    这个函数以数组形式返回最新的几个帖子,在Twig中可以进一步使用诸如:

    {{rp.title}}
    {{rp.dateCreated.year}}年{{rp.dateCreated.month}}月{{rp.dateCreated.day}}日
    {{rp.description|striptags|truncate(120)}}

    等方式获取相关信息并展示。

    有兴趣的读者可以进一步参阅API说明,挖掘Wordpress更多的功能,并应用到自己的站点中。

  • Symfony 2中Twig模板的两个小技巧

    今天抓紧时间又更新了一下任氏有无轩的首页的改造。在我已经获得了我的博客的若干最新帖子的前提下,我需要在首页上显示其中的几个。 我要解决两个问题:

    1. 对帖子的内容进行过滤。
    2. 对过于长的帖子内容进行截断。

    由于Twig引擎在渲染HTML的内容时,缺省会将其作为<pre>文本输出,因此所有HTML/CSS效果都会丢失。这是可以接受的,但是问题在于,在这一过程中所有的HTML标记(如<p><img>等)也会按照转义输出,这样一来我们的输出中文字就会非常凌乱,不利于阅读。

    我要达到的是下面的效果:

    Ashampoo_Snap_2014.04.13_12h33m30s_002_MozillaFirefox.png

    也就是说,只输出文本,对于其中可能出现的HTML标记被剥离并不是太大的问题。 这可以通过如下的输出控制实现:

    rp.description|striptags

    接下来,要对这样输出的文字进行截断。Twig提供了一个truncate过滤器,但是要使用它需要进行一些设置。 修改app/config.yml并增加如下代码:

    services:
        twig.extension.text:
            class: Twig_Extensions_Extension_Text
            tags:
                - { name: twig.extension}

    然后对刚才输出的文字继续套用truncate

    rp.description|striptags|truncate(120)

    就可以得到图片中的效果了。

    本文收录于[go4pro.org]

  • PHP-CPP编写PHP扩展

    (原文发布于2014年3月26日和4月5日,原文链接Getting Started with PHP Extension Development via PHP-CPP,以及PHP Extension Development with PHP-CPP: Object Oriented Code

    本文收录于[go4pro.org]

    这两篇文章利用http://php-cpp.com/提供的PHP-CPP作为基础,讨论了利用C++(严格说是PHP-CPP)编写PHP扩展的方法,讨论了最基础的东西以及一个类(复数类)的基本实现。