<div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace">Thank you Petko.</div><div class="gmail_default" style="font-family:'courier new',monospace">First solution working as expected ; </div><div class="gmail_default" style="font-family:'courier new',monospace">second one is failing somewhere : encoding is not utf8 anymore (title is : détester, haïr, ne pas aimer instead of détester, haïr, ne pas aimer), no values printed out, and I get this error message :</div><div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style><div class="gmail_default" style><font face="courier new, monospace">Warning: Illegal string offset 'targets' in /homepages/18/d269604285/htdocs/dev6/scripts/pagelist.php(476) : runtime-created function on line 1</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">Warning: Cannot modify header information - headers already sent by (output started at /homepages/18/d269604285/htdocs/dev6/scripts/pagelist.php(476) : runtime-created function:1) in /homepages/18/d269604285/htdocs/dev6/pmwiki.php on line 1220</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace">Code in local.php is :</font></div><div class="gmail_default" style><font face="courier new, monospace"><br></font></div><div class="gmail_default" style><font face="courier new, monospace"><div class="gmail_default">function NbSource($targets) {</div><div class="gmail_default">   return substr_count($targets, "Source.");</div><div class="gmail_default"> }</div><div class="gmail_default"># permute $x and $y to have it sort the other way</div><div class="gmail_default">$PageListSortCmp['nbsource'] = 'NbSource($x["targets"])-NbSource($y["targets"])';</div><div class="gmail_default"><br></div><div class="gmail_default">and pagelist is :</div><div class="gmail_default"><br></div><div class="gmail_default">(:pagelist group=Bob link={*$FullName} fmt=#description2 order=nbsource:)<br></div></font></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-04-04 16:48 GMT+02:00 Petko Yotov <span dir="ltr"><<a href="mailto:5ko@5ko.fr" target="_blank">5ko@5ko.fr</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 2015-04-04 11:05, ABClf wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am willing to get pagelist results sorted by popularity : i.e. count<br>
backlinks (targets). That way, most linked pages will be shown first.<br>
<br>
For counting, targets, in config, I have :<br>
<br>
# NbSource<br>
$FmtPV['$NbSource'] = 'NbSource($page["targets"])';<br>
function NbSource($targets) {<br>
  $cnt = substr_count($targets, "Source.");<br>
  return $cnt>0? "$cnt" : '';<br>
}<br>
</blockquote>
<br></span>
The entry $page["targets"] contains "frontlinks" not backlinks, these are internal pages to where the page from the pagelist links.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
(:pagelist group=Bob link={*$FullName} fmt=#description2 order=$NbSource:)<br>
<br>
Problem now, is how to make value 2 before value 11, and so on (natural<br>
order).<br>
</blockquote>
<br></span>
I assume you want to make pages with more (11) links to appear before pages with less (2) links?<br>
<br>
To order correctly with the PmWiki pagelist sort, you can convert the numbers to padded strings:<span class=""><br>
<br>
 function NbSource($targets) {<br>
   $cnt = substr_count($targets, "Source.");<br></span>
   return sprintf('%08d', $cnt); # see <a href="http://php.net/sprintf" target="_blank">php.net/sprintf</a><br>
 # or: return sprintf('%08d', 9999999-$cnt); # in decremental order<br>
 }<br>
<br>
Alternatively, it is possible to write your own pagelist sort function which may perform faster. On <a href="http://pmwiki.org" target="_blank">pmwiki.org</a> the string sorting takes most of the pagelist processing time. Something like this:<br>
<br>
 function NbSource($targets) {<br>
   return substr_count($targets, "Source.");<br>
 }<br>
<br>
 # permute $x and $y to have it sort the other way<br>
 $PageListSortCmp['nbsource'] = 'NbSource($x["targets"])-<u></u>NbSource($y["targets"])';<br>
<br>
Then in the wiki, use (:pagelist ... order=nbsource:) or order=-nbsource<br>
<br>
Petko<br>
<br>
<br>
______________________________<u></u>_________________<br>
pmwiki-users mailing list<br>
<a href="mailto:pmwiki-users@pmichaud.com" target="_blank">pmwiki-users@pmichaud.com</a><br>
<a href="http://www.pmichaud.com/mailman/listinfo/pmwiki-users" target="_blank">http://www.pmichaud.com/<u></u>mailman/listinfo/pmwiki-users</a><br>
</blockquote></div><br></div>