A "pingback" is a system whereby URLs you might reference in a blog post are
contacted by the blog publishing software at publishing time (i.e., once) so
that they might update a list of "pingbacks" to the URL. The originating
URL's blog software might then display a list of pingbacks, or an excerpt of
the text from your blog, perhaps interleaved with comments, etc.
At a technical level, external URLs are extracted from your blog post by the
blogging software, fetched, inspected for information to determine whether the
remote server is configured to support pingbacks (look for link tags, or HTTP
headers) and the relevant pingback URL sent an XML-RPC packet.
There are other technologies to achieve the same thing: trackbacks predate
pingbacks but are more vulnerable to spam due to design problems.
The spec for pingbacks is at http://www.hixie.ch/specs/pingback/pingback.
I would like to somehow use pingbacks in conjunction with ikiwiki. I suppose
this could be achieved using a commit hook and some external software in which
case I will consider this done with an entry in [[tips]]; otherwise a
[[plugins|plugin]] to implement pingbacks would be great.
-- [[Jon]] (Wed Jan 14 13:48:47 GMT 2009)
I think it's now possible to implement trackback and pingback receiving
support in ikiwiki. One easy way to do it would be to hook it into the
existing [[plugins/comments]] plugin -- each pingback/trackback that
ikiwiki recieves would result in the creation if a new comment, which
would be subject to the usual comment filtering (ie, blogspam) and
moderation and would then show up amoung the other, regular comments on
the page.
(One wrinkle: would need to guard against duplicate pings. Maybe by
checking existing comments for any that have the same url?)
As for sending trackbacks and pingbacks, this could fairly easily be
implemented using a editcontent
hook. Since this hook is called
whenever a page is posted or edited, and gets the changed content, it can
simply scan it for urls (may have to htmlize first?), and send pings to
all urls found. --[[Joey]]