primary links, как переопределить в теме?

Главные вкладки

Аватар пользователя terrorblade terrorblade 12 декабря 2007 в 10:14

Привет всем,

Возникла такая проблема. Делаю темку для своего сайтика и возникланадобность переопределить стиль примари линкс, не меняя ядра, лишь корректируя файлы темки. Для пэйджера есть функция phptemplate_pager(), есть ли что-нибудь подобное для примари линкс?

Комментарии

Аватар пользователя PVasili PVasili 12 декабря 2007 в 11:38

Ну родной движок там и "колбасит" классы и ID Smile Проще переопределить.
page.tpl.php
<?php if ($lang): print theme('menu_links', $primary_links /* или $secondary_links) */ ); endif; ?>
template.php
<?php
function ИмяШаблона_menu_links ($items, $type = 'free') {
if (!empty($items)) {
foreach ($items as $index => $link) {
$output = l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']); /* или свою разметку*/
}
return $output;
}
?>

Аватар пользователя PVasili PVasili 12 декабря 2007 в 17:39

Ссылку формирует, посмотри в core модулях. Можешь вручную из переменных слепить вывод. Я написал основную идею

Аватар пользователя drudds drudds 7 февраля 2008 в 18:54

а подскажите, как можно реализовать primary links с помощью dl dt dd причем в dd чтобы писалось 'title' т.е. описание строки меню?
я попробовал вот так

function phptemplate_menu_links($links) {
  if (!count($links)) {
    return '';
  }
  $level_tmp = explode('-', key($links));
  $level = $level_tmp[0];
  foreach ($links as $index => $link) {
    $output .= '<dl>\n <dt';
    if (stristr($index, 'active')) {
      $output .= ' class="active"';
    }
    $output .= ">". l("<span>".$link['title']."</span>", $link['href'], $link['attributes'], $link['query'], $link['fragment'], FALSE, TRUE) ."</dt>\n";
   $output .= '<dd>'. $title ."</dd>\n";
  $output .= '</dl>';
  }

  return $output;
}

а в page вот это

<?php if (isset($primary_links)) : ?>
          <?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
        <?php endif; ?>

ничего не выходит
точнее меню выводится по старой схеме

Аватар пользователя shamaner shamaner 11 февраля 2008 в 5:16

мало ли на всяк случай в закладки. скопируйте в шаблон копию функции из menu.inc и делайте что хошь-либо слейте с ftp шаблон zen-там пример есть.

Аватар пользователя shamaner shamaner 11 февраля 2008 в 5:16

мало ли на всяк случай в закладки. скопируйте в шаблон копию функции из menu.inc и делайте что хошь-либо слейте с ftp шаблон zen-там пример есть.

Аватар пользователя villy villy 7 июля 2008 в 17:22

если убрать $attributes - то ссылки будут вообще в чистом виде.

page.php
<?php if (isset($primary_links)) : ?>
<?php print theme('primary_links', $primary_links, array('class' => 'links primary-links')) ?>
<?php endif; ?>

template.php
//вывод ссылок с разделителями "|"

<?php
function phptemplate_primary_links($links, $attributes = array('class' => 'links')) {
$output = '';
if (count($links) > 0) {

$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 ';
}

// 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['query'], $link['fragment'], FALSE, $html);
}
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'] .'';
}

$output .= "\n";

if ($i < $num_links) {
$output .= " | ";
}

$i++;
}

$output .= '';
}

return $output;
}

?>