Данный сниппет складывает в отдельную табличку очки, отданные через VotingAPI за статьи, к которым относится данный тэг таксономии
Табличка
Тэг - VotingAPI points sum result
Результат потом используется в выводе тэгов:
вот тут
и вот тут
зелёненькие и красные цифры.
Может, сгодится кому.
db_query('DELETE FROM av_term_vote');
$result = db_query('SELECT tid FROM av_term_data WHERE vid = 2 OR vid = 3 OR vid = 4 OR vid = 5');
$terms = array();
$nodes = array();
$i = 0;
$max = 0;
while($term = db_fetch_array($result)) {
$terms[] = $term['tid'];
// print $term['tid'] . ' ';
}
$max = count($terms);
for($i = 0; $i < $max; $i++) {
// print '<br />tid ' . $terms[$i] . ':<br />';
$result = db_query('SELECT nid FROM av_term_node WHERE tid = %d', $terms[$i]);
$votes = 0;
while($node = db_fetch_array($result)) {
$vote_result = votingapi_get_voting_result('node', $node['nid'], 'points', 'vote', 'sum');
// print $node['nid'] . ' ' . $vote_result->value . ' | ';
$votes += $vote_result->value;
}
$result = db_query('INSERT INTO av_term_vote VALUES (%d, %d)', $terms[$i], $votes);
}
}
А вот способ, применённый мной для отображения результатов, рекомендовать всем не могу - надо пачтить файлик includes/common.inc.
Нужно найти функцию l() и вставить следующий кусок перед return:
$term = taxonomy_get_term($matches[1]);
if($term->vid == 2 OR $term->vid == 3 OR $term->vid == 4 OR $term->vid == 5) {
$score = db_fetch_object(db_query('SELECT vote FROM av_term_vote WHERE tid=%d', $term->tid));
if($score->vote) {
if($score->vote > 0) {
$votetext = '<a href="/ru/about/rating"><span style="color:#88d493"><sup>+' . $score->vote . '</a></sup></span></a>';
}
else if($score->vote < 0) {
$votetext = '<a href="/ru/about/rating"><span style="color:#de7378"><sub>' . $score->vote . '</sub></span></a>';
}
return '<a href="'. check_url(url($path, $query, $fragment, $absolute)) .'"'. drupal_attributes($attributes) .'>'.
($html ? $text : check_plain($text)) . '</a>' . $votetext;
}
}
}
таблица
CREATE TABLE `av_term_vote` (
`tid` int(10) unsigned NOT NULL default '0',
`vote` bigint(20) NOT NULL default '0',
PRIMARY KEY (`tid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Комментарии
Спасибо, полезно
Стоит добавить к статье тег сниппет(ы)
и заюзать тег < code >
что ж, добавил и вывод, только не всем он подойдёт.
в закладки