Use of Markdown Extra in a forum
    Michel Fortin 
    michel.fortin at michelf.com
       
    Thu Apr 19 07:35:09 EDT 2007
    
    
  
Le 2007-04-19 à 4:24, benoit at transmekong.com a écrit :
> I have tried to implement PHP Markdown Extra in a forum (PunBB) and  
> found that however well each message is translated, there are  
> collisions when different messages in the same page have the same  
> inside link names (footnotes, title links).
>
> I guess similar issues are met on wiki implementations, so  
> solutions adopted for wikis might be what I am looking for.
>
> Has this question already been met?
Yes and no. There is a provision in PHP Markdown Extra to help solve  
this problem, althoug it requires additional input. It is also buggy  
right now.
The way this should be done is by setting the `fn_id_prefix` property  
on the parser instance you're using. (If you're currently using the  
Markdown function, you'll have to create your own parser instance.)  
Like this:
     $parser = new MarkdownExtra_Parser;
     $parser->fn_id_prefix = "$post->id."; // anything unique to your  
post.
     $html = $parser->transform($post->text);
You can also reuse the same parser object and change the  
`fn_id_prefix` property before each call to `transform`.
But there is a bug right now (version 1.1.2) which prevent footnotes  
from working altogether when the prefix is not empty. The fix is to  
change the first line of the `_stripFootnotes_callback` function of  
the `MarkdownExtra_Parser` which looks like this:
     $note_id = $matches[1];
to this:
     $note_id = $this->fn_id_prefix . $matches[1];
After this change, you can use `fn_id_prefix` as explained above. I  
should release a an update soon to fix this.
I hope this helps.
  - - -
As of title ids, it is expected they should be different enought to  
not clash between eachother. How would you link to them without  
knowing the prefix anyway?
  - - -
> May I suggest the addition of an _option_ to add a key to each link  
> or link pair (`[^1]` and `[^1]: ...` for instance), that could help  
> insulate each message from its neighbors?
>
> I could be done by defining a random 6-8-char key for each instance  
> of PHP Markdown, and appending or prepending it to the name of each  
> element in the html output.
A random string would make links to footnotes change every time the  
page is reprocessed. This is something I want to avoid as it would  
break bookmarked links.
So PHP Markdown Extra isn't going to add random strings to footnote  
ids by itself. Of course, if you want, you could fill the  
`fn_id_prefix` property with a random prefix every time, which would  
yeild the same result.
Michel Fortin
michel.fortin at michelf.com
http://www.michelf.com/
    
    
More information about the Markdown-Discuss
mailing list