Активная ссылка в шапке модуля. Хак.

1111
Доброго времени суток!

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

1. правим файл /modules/module.tpl в вашем шаблоне
вместо строки
Код PHP:
{$mod.title} 
записываем в него следующий код
Код PHP:
          {php}
             $inCore     = cmsCore::getInstance();
  	     $config = $inCore->yamlToArray($this->_tpl_vars['mod']['config']);
             if ($config['modlink']) { 
                echo '<a href="'.$config['modlink'].'"style="text-decoration:none;color:#416C97;">'.$this->_tpl_vars['mod']['title'].'</a>';
             } else { 
            echo $this->_tpl_vars['mod']['title'];
           } 
           {/php}
приведу свой module.tpl, он небольшой


Код PHP:
<div class="{$mod.css_prefix}module">
    {if $mod.showtitle neq 0}
        <div class="{$mod.css_prefix}moduletitle">

          {php}
             $inCore     = cmsCore::getInstance();
  	     $config = $inCore->yamlToArray($this->_tpl_vars['mod']['config']);
             if ($config['modlink']) { 
                echo '<a href="'.$config['modlink'].'"style="text-decoration:none;color:#416C97;">'.$this->_tpl_vars['mod']['title'].'</a>';
             } else { 
            echo $this->_tpl_vars['mod']['title'];
           } 
           {/php}

            {if $cfglink}
                <span class="fast_cfg_link">
                    <a href="javascript:moduleConfig({$mod.module_id})" title="Настроить модуль">
                        <img src="/templates/_default_/images/icons/settings.png"/>
                    </a>
                </span>
            {/if}
        </div>
    {/if}
    <div class="{$mod.css_prefix}modulebody">{$mod.body}</div>
</div>

2. выбираем нужный модуль, например последние новости, пусть есть раздел в статьях Новости, куда мы сделаем ссылку.
Т.е. это у нас mod_latest модуль

заходим в /admin/modules/mod_latest
там лежит backend.xml файл с настройками данного модуля последних новостей

теперь просто добавляем в конец строку
Код PHP:
  <param type="string" name="modlink" title="Активная ссылка в заголовке" default="" />
приведу полный текст файла

Код PHP:
<?xml version="1.0" encoding="windows-1251"?>
<backend>    
    <module>
        <id>mod_latest</id>
        <title>Последние материалы</title>
    </module>
    <params>
        <param type="number" name="newscount" title="Количество материалов" units="шт." default="5" />
        <param type="flag" name="showdesc" title="Показывать анонсы" default="on" />
        <param type="flag" name="showdate" title="Показывать даты и авторов" default="on" />
        <param type="flag" name="showcom" title="Показывать число комментариев" default="on" />
        <param type="flag" name="showrss" title="Показывать ссылку на RSS" default="on" />
        <param type="list_db" name="cat_id" title="Материалы из раздела" src="cms_category" src_title="title" src_value="id" tree="1" />
        <param type="flag" name="subs" title="Вместе с подразделами" default="off" />
		<param type="flag" name="is_pag" title="Использовать пагинацию" default="on" />
        <param type="string" name="modlink" title="Активная ссылка в заголовке" default="" />
    </params>
</backend>
и все!!!

3. теперь в настройках модуля можно поставить ссылку вида http:// вашсайт.ру/novosti или просто /novosti
и заголовок модуля станет активной ссылкой на раздел статей Новости


а если убрать ссылку в настройках - то заголовок станет просто текстом, как и раньше

единственное, придется перелопатить кучу модулей )))

я сделал для модуля Новые пользователи вот настройка модуля


Демо: можно зайти СЮДА и кликнуть по заголовку модуля Новые пользователи

ниже можно сказать Спасибо! smile
Авторизация в окне в стиле Apple. 3D transform + CSS3. Хак. | Замена sendmail для Denwer
Комментарии (13)
Reborn 28 июня 2012 в 17:41 0
Однозначно спасиб и +++
Всё на самом деле просто.
demous 28 июня 2012 в 18:06 0
Мне этого реально не хватало, спасибо!
Роман 28 июня 2012 в 18:10 +1
Такое надо включить в офф релиз, многим бы пригодилось
Крот 28 июня 2012 в 18:16 +4
надо тему сделать на форуме - что нужно добавить в офф.релиз из того что сделано
там будет проще чем в блогах выбрать что нужно, даже если разработчики не включат в оффрелиз
Malanas 28 июня 2012 в 18:42 0
Давно думал как сделать,все руки не доходили. Спасибо.
Malstein 28 июня 2012 в 18:56 0
хм интересная вещь!!!Спасибо возьму на заметку
Mr.Andreius 28 июня 2012 в 19:50 0
Плезно. Плюсую в мемориз.
Надежда 28 июня 2012 в 20:27 0
Полезно!
Reborn 28 июня 2012 в 20:36 -1
Вот думаю,как бэ добавить и4о адну линку,вот сюда
Reborn 28 июня 2012 в 20:37 -1
та шож такое,фоты не грузятся..
Анатолий 29 июня 2012 в 05:26 0
+ smile устал уже копировать файлы модулей для каждого отдельный )))))
r2 29 июня 2012 в 14:49 0
я бы сделал по-другому, не через свойства каждого отдельного модуля, а через общую форму редактирования
то есть на той странице, где заголовок модуля вводится
это конечно чуть сложнее, надо поле в базе добавлять и сохранение/загрузку поля добавить, но зато действовать будет на все модули сразу
Крот 29 июня 2012 в 16:19 +1
предлагаю сделать это в оффрелизе (или в сервиспаке на него) smile
а потом, когда выйдет релиз с данной функцией, я просто уберу это из своего шаблона

ИМХО чем меньше вмешательства в систему, тем проще