Название модуля в виде ссылки

 

Бывает появляется необходимость название какого либо модуля сделать ссылкой и сразу не понятно как это можно осуществить, но добрые люди нашли выход из данной ситуации. Вот парочка примеров реализации ссылки в заголовке модуля.

Пример первый:

Нам нужно найти файл Ваш_сайт/templates/Ваш_шаблон/html/modules.php. Он отвечает за стили отображения модулей. Может так получится что в папке вашего шаблона не оказалась данного файла и папки html, в таком случае нам нужно в папке Вашего шаблона создать папку html и пустой файлmodules.php или пройти по адресу  Ваш_сайт/templates/system/html и из него скопировать в шаблон своего сайта папку html с единственным файлом modules.php.

Следующее что нам нужно сделать это добавить в него функцию следующего вида:

<?php
function modChrome_xhtmlwithlink($module, &$params, &$attribs)
{ 
$headerLevel = "3";
	if (!empty ($module->content)) : ?>
		<div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
			<?php if ($module->showtitle) : ?>
				<?php if($module->id == 24) : ?>
					<h<?php echo $headerLevel; ?>>
						<a href="/news.html" class="titname">
							<?php echo $module->title;?>
						</a>
					</h<?php echo $headerLevel; ?>>
				<?php endif; ?>
			<?php endif; ?>
			<?php if ($module->showtitle) : ?>
				<?php if($module->id == 23) : ?>
					<h<?php echo $headerLevel; ?>>
							<?php echo $module->title;?>
					</h<?php echo $headerLevel; ?>>
				<?php endif; ?>
			<?php endif; ?>
			<?php echo $module->content; ?>
		</div>
	<?php endif;
}
?>

где $module->id == 24 — id модуля, для которого Вы хотите сделать заголовок в виде ссылки.

Как видите модулей в условии может быть несколько, а все не упомянутые выводятся в обычном режиме.
Далее в блоках вывода модулей необходимо вписать нужный стиль отображения, например так:

Блоки вывода модулей находятся в папке Вашего шаблона под именем index.php.

Такой способ не совсем хорош, так как Вам придется добавлять каждый выводимый модуль в данный код чтобы он правильно отображался.

Пример второй:

Метод годится только для модулей содержащих произвольный html/javascript-код. Суть: скрыть заголовок модуля в настройках, а в коде содержимого модуля над содержимым сделать нужный заголовок.

Пример третий:

Идем в phpmyadmin и ищем в БД своего сайта таблицу jos_modules. В столбце title находим название нужного модуля, жмем изменить и редактируем
<a>Название</a>

Пример четвертый:

Правим файл administrator/components/com_modules/admin.modules.html.php

Ищем:

<tr>
    <td width="100" class="key">
        <?php echo JText::_( 'Show title' ); ?>:
     </td>
     <td>
        <?php echo $lists['showtitle']; ?>
     </td>
</tr>

Сразу за этим блоком кода вставляем:
<tr>
    <td class="key">
       <label for="islink">
          <?php echo JText::_( 'Title' ).' '.JText::_( 'WEBLINK' ).'?'."\n"; ?>
       </label>
    </td>
    <td>
    <?php if ($params->get('islink', '') == 2){$ch2= 'checked="checked"'; $ch1=''; $dis='';}
    else{$ch1= 'checked="checked"'; $ch2=''; $dis='style="visibility:hidden"';} ?>
       <input type="radio" name="params[islink]" value="1" onclick="togl(1);" <?php echo $ch1 ?>/> <?php echo JText::_( 'NO' )."\n"; ?>
       <input type="radio" name="params[islink]" value="2" onclick="togl(2);" <?php echo $ch2 ?>/> <?php echo JText::_( 'YES' )."\n"; ?>     <script language="javascript" type="text/javascript">
       <!--function togl(k){
            if (k==1){document.getElementById("isweblink").style.visibility="hidden";}
            else{document.getElementById("isweblink").style.visibility="visible";}}
       //-->
       </script>  </td>
    </tr>
<tr>
    <td class="key">
        <label for="isweblink">
            <?php echo JText::_( 'WEBLINK' ); ?>
        </label>
    </td>
    <td id="isweblink" <?php echo $dis ?>>
        <input class="text_area" type="text" name="params[isweblink]" size="35" value="<?php echo $params->get('isweblink', ''); ?>" />
    </td>
</tr>

Он обеспечивает нам в админке возможность активизировать заголовок модуля как ссылку.
Далее идём править заголовок в модуле. Правим файл templates/system/html/modules.php:

<h3><?php echo $module->title; ?></h3>

Меняем на:

<?php if($params->get('islink') == 2){
    echo '<h3><a href="'.$params->get('isweblink').'">'.$module->title.'</a></h3>'."\n";
  }else{?>
    <h3><?php echo $module->title; ?></h3>
<?php }?>

Получаем возможность добавить ссылку в заголовок модуля.

Далее идём в каскад шаблона и правим стиль ссылки. Например так:

.moduletable-custom a {
color: #FFFFFF;
text-decoration:none;
}

На других версиях Джумлы не проверялось, но вполне может сработать, так как, существенные доработки отображения модулей не проводились. 

Печать

Добавить комментарий

Защитный код
Обновить