Индивидуальный логотип для каждой органической группы


Я хочу добавить логотип (поле изображения CCK) в узлы группы и показывать его, когда пользователи посещают эту группу.
Есть ли для этого какой-нибудь модуль?

Author: kiamlaluno, 2011-05-01

5 answers

Я пишу этот модуль для визуализации пользовательского логотипа для каждой органической группы:

function og_logo_block($op = 'list', $delta = 0, $edit = array()) {
    if ($op == "list") {
        $block = array();
        $block[0]["info"] = t('OG Logo Block');
        return $block;
    } else if ($op == 'view') {
        global $theme;
        global $node;
        $block['subject'] = '';
        $settings = theme_get_settings($theme);
        if (($node = og_get_group_context()) && node_access('view', $node)) {
            $block['content'] = l('<img alt="' . $node->title . '" title="' . $node->title . '" src="' . base_path() . $node->field_logo[0]['filepath'] . '" />', "node/$node->nid", array('html'=>true));
        } else if ($settings['default_logo']) {
            $block['content'] = '<img src="' . base_path() . 'sites/all/themes/' . $theme . '/logo.png" alt="this is logo" />';
        } else {
            $block['content'] = '<img src="' . base_path() . $settings['logo_path'] . '" alt="this is logo" />';
        }
    }
    return $block;
}
 3
Author: Mohammad Ali Akbari, 2011-05-03 19:34:28

Такого модуля как такового нет, но я сделал это некоторое время назад. Вам нужно будет прикрепить логотип к узлу при загрузке узла.

Обычно я делал это с уровня темы, выполнив следующие действия:

  • проверьте, является ли страница страницей группы
  • если это страница группы, то замените логотип по умолчанию логотипом группы, содержащимся в узле как $node->group_logo
 0
Author: Geshan, 2011-05-02 02:19:41

Я не использую OG, поэтому я не могу подробно объяснить, однако стратегия будет заключаться в создании template.php файл в папке темы. В этом файле создайте функцию подготовки шаблона, которая добавляет класс в заголовок узла OG с некоторой разметкой. Класс должен предваряться логотипом, а затем некоторым кодом PHP, чтобы добавить уникальный идентификатор для узла. Поскольку существуют определенные правила использования символов в имени класса, важно передать строку через некоторый код, который ее очистит. Затем в файле CSS используйте класс, чтобы добавить фоновое изображение к элементу. Поскольку мы говорим об OpenAtrium, вот как они добавляют все значки в пункты меню.

Вполне возможно, что, используя тему Дзен или используя что-то вроде модуля контекста, конкретный OG является уникальным классом тела. Например, на groups.drupal.org в группу "Местоположение и сопоставление" добавлен og-контекст-303 для каждого узла в этой группе. Тогда решение состоит в том, чтобы добавить селектор CSS, например body.og-context-303 h1.title {[image type stuff here], background:url(images/map-icon.png)}. Если есть только десять групп, тогда нужно добавить только десять строк CSS.

 0
Author: Adam S, 2011-05-02 02:20:22

Просто добавьте обычное поле изображения с помощью CCK или, в соответствии с Drupal 7 и выше, поле изображения, реализованное модулем Fields, который поставляется с модулями ядра Drupal.

 0
Author: kiamlaluno, 2011-05-30 20:10:44