Перечитал уже все что только можно было - попробовал все варианты, которые только в голову пришли - не получается
Drupal 6
надо переопределить функцию theme_links - как это сделать в 6-м Друпале по буквам пожалуйста кто-нибудь може объяснить куда что писать? Ссылками только ни кидайтесь, пожалуйста - я перечитал весь Theme guide + мануалы по theme() и hook_theme ... с английским у меня все нормально, но в самом Друпале пока еще "плаваю".
Для себя понял примерно следующее:
1. надо зарегистрировать используемые функции:
myTheme_theme(){
return array(
'links' => array(
'arguments' => array('links' => NULL, 'attributes' => NULL),
),
);
}
2. и собственно сама функция:
function myTheme_links($links, $attributes = array('class' => 'links')) {
....
}
ясен пень у меня ничего не работает. кэш весь отключен, до кучи каждый раз сбрасывал
Вопрос - объясните пожалуйста по пунктам куда (в какой файл) что класть?
Комментарии
myTheme_preprocess_links
а по поводу hook_theme кто-нибудь может что-нибудь прокомментировать, пожалуйста? как с этим работать и зачем он нужен? ....
методом научного тыка определил, что phptemplate_links - может переопределить theme_links .... таким образом я теперь вообще ничего не понимаю :((((
Все как в матрешках
theme_links() переопределяется
phptemplate_links(), что в свою очередь переопределяется
mytheme_links()
Если надо отобразить links:
theme('links') запустит весь каскад темизации links по всем функциям.
Если вам надо запустить только конкретную реализацию темизации, вызываете, к примеру phptemplate_links()
В этом случае не вызовется mytheme_*, а только все то, что ДО phptemplate_* в иерархии.
И конечно же не надо забывать что все это функции, и для того, чтобы что-то появилось на экране надо это напечатать:
print(theme('links'));
или
print(theme_links);
или еще как-то
Спасибо. Еще кое-что встало на место
А переопределить фунцию ядра Друпала возможно?
Долго мучаюсь... Есть такая фича, когда в теме вывдоится secondary_links, однако именно в этой переменной требуется другое содержимое (в частности, обрамление каждого пункта меню тэгами ). Это делается функцией из файла .inc в \includes. Руками доделываю - получаю что хочу. А как правильно? Подскажите.
спасибо за ответ, но не очень понял: исходя из ответа получаю theme_links() -> phptemplate_links() -> mytheme_links()
и далее по ответу: "вызываете, к примеру phptemplate_links() В этом случае не вызовется mytheme_*, а только все то, что ДО phptemplate_*" .... т.е. правильно ли я понял, что если я вызываю phptemplate_*, то mytheme_*, перекрыть ее уже не сможет? ... тогда что насчет "матрешки"?
в любом случае я пытался вызвать mytheme_* БЕЗ использования phptemplate_*, но она никак не вызывается ... в руководстве говориться, что в 6-м Друпале необходимо все такие функции зарегистрировать в каком-то реестре (я так и не понял что это такое) - как это сделать правильно и главное где?
все еще актуально. помогите плиз
Вызываете theme('links') и она смотрит что реализовано, а что нет. Вы _не_ должны вызывать ничего на прямую.