Вопрос к людям хорошо знающим php и особенности друпал, как сделать чтоб в блоке random image выводилось 2 картинки ? ПО форуму поискал ничегго не нашел, блок как я понял формируется в коде
<?php
if (user_access('access content')) {
switch ($delta) {
case 0:
$images = image_get_latest();
$block['subject'] = t('Latest image');
$block['content'] = theme('image_block_latest', $images, IMAGE_THUMBNAIL);
break;
case 1:
$images = image_get_random();
$block['subject'] = t('Random image');
$block['content'] = theme('image_block_random', $images, IMAGE_THUMBNAIL);
break;
?>
Пробовал изменить вот так
<?php if (user_access('access content')) {
switch ($delta) {
case 0:
$images = image_get_latest();
$block['subject'] = t('Latest image');
$block['content'] = theme('image_block_latest', $images, IMAGE_THUMBNAIL);
break;
case 1:
$images = image_get_random();
$block1['subject'] = t('Random image');
$block1['content'] = theme('image_block_random', $images, IMAGE_THUMBNAIL);
$images2 = image_get_random();
$block2['subject'] = t('Random image');
$block2['content'] = theme('image_block_random', $images2, IMAGE_THUMBNAIL);
$block= $block1 . " ". $block2 ;
break;
?>
Блок вообще епрестает работать, может кто нить подсказать ?
Комментарии
Изучи theme('image_block_random', $images, IMAGE_THUMBNAIL);
К сожалению поиск не дал мне ответов на вопросы по изучению theme('image_block_random', $images, IMAGE_THUMBNAIL);, может кто нить дать наводку на нормальный материал (желательно на русском) или что нибудь рассказать о это функции и о рецепте решения моей проблемы
<?php if (user_access('access content')) {
switch ($delta) {
case 0:
$images = image_get_latest();
$block['subject'] = t('Latest image');
$block['content'] = theme('image_block_latest', $images, IMAGE_THUMBNAIL);
break;
case 1:
$images = image_get_random();
$block['subject'] = t('Random image');
$block['content'] = theme('image_block_random', $images, IMAGE_THUMBNAIL);
$images2 = image_get_random();
$block['content'] += theme('image_block_random', $images2, IMAGE_THUMBNAIL);
break;?>
А так работает?![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
ЗЫ...Править в коде модуля - "ЗЛО"!!!
посмотри как работает в модуле функция theme_image_block_random.
Переопределяется в темке сайта, поиск по: друпал тематизация
2 glu2006, к содалению так тоде не работает, каким то образом видно получается что переменная $block получается пустая, так как блок вообше не появляется. Сейчас блок генерации модуля с твоим кодом выглядит так.
<?php
function image_block($op = 'list', $delta = 0) {
switch ($op) {
case 'list':
$block[0]['info'] = t('Latest image');
$block[1]['info'] = t('Random image');
return
$block;case 'view':
if (user_access('access content')) {
switch ($delta) {
case 0:
$images = image_get_latest();
$block['subject'] = t('Latest image');
$block['content'] = theme('image_block_latest', $images, IMAGE_THUMBNAIL);
break;
case 1:
$images = image_get_random();
$block['subject'] = t('Random image');
$block['content'] = theme('image_block_random', $images, IMAGE_THUMBNAIL);
$images2 = image_get_random();
$block['content'] += theme('image_block_random', $images2, IMAGE_THUMBNAIL);
break;
}
}
return $block;
}
}
?>
но к сожалению не фурычит (
тоже бьюсь над этой проблемой. только с latest image.
Вот нашел в файле модуля такую подсказку:
/**
* Fetch a random N image(s) - optionally from a given term.
*/
function image_get_random($count = 1, $tid = 0) {
if ($tid != 0) {
$result = db_query_range(db_rewrite_sql("SELECT DISTINCT(n.nid), RAND() AS rand FROM {term_node} tn LEFT JOIN {node} n ON n.nid = tn.nid WHERE n.type='image' AND n.status = 1 AND tn.tid = %d ORDER BY rand"), $tid, 0, $count);
}
else {
$result = db_query_range(db_rewrite_sql("SELECT DISTINCT(n.nid), RAND() AS rand FROM {node} n WHERE n.type = 'image' AND n.status = 1 ORDER BY rand"), 0, $count);
}
$output = array();
while ($nid = db_fetch_object($result)) {
$output[] = node_load(array('nid' => $nid->nid));
}
return $output;
}
только пока мне это мало чем помогло. продолжаю втыкать в код.
Короче, склифосовский.
Смотрим модуль image, конкретно по тематизации:
* Theme a random block
*/
function theme_image_block_random($images, $size) {
return l(image_display($images[0], $size), 'node/'. $images[0]->nid, array('html' => TRUE));
}
Соответственно, затемизируй эту функцию у себя, так чтобы рисовалось две:
return l(image_display($images[0], $size), 'node/'. $images[0]->nid, array('html' => TRUE)) . "какой-то разделитель" . l(image_display($images[1], $size), 'node/'. $images[1]->nid, array('html' => TRUE));
}
Сам добавь проверку того что рисунков больше одного.
Спасибо большое.
Добавлю еще для тех кто будет решать такую же проблему, чтобы показывалось 2 разные фотографии, соотбетственно $images[0] и $images[1], нужно в функции function image_get_random установить параметр $count = 2, иначе у массива $images будет только значение в ячейке [0].
Вот код измененных функций.
<?php function theme_image_block_random($images, $size) {
return l(image_display($images[0], $size), 'node/'. $images[0]->nid, array('html' => TRUE)) . " " . l(image_display($images[1], $size), 'node/'. $images[1]->nid, array('html' => TRUE));
}?>
и
<?php function image_get_random($count = 2, $tid = 0) {
if ($tid != 0) {
$result = db_query_range(db_rewrite_sql("SELECT DISTINCT(n.nid), RAND() AS rand FROM {term_node} tn LEFT JOIN {node} n ON n.nid = tn.nid WHERE n.type='image' AND n.status = 1 AND tn.tid = %d ORDER BY rand"), $tid, 0, $count);
}
else {
$result = db_query_range(db_rewrite_sql("SELECT DISTINCT(n.nid), RAND() AS rand FROM {node} n WHERE n.type = 'image' AND n.status = 1 ORDER BY rand"), 0, $count);
}
$output = array();
while ($nid = db_fetch_object($result)) {
$output[] = node_load(array('nid' => $nid->nid));
}
return $output;
}?>
Нет неправильно.
Я ок-ся недосмотрел, извиняюсь. В общем тут у них недоработка, можно было просто сунуть кол-во выводимых в админку, и выводить без гемора.
Не меняйте чужой код.
Просто создайте блок, вставьте такой код php:
print l(image_display($images[0], IMAGE_THUMBNAIL), 'node/'. $images[0]->nid, array('html' => TRUE));
print l(image_display($images[1], IMAGE_THUMBNAIL), 'node/'. $images[1]->nid, array('html' => TRUE));
Nikit спасибо большое, а как ты нарыл эту информацию ?
Всегда пожалуйста. Просто посмотрел код модуля, ну и плюс знание апи друпала.
Модуль Image изменили и теперь в блоке "Random image" или другой какой модуль за это отвечающий, можно выставлять число изображений.
Мой вопрос: как сделать определённого размера изображение выводимое в блоке.
Просьба если есть возможность написать код и куда его вводить, а не посылать рассматривать модули jQuery и другие, интересует тока модуль Image правка кода в самом модуле или в другом месте.
П.С. Почему в самом модуле, так потому что в блоке нельзя прописывать рнр коды и.д.
Заранее благодарю!
Image же имеет свой "ресайзер"...