[Решено] Как переставить местами ссылки "Читать далее" и "Добавить комментарий"?

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

Аватар пользователя RedRat RedRat 14 октября 2009 в 10:32

Собственно, вопрос содержится в заголовке. Пытаюсь в теме поменять местами ссылки "Читать далее" и "Добавить комментарий" в конце анонса новости, нигде не могу найти, как это сделать. По коду вижу, что эти ссылки в массив links добавляются в модулях node.module и comment.module, но ни в одном css описания классов для node_read_more и comment_add я не нашёл. Помогите новичку!

P.S. Ещё одну странную вещь заметил: пытаюсь избавиться от ссылки "Читать далее" в новостях, состоящих из одного анонса, специально добавляю в самый конец ноды <!--break-->, после которого ничего нет. По идее, node->readmore должен быть пуст, и ссылка "Читать далее" не должна выводиться. Тем не менее, в каких-то нодах это прокатывает, а в каких-то - нет. Судя по поиску на Друпал.ру, я не первый с этим сталкиваюсь. Можете помочь советом, на что обратить внимание?

Комментарии

Аватар пользователя Bios Bios 14 октября 2009 в 10:44

Модуль devel поставьте, там увидите где какие ссылки и в какой очереди идут... затем переопределите в шаблоне вывод (page.tpl.php)
Возможно проблему с ссылками можно решить через template.php точно не могу сказать...

Аватар пользователя RedRat RedRat 14 октября 2009 в 11:46

Bios wrote:
Модуль devel поставьте, там увидите где какие ссылки и в какой очереди идут...

Модуль поставил, он мне показал то, что я и раньше знал: в массиве links находится два элемента, comment_add и node_read_more. Собственно, вопрос сводится к тому, как эти два элемента в массиве поменять местами.

Аватар пользователя RedRat RedRat 14 октября 2009 в 13:36

Вобщем, с очерёдностью вывода ссылок всё ясно: theme_links() выводит их в том порядке, в котором они добавлялись в массив $links. Осталось подучить PHP и написать функцию, которая будет менять два элемента массива местами по ключу. Чисто программистская задача, надо только язык выучить. Wink

С выводом "Читать далее" всё немного запутаннее: ссылка выводится в node_link() при условии:

<?phpif ($teaser == 1 && $node->teaser && !empty($node->readmore))?>

при этом $readmore определяется в node_prepare() как:

<?php$node->readmore = $node->teaser != $node->body;?>

Смотрю с помощью модуля devel на содержимое тестовой ноды, $node->teaser и $node->content->body у неё совпадают, а $readmore всё-равно почему-то стоит TRUE. Для проверки уже и все модули лишние отключил, и длину анонса поставил без ограничений - без толку. Что-то здесь не так... Sad