Задача в сабже.
Хочу оформить красиво линки - не в одну линию внизу тизера, а с графикой итд...
Для этого надо вычленить отдельно каждый линк из масива $links и сохранить в переменную для темплейта.
В 5 Друпале не работает function phptemplate_links(4.7), но есть хук для модулей http://api.drupal.org/api/function/hook_link_alter/5.
Вообщем, можно обработать уже сформированный массив линков в отдельном модуле. Но как сохранить эти линки из модуля в переменные для контента в template.php, вот в чем вопрос! Подскажите плззз.
Комментарии
variable_get берет переменную из таблицы variable
Насколько я разумею, в эту таблицу можно писать все свои переменные. Ну, и забирать, конечно.
http://api.drupal.org/api/function/theme_links/5
Здесь смотрели?
Для данной задачи я использовал модуль Content Templates. Там все намного проще, чем вы предлагаете сделать.
В Drupal 5 есть функция theme_links http://api.drupal.org/api/function/theme_links/5
Она-то вам и поможет
Вот этот код я вырвал из файла template.php темы sky для друпала.
Что он делает? Автор разбирает массив $links и оборачивает каждый элемент в теги, чтобы оформить каждую ссылку как кнопку. Выглядит намного лучше, чем стандартный набор ссылок, но я догадываюсь, что это тоже не предел.
Интересно, что у вас получится... Покажете?
<?php
function phptemplate_links($links, $attributes = array('class' => 'links')) {
$output = '';
if (count($links) > 0) {
$output = '
';- ';
$num_links = count($links);
$i = 1;
foreach ($links as $key => $link) {
$class = '';
// Automatically add a class to each link and also to each LI
if (isset($link['attributes']) && isset($link['attributes']['class'])) {
$link['attributes']['class'] .= ' ' . $key;
$class = $key;
}
else {
$link['attributes']['class'] = $key;
$class = $key;
}
// Add first and last classes to the list of links to help out themers.
$extra_class = '';
if ($i == 1) {
$extra_class .= 'first ';
}
if ($i == $num_links) {
$extra_class .= 'last ';
}
$output .= '
// Is the title HTML?
$html = isset($link['html']) && $link['html'];
// Initialize fragment and query variables.
$link['query'] = isset($link['query']) ? $link['query'] : NULL;
$link['fragment'] = isset($link['fragment']) ? $link['fragment'] : NULL;
if (isset($link['href'])) {
$output .= l('' . $link['title'] . '', $link['href'], $link['attributes'], $link['query'], $link['fragment'], FALSE, TRUE);
}
else if ($link['title']) {
//Some links are actually not links, but we wrap these in for adding title and class attributes
if (!$html) {
$link['title'] = check_plain($link['title']);
}
$output .= ''. $link['title'] .'';
}
$i++;
$output .= "
\n";
}
$output .= '
';
}
return $output;
}
?>
конечно)
через пару-тройку дней запощу свое решение, сейчас немного отвлекся на другое.
Спасибо всем за советы!
Молодцы, даешь Open Source!
Подскажите, а как в шаблоне добавить элемент в $links?
$links[] = array( "href" => "www.ya.ru", "title" => "Яндекс" ); не получается - может в двойных кавычках дело...
Или это не массив, а уже строка?
Откуда берется массив $links на входе функции phptemplate_links($links, $attributes = array('class' => 'links')) ?