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

+47
1.82K
Доброго времени суток!

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

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


  1. <div class="{$mod.css_prefix}module">
  2. {if $mod.showtitle neq 0}
  3. <div class="{$mod.css_prefix}moduletitle">
  4.  
  5. {php}
  6. $inCore = cmsCore::getInstance();
  7. $config = $inCore->yamlToArray($this->_tpl_vars['mod']['config']);
  8. if ($config['modlink']) {
  9. echo '<a href="'.$config['modlink'].'"style="text-decoration:none;color:#416C97;">'.$this->_tpl_vars['mod']['title'].'</a>';
  10. } else {
  11. echo $this->_tpl_vars['mod']['title'];
  12. }
  13. {/php}
  14.  
  15. {if $cfglink}
  16. <span class="fast_cfg_link">
  17. <a href="javascript:moduleConfig({$mod.module_id})" title="Настроить модуль">
  18. <img src="/templates/_default_/images/icons/settings.png"/>
  19. </a>
  20. </span>
  21. {/if}
  22. </div>
  23. {/if}
  24. <div class="{$mod.css_prefix}modulebody">{$mod.body}</div>
  25. </div>
  26.  

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

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

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

  1.  
  2. <?xml version="1.0" encoding="windows-1251"?>
  3. <backend>
  4. <module>
  5. <id>mod_latest</id>
  6. <title>Последние материалы</title>
  7. </module>
  8. <params>
  9. <param type="number" name="newscount" title="Количество материалов" units="шт." default="5" />
  10. <param type="flag" name="showdesc" title="Показывать анонсы" default="on" />
  11. <param type="flag" name="showdate" title="Показывать даты и авторов" default="on" />
  12. <param type="flag" name="showcom" title="Показывать число комментариев" default="on" />
  13. <param type="flag" name="showrss" title="Показывать ссылку на RSS" default="on" />
  14. <param type="list_db" name="cat_id" title="Материалы из раздела" src="cms_category" src_title="title" src_value="id" tree="1" />
  15. <param type="flag" name="subs" title="Вместе с подразделами" default="off" />
  16. <param type="flag" name="is_pag" title="Использовать пагинацию" default="on" />
  17. <param type="string" name="modlink" title="Активная ссылка в заголовке" default="" />
  18. </params>
  19. </backend>
  20.  
и все!!!

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


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

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

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

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

ниже можно сказать Спасибо! 😊
0
Reborn Reborn 12 лет назад #
Однозначно спасиб и +++
Всё на самом деле просто.
0
demous demous 12 лет назад #
Мне этого реально не хватало, спасибо!
+1
Роман Роман 12 лет назад #
Такое надо включить в офф релиз, многим бы пригодилось
+4
Крот Крот 12 лет назад #
надо тему сделать на форуме - что нужно добавить в офф.релиз из того что сделано
там будет проще чем в блогах выбрать что нужно, даже если разработчики не включат в оффрелиз
0
Malanas Malanas 12 лет назад #
Давно думал как сделать,все руки не доходили. Спасибо.
0
Malstein Malstein 12 лет назад #
хм интересная вещь!!!Спасибо возьму на заметку
0
Mr.Andreius Mr.Andreius 12 лет назад #
Плезно. Плюсую в мемориз.
0
Надежда Надежда 12 лет назад #
Полезно!
-1
Reborn Reborn 12 лет назад #
Вот думаю,как бэ добавить и4о адну линку,вот сюда
-1
Reborn Reborn 12 лет назад #
та шож такое,фоты не грузятся..
0
Анатолий Анатолий 12 лет назад #
+ smile устал уже копировать файлы модулей для каждого отдельный )))))
0
r2 r2 12 лет назад #
я бы сделал по-другому, не через свойства каждого отдельного модуля, а через общую форму редактирования
то есть на той странице, где заголовок модуля вводится
это конечно чуть сложнее, надо поле в базе добавлять и сохранение/загрузку поля добавить, но зато действовать будет на все модули сразу
+1
Крот Крот 12 лет назад #
предлагаю сделать это в оффрелизе (или в сервиспаке на него) smile
а потом, когда выйдет релиз с данной функцией, я просто уберу это из своего шаблона

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

Еще от автора

Инвайтер 1.9 для 1.10.6
Доброго всем времени суток! Решил нарушить сложившуюся здесь традицию и решил вернуться сюда с обновлениями.
Инстант "по взрослому". Часть 2. Авторизация. Аякс. v1.10
Доброго всем времени суток! Продолжая серию Инстант "по взрослому", сегодня хотел бы показать более мощный плагин авторизации.
Инстант "по взрослому". Часть 1. Авторизация. Счетчик неверных входов. v1.10
Доброго всем дня! Продолжим наши уроки по усовершенствованию Инстанта. Сегодня мы будем изучать и усовершенствовать первую ветку Инстанта.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.