Этот метод предназначен для SQL/PostgreSQL
фанатиков. Он выполняет всю работу в базе данных и печатает текст с помощью «slugified» ссылки. Он использует Doctrine ORM
только для вызова sql, я не использую объекты. Предположим, мы имеем 10 размеры:
public function getAllForTagCloud($fontSizes = 10)
{
$sql = sprintf("SELECT count(tag) as tagcount,tag,slug,
floor((count(*) * %d)/(select max(t) from
(select count(tag) as t from magazine_tag group by tag) t)::numeric(6,2))
as ranking
from magazine_tag mt group by tag,slug", $fontSizes);
$q = Doctrine_Manager::getInstance()->getCurrentConnection();
return $q->execute($sql);
}
тогда напечатать их с некоторыми CSS класса, от .tagranking10 (в лучшем случае) до.tagranking1 (худший):
<?php foreach ($allTags as $tag): ?>
<span class="<?php echo 'tagrank'.$tag['ranking'] ?>">
<?php echo sprintf('<a rel="tag" href="/search/by/tag/%s">%s</a>',
$tag['slug'], $tag['tag']
); ?>
</span>
<?php endforeach; ?>
и это CSS
:
/* put your size of choice */
.tagrank1{font-size: 0.3em;}
.tagrank2{font-size: 0.4em;}
.tagrank3{font-size: 0.5em;}
/* go on till tagrank10 */
Этот метод отображает все теги. Если у вас их много, вы, вероятно, не хотите, чтобы облако тегов стало тегом storm. В этом случае вы бы добавить к HAVING TO
пункт для вашего запроса:
-- minimum tag count is 8 --
HAVING count(tag) > 7
Это все
Это, кажется, хороший подход ко мне. Если ваши данные находятся в массиве, просто пропустите часть базы данных. Я бы рекомендовал вам сохранить имя и счет исполнителя в одном ассоциативном массиве. Чтобы сделать эту работу с приведенным выше кодом, используйте что-то вроде: $ tags = array ("the roots" => 5, "michael jackson" = 3, "billy idol" => 9, "madonna" => 1); Я бы согласился не использовать теги H, поскольку это испортило вашу семантику. Пробелы были бы моим выбором. Наконец, в Zend Framework существует помощник, который может просто делать то, что вам нужно. См. Http://framework.zend.com/manual/en/zend.tag.html – simonrjones 2009-08-06 08:42:20
Извините, без форматирования в приведенном выше комментарии кажется! – simonrjones 2009-08-06 08:42:54