Индивидуальный логотип для каждой органической группы
Я хочу добавить логотип (поле изображения CCK) в узлы группы и показывать его, когда пользователи посещают эту группу.
Есть ли для этого какой-нибудь модуль?
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;
}
Такого модуля как такового нет, но я сделал это некоторое время назад. Вам нужно будет прикрепить логотип к узлу при загрузке узла.
Обычно я делал это с уровня темы, выполнив следующие действия:
- проверьте, является ли страница страницей группы
- если это страница группы, то замените логотип по умолчанию логотипом группы, содержащимся в узле как
$node->group_logo
Я не использую 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.
Просто добавьте обычное поле изображения с помощью CCK или, в соответствии с Drupal 7 и выше, поле изображения, реализованное модулем Fields, который поставляется с модулями ядра Drupal.