[Решено] Изменить ссылки выводимые модулем Notifications

Главные вкладки

Аватар пользователя jeker jeker 11 марта 2011 в 15:25

Внизу ноды выводятся ссылки, но мне кажется что они загромождают сайт, уж больно их много.
Мне бы хотелось изменить нижнею часть ноды так чтобы вместо ссылок выводились пиктограммы/кнопки.
Так как я не знаю как правильно сформулировать вопрос при помощи поиска я ничего не нашел. Прошу вашей помощи, поделитесь ссылками которые помогут мне решить поставленную задачу.

В ходе поиска вот что мне удалось выяснить:
за выводом ссылок отвечает $links, в котором содержатся нужные мне ссылки
модуль Notifications создает эти ссылки в зависимости от ситуации и добавляет их в массив $links
А вот где именно ссылки создаются и как мне их подменить я не знаю

Комментарии

Аватар пользователя jeker jeker 11 марта 2011 в 18:21

Я тут покопался и нашел где именно создаются ссылки - это модуль notifications_ui.module, который находится \sites\all\modules\notifications\notifications_ui, а вот фанкция который формирует ссылку

<?php
function notifications_ui_build_links($options$prefix 'notifications_') {
  global 
$user;

  

$links = array();  
  foreach (
$options as $index => $option) {
    if (!empty(
$option['subscription'])) {
      
// Unsubscribe link
      
$title t('Unsubscribe from: !name', array('!name' => $option['name']));
      
$props notifications_get_link('unsubscribe', array('sid' => $option['subscription']->sid'destination' => $_GET['q']));
    }
    else {
      
// Subscribe link
      
$title t('Subscribe to: !name', array('!name' => $option['name']));
      
$props notifications_get_link('subscribe', array('uid' => $user->uid'type' => $option['type'], 'confirm' => TRUE'fields' => $option['fields'], 'destination' => $_GET['q']));
    }
    
$links[$prefix $index] = array(
      
'title' => $title,
      
'html' => TRUE,
      
'href' => $props['href'],
    ) + 
$props['options'];      
  }
  return 
$links;  
}
?>

Что с этим делать непонятно?
Использовать hook_link_alter, подскажите как?

Аватар пользователя Tinnka Tinnka 11 марта 2011 в 20:45

jeker wrote:

Что с этим делать непонятно?
Использовать hook_link_alter, подскажите как?

тоже ищу ответ на этот вопрос

Аватар пользователя jeker jeker 10 ноября 2015 в 11:47

У меня все получилось, при помощи написания модуля который использует hook_link_alter

Осталось только нарисовать нормальные кнопки.

Аватар пользователя Viola Viola 30 марта 2011 в 21:38

jeker, спасибо огромное за наводку! Я тоже как раз озадачилась этим вопросом и благодаря вашей подсказке кое-что набросала.

Аватар пользователя Viola Viola 10 апреля 2011 в 14:44

jeker, не подскажете, как вы определяли тип подписки в случае ссылки для отмены подписки? В случае ссылки для подписки все понятно по содержанию 'href', а вот для отмены подписки в 'href' нет никакого намека на тип. Я уже была довольна результатом, но потом включила подписку на таксономию и теперь надо что-то другое придумать..

Аватар пользователя jeker jeker 12 апреля 2011 в 14:03

Я искал в строке слово "uns", вот так:
if (substr_count($links['notifications_0']['href'],"uns")>0)

Вот пример кода:

<?php
if ($links['notifications_0']['title']) 
  {
      
$links['notifications_0']['atributes']=$links['notifications_0']['title'];
       
$links['notifications_0']['atributes']=str_replace("\"","'",$links['notifications_0']['atributes']);
      if (
substr_count($links['notifications_0']['href'],"uns")>0)
            {
              
$links['notifications_0']['title']='<img src="/images/post-mn.png"
             title="'
.$links['notifications_0']['atributes'].'" alt="'.$links['notifications_0']['atributes'].'"/>';
             }
        else 
            {
             
$links['notifications_0']['title']='<img src="/images/post-pl.png"
             title="'
.$links['notifications_0']['atributes'].'" alt="'.$links['notifications_0']['atributes'].'"/>';
             }

?>