0

基本上,我正在尝试将 Pinterest 提要小部件添加到 ExpressionEngine 站点。我发现本教程非常有帮助,但问题是我无法使用引用的标签剥离插件,因为我正在帮助的网站使用 ExpressionEngine 1x,而该插件仅适用于 2x。

如果您查看 Pinterest rss 源的来源,例如:http ://pinterest.com/amazon/feed.rss ,您会看到<description>标签中包含 Pinterest 图像的 url 以及 pin 的标题、标签和相关信息链接到 pinterest 上的图钉。我希望能够仅提取“img src”之后双引号之间的值。

本教程还使用了一个名为 Magpie 的插件,该插件已经加载到网站上,所以我很好。

理想情况下,我希望我的代码看起来像这样:

{exp:magpie url="http://pinterest.com/amazon/feed.rss" parse="inward"
refresh="720" limit="5"} {items}<a href="{link}" target="_blank"><img
src="<?php code-to-grab-the-img-src->{description} ?>"
alt="{title}"></a>{/items} {/exp:magpie}

显然“code-to-grab-the-img-src->{description}”不起作用,所以我正在寻找一个函数或其他东西。如何告诉 Magpie 在不使用 SuperGeekery Tag Stripper 插件的情况下仅提取 img src 值?

谢谢!

4

3 回答 3

1

我建议构建一个简单的插件来处理这个问题,您可以使用与我的其他答案相同的正则表达式(由于无法将{description}内容导入 PHP 而失败)。

这是您的插件的外观:

<?php

$plugin_info = array(
  'pi_name' => 'Get Pinterest Image',
  'pi_version' => '1.0',
  'pi_author' => 'Derek Hogue',
  'pi_author_url' => 'http://amphibian.info',
  'pi_description' => 'Grabs the image URL from a Pinterest RSS feed description element.',
  'pi_usage' => Get_pinterest_image::usage()
  );

class Get_pinterest_image
{

var $return_data = "";

  function Get_pinterest_image()
  {
    global $TMPL;
    $fallback = $TMPL->fetch_param('fallback_image');
    preg_match("/src=\"(.+)(?=\"&gt;&lt;\/a&gt;)/ui", $TMPL->tagdata, $matches);
    $this->return_data = (!empty($matches)) ? $matches[1] : $fallback;
  }

  function usage()
  {
  ob_start(); 
  ?>
    {exp:get_pinterest_image fallback="/path/to/fallback_image.png"}{description}{/exp:get_pinterest_image}

    Where {description} is the "description" XML node from the Pinterest RSS feed (likely parsed via the Magpie plugin).
  <?php
  $buffer = ob_get_contents();
  ob_end_clean(); 
  return $buffer;
  }  

}

?>

根据 EE 约定,这将被命名为get_pinterest_image.php,并进入您的/plugins/文件夹。然后在您的模板中:

{exp:magpie url="http://pinterest.com/amazon/feed.rss" refresh="720" limit="5" parse="inward"}
    {items}
        <a href="{link}" target="_blank"><img src="{exp:get_pinterest_image fallback="/path/to/fallback_image.png"}{description}{/exp:get_pinterest_image}" alt="{title}" /></a>
    {/items}
{/exp:magpie}
于 2012-08-21T12:50:25.243 回答
0

当然 - 在输出上启用 PHP,然后使用这个正则表达式:

{exp:magpie url="http://pinterest.com/amazon/feed.rss" refresh="720" limit="5"}
{items}
<?php
    preg_match("/src=\"(.+)(?=\"&gt;&lt;\/a&gt;)/ui", '{description}', $matches);
    $src = (!empty($matches)) ? $matches[1] : '/path/to/default-image.png';
?>
    <a href="{link}" target="_blank"><img src="<?php echo $src; ?>" alt="{title}"></a>
{/items}
{/exp:magpie}

此代码包含另一个图像的后备,以防由于src某种原因无法找到该图像。

未经测试,但它应该可以工作。

于 2012-08-20T19:58:58.280 回答
0

RSS解析很难!如果您愿意稍微复杂一点并将提要内容带入 EE,那么我对仅限 EE2 的 DataGrab 很幸运,因此您可能会从免费的 EE1 前身:FeedGrab中找到一些快乐。

于 2012-08-21T02:19:29.530 回答