Проблема в том, что не знаю как реализовать вывод дополнительного текста под картинкой к баннеру. В админке в "Менеджер баннеров" создаю новый баннер, выбираю картинку, сохраняю. Иду на сайт - картинка есть, ссылка работает, всё норм. Думаю - а как бы теперь добавить к картинке дополнительный текст снизу? Иду редактировать баннер, вижу 2 поля: "Пользовательский код" и "Описание/Примечания". Ага! Кто-то из них двоих. Сначала пишу текст в "Описание/Примечания", сохраняю, иду на сайт - нету текста. Печально Иду обратно редактировать баннер, пишу текст в "Пользовательский код", сохраняю. Иду на сайт - текст есть, а картинка пропала Что делать? Иду в Total Commander, нахожу, что за вывод баннера ответственнен файл modules\mod_banners\tmpl\default.php Открываю его, и что я вижу? Код (CODE): <div class="banneritem<?php echo $params->get( 'moduleclass_sfx' ) ?>"> <?php echo modBannersHelper::renderBanner($params, $item); ?> <div class="clr"></div> </div> И всё. Где находится код, который отвечает за отображение баннеров? Как включить одновременное отображение картинки и пользовательского кода?
Код, который отвечает за отображение баннера, скорее всего, находится в папке с модулем (которым Вы тот баннер, собственно, и выставляете). А вот с подписью баннеров необходимости как-то пока не возникало... На Джумле 1.0 вроде как можно было создавать отдельно модуль под вывод баннера, а вот насчет версии 1.5 не разбирался.
Разобрался. Надо в файле modules\mod_banners\helper.php заменить Код (CODE): $html = str_replace( '{CLICKURL}', $link, $item->custombannercode ); $html = str_replace( '{NAME}', $item->name, $html ); на Код (CODE): $htmlUserCode = str_replace( '{CLICKURL}', $link, $item->custombannercode ); $htmlUserCode = str_replace( '{NAME}', $item->name, $htmlUserCode ); //добавлено для одновременного отображения картинки и текста $image = '<img src="'.$baseurl.'images/banners/'.$item->imageurl.'" alt="'.JText::_('Banner').'" />'; if ($item->clickurl) { switch ($params->get( 'target', 1 )) { // cases are slightly different case 1: // open in a new window $a = '<a href="'. $link .'" target="_blank">'; break; case 2: // open in a popup window $a = "<a href=\"javascript:void window.open('". $link ."', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\">"; break; default: // formerly case 2 // open in parent window $a = '<a href="'. $link .'">'; break; } $html = $a . $image . '</a><br />' . $htmlUserCode; } else { $html = $image . '<br />' . $htmlUserCode; } //конец добавленного блока То есть был тупо добавлен код следующего блока.
Дополнение: а этот стандартный модуль Joomla для баннеров только 1 баннер что ли умеет показывать? На несколько у него силёнок не хватает?
Скажите вот ещё. В файле modules\mod_banners\tmpl\default.php есть строки Код (CODE): <?php if ($headerText) : ?> <div class="bannerheader"><?php echo $headerText ?></div> Которые, как я понимаю, отвечают за вывод заголовка модуля баннера. Я изменяю код на следующий: Код (CODE): <?php if ($headerText) : ?> <div class="bannerheader"><?php // берем ссылку на объект базы данных $db =& JFactory::getDBO(); // подготовка имен $tableName = $db->nameQuote('jos_banner'); $columnName = $db->nameQuote('cid'); // строим SQL $sql = "SELECT $columnName FROM $tableName"; // предварительно устанавливаем текст запроса $db->setQuery($sql); // выполняем запрос и в зависимости от ответа выполняем соответствующее действие if ($db->query()) { // успешно выполнился echo "Yes"; } else { // неудача (например, ошибка в синтаксисе SQL) echo "No"; } echo $headerText ?></div> Но вместо YES и заголовка модуля баннеров выводится только заголовок модуля баннеров, хотя в таблице jos_banner есть 2 строки. Что я делаю не так?