Drupal может всё?..

· На чтение уйдёт 2 минуты · (340 слов)

Пару часов провозился с блогом, добавляя себе список похожих и популярных постов. Но это была лёгкая часть. Веселуха началась потом, когда понадобилось поставить его куда-нибудь. А комментарии, как оказалось, неразрывно связаны с самой заметкой. Теперь зародилась мысль ещё и форму для комментирования поднять повыше. А при отправке нового комментария — скрыть старые. Ну да ладно, это ещё потом будет. Попробую рассказать, как я боролся с этой проблемой.

Во-первых, пригодился модуль статистики: drush en statistics.

Во-вторых, модуль рекомендаций по истории: drush dl history_rec и затем drush en history_rec.

Заодно поставится модуль Drupal Computing и ещё всякое.

Затем в я указал, что надо бы учитывать историю браузинга всех пользователей, а не только зарегистрированных. Да и вообще, у меня на блоге два зарегистрированных пользователя! Я серьёзно. Один из них — я.

Затем, через консоль команд модуля Recommender, я вызвал обновление рекомендаций. Пришлось правда ещё выполнить drush recommender-run. На самом деле, этот drush recommender-run я запустил, наверное, раз 80. Всё дело в том, что у меня для Drupal используется префикс перед всеми таблицами, а модуль рекомендаций не очень к этому приспособлен.

Но даже это было не очень-то и сложно. Добавил десяток строчек error_log, и всё. Нашёл косячок, надо будет разузнать теперь, как бы его заслать к авторам модуля. Ну да ладно, ещё успею. И дальше я пришёл к тому, что надо изменить положение блока. Поставил я его для начала в контейнер bottom.

if (isset($page['bottom']['views_0f744d1a611ac369ebe0c6474b0678b3'])) {
        $seeAlso = $page['bottom']['views_0f744d1a611ac369ebe0c6474b0678b3'];
        hide($seeAlso);
        $page['bottom']['views_0f744d1a611ac369ebe0c6474b0678b3'] = array();
        $firstKey = key($page['content']['system_main']['nodes']);
        reset($page['content']['system_main']['nodes']);
        $page['content']['system_main']['nodes'][$firstKey]['see_also'] = $seeAlso;
}

К сожалению, этот код у меня забрать нельзя: в другой инсталляции друпала, у вида будет другой идентификатор.

А вот так я прописываю в $content новый параметр see_also. И делаю я это в шаблоне page.tpl.php. Этот блок в нижнем контейнере я скрыл. А заодно теперь внутри $content появилась новая штуковина, надо отредактировать соответствующим образом:

<?php print render($content['see_also']); 

Всё хорошо, но… как же это через жопу! :-) До сих пор, уже с год, если не больше, хочу взять и написать своё и нормальное, но как представлю, сколько это делать — прихожу в уныние.

Полезное