Сделать из тизера линк на полную новость[Решено]

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

Аватар пользователя webtitan webtitan 19 мая 2009 в 10:29

Вывожу несколько тизеров/teasers(тобишь краткие новости) в блоке после содержания.Вот сайт.
Задача - сделать текст тизера !!!в блоке после содержания!!! анкором ссылки на полную новость.
Друпал 6.1
Как это провернуть ? Киньте хоть какие-то наметки

Комментарии

Аватар пользователя webtitan webtitan 19 мая 2009 в 10:45

Дело в том что таких сайтов много, везде нужно будет лезть в тему оформления ?
Средствами движка и модулей это нельзя решить ?

Аватар пользователя webtitan webtitan 19 мая 2009 в 11:00

batbug , спасибо но это немного не тот модуль.
Текст всего тизера(а не два последних слова) должен быть ссылкой на полную новость.

Аватар пользователя romass romass 19 мая 2009 в 14:54

node.tpl.php

вместо:
<?php print $content ?>

нужно вставить:


  <?php if ($teaser): ?>
     <a href=' <?php print $node_url ?>'title='<?php print $title ?>' > <?php print $content ?></a>
  <?php else: ?>
     <?php print $content ?>
  <?php endif; ?>
Аватар пользователя romass romass 19 мая 2009 в 17:10

  <?php if ($teaser && ($node->type == 'page' || $node->type == 'story' || $node->type == 'something_else')): ?>
     <a href=' <?php print $node_url ?>'title='<?php print $title ?>' > <?php print $content ?></a>
  <?php else: ?>
     <?php print $content ?>
  <?php endif; ?>

Аватар пользователя webtitan webtitan 19 мая 2009 в 20:19

romass, спасибо, внедрил этот код, все работает, НО делает ссылки из описания тизеров в блоке основного содержания, а мне нужно чтобы в ссылки превращались описания тизеров из блока под содержанием(там идет надпись "Последние публикации" и блок из пяти тизеров, вот эти тизеры как были текстом, так и остались)...
p.s. блок из пяти тизеров для которых нужно сделать эти изменения, сделан через модуль View - создан tracker и сохранен в блоке.
Налепил тут исходя из написанного romass кода, но нифига не заработало, как верно организовать проверку:Если тизер и имя блока равно tracker ?(правильно ли я мыслю что такой код уже надо вставлять уже в block.tpl.php ?)

<?php if ($teaser && ($block == 'tracker')): ?>
     <a href=' <?php print $node_url ?>'title='<?php print $title ?>' > <?php print $block->content ?></a>
  <?php else: ?>
    <?php print $block->content ?>
  <?php endif; ?>

Еще в нашел админке опцию для данного блока "Экспортировать"(т.к. это tracker), после нажатия отдается такой код(насколько я понял это код этого tracker-блока), может изменения можно произвести прямо тут ? :

<?php$view = new view;
$view->name = 'tracker555';
$view->description = 'Shows all new activity on system.';
$view->tag = 'default';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
  'teaser' => array(
    'label' => 'Teaser',
    'exclude' => 0,
    'id' => 'teaser',
    'table' => 'node_revisions',
    'field' => 'teaser',
    'relationship' => 'none',
  ),
));
$handler->override_option('sorts', array(
  'last_comment_timestamp' => array(
    'id' => 'last_comment_timestamp',
    'table' => 'node_comment_statistics',
    'field' => 'last_comment_timestamp',
    'order' => 'ASC',
    'granularity' => 'second',
  ),
));
$handler->override_option('arguments', array(
  'uid' => array(
    'id' => 'uid',
    'table' => 'users',
    'field' => 'uid',
    'default_action' => 'ignore',
    'style_plugin' => 'default_summary',
    'style_options' => array(
      'count' => TRUE,
      'override' => FALSE,
      'items_per_page' => 25,
    ),
    'wildcard' => 'all',
    'wildcard_substitution' => 'All',
    'title' => 'Recent posts for %1',
    'default_argument_type' => 'fixed',
    'default_argument' => '',
    'validate_type' => 'none',
    'validate_fail' => 'not found',
    'relationship' => 'none',
    'default_argument_fixed' => '',
    'default_argument_php' => '',
    'validate_argument_node_type' => array(
      'album' => 0,
      'artist' => 0,
      'book' => 0,
      'page' => 0,
      'story' => 0,
      'track' => 0,
    ),
    'validate_argument_php' => '',
  ),
));
$handler->override_option('filters', array(
  'status' => array(
    'id' => 'status',
    'table' => 'node',
    'field' => 'status',
    'operator' => '=',
    'value' => '1',
    'group' => 0,
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'status' => array(
      'id' => 'status',
      'table' => 'comments',
      'field' => 'status',
      'operator' => '=',
      'value' => 0,
      'group' => 0,
      'exposed' => FALSE,
      'expose' => array(
        'operator' => FALSE,
        'label' => '',
      ),
      'relationship' => 'none',
    ),
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
  'role' => array(),
  'perm' => '',
));
$handler->override_option('title', 'Последние публикации');
$handler->override_option('items_per_page', 5);
$handler->override_option('use_pager', TRUE);
$handler->override_option('style_plugin', 'table');
$handler->override_option('style_options', array(
  'override' => 1,
  'order' => 'desc',
  'columns' => array(
    'type' => 'type',
    'title' => 'title',
    'name' => 'name',
    'comment_count' => 'comment_count',
    'last_comment_timestamp' => 'last_comment_timestamp',
    'timestamp' => 'title',
    'new_comments' => 'comment_count',
  ),
  'info' => array(
    'type' => array(
      'sortable' => 1,
      'separator' => '',
    ),
    'title' => array(
      'sortable' => 1,
      'separator' => '&nbsp;',
    ),
    'name' => array(
      'sortable' => 1,
      'separator' => '',
    ),
    'comment_count' => array(
      'sortable' => 1,
      'separator' => '<br />',
    ),
    'last_comment_timestamp' => array(
      'sortable' => 1,
      'separator' => '&nbsp;',
    ),
    'timestamp' => array(
      'separator' => '',
    ),
    'new_comments' => array(
      'separator' => '',
    ),
  ),
  'default' => 'last_comment_timestamp',
));
$handler = $view->new_display('page', 'Page', 'page');
$handler->override_option('path', 'tracker');
$handler->override_option('menu', array(
  'type' => 'normal',
  'title' => 'Recent posts',
  'weight' => 0,
));
$handler->override_option('tab_options', array(
  'type' => 'none',
  'title' => NULL,
  'weight' => NULL,
));
$handler = $view->new_display('block', 'Блок', 'block_1');
?>
Аватар пользователя webtitan webtitan 19 мая 2009 в 21:30

«По-моему в настройках Views есть опция, которая тизер делает ссылкой на ноду (хотя, может я и ошибаюсь)»

Нигде не нашел..

«правки с block.tpl.php работать не будут , да и этот шаблон здесь не причем»

Не, ну как то можно переиначить приведенный вами код, чтобы обрабатывалось не содержание, а нужный мне блок ?

Аватар пользователя FORTIS FORTIS 19 мая 2009 в 23:30

Quote:
Нигде не нашел..

посмотри там когда добавляешь поле с анонсом материала можно сделать его ссылкой, а там уже настраиваешь как оно будет ссылаться, я, правда, с этим не разобрался

Аватар пользователя romass romass 19 мая 2009 в 23:57

Можно пойти другим, более длинным путем
1. в папке themes модуля View найди шаблон views-view-field.tpl и скопируй его в папку темы, которая используется.
2. Переименуй название шаблона в views-view-field--news--teaser.tpl где
news - это название view (у меня он назывался news)
teaser – название поля.
Если не уверен, как нужно назвать шаблон, то можно посмотреть в настройках view в разделе Basic settings-> Theme: Information. Там есть список всех шаблонов.
3. В шаблон вставь сведущее:

<?php

 

<a href="<?php print drupal_get_path_alias('node/'.$row->nid) ?>" title="<?php print  $row->node_title ?>"><?php print $output?></a>

?>

4. Обнови кеш
Дерзай! Больше объяснять не буду

Аватар пользователя webtitan webtitan 22 мая 2009 в 2:31

romass, спасибо за метод, при обновление кеша падает сайт Smile

Quote:
Через views элементарно решается

Если не лень, напишите пожалуйста этот "элементарный" способ. Спасибо.
ps Я уже переклацал все опции во views, есть там вывод ссылки на полную новость, есть вывод названия новости в виде ссылки и т.д., но чтобы всё описание тизера становилось анкором ссылки на полную новость - этого никак найти не могу.

Аватар пользователя Лампочка Лампочка 24 мая 2009 в 14:07

добавляете поле Материал: nid, делаете его скрытым. Потом добавляете поле анонса, жмете на галочку "выводить в виде ссылки" (не помню точно, как там это называется), у вас должно раскрыться поле с вводом для ссылки, а ниже доступные значения токена (модуль токен должен быть установлен), пишите в УРЛ ссылки node/[nid] (опять же точно не помню, как пишется [nid]). ТОгда весь текст анонса будет ссылкой на ноду.

Аватар пользователя webtitan webtitan 25 мая 2009 в 21:03

Quote:
добавляете поле Материал: nid, делаете его скрытым. Потом добавляете поле анонса, жмете на галочку "выводить в виде ссылки" (не помню точно, как там это называется), у вас должно раскрыться поле с вводом для ссылки, а ниже доступные значения токена (модуль токен должен быть установлен), пишите в УРЛ ссылки node/[nid] (опять же точно не помню, как пишется [nid]). ТОгда весь текст анонса будет ссылкой на ноду.

Все вышло легко и непринужденно Smile
Лампочка, респект, спасибо за помощь.
Всем кто принял участие в дискуссии - тоже спасибо.

Аватар пользователя Лампочка Лампочка 26 мая 2009 в 10:49

Да не за что Smile В этим [nid]-ом можно еще по-разному играться. Например, выводить родительской ноды (по нодрефференс), а ссылку делать на дочернюю.

Аватар пользователя 0legka 0legka 16 февраля 2012 в 16:09

"romass" wrote:

<?php

 <a href="<?php print drupal_get_path_alias('node/'.$row->nid) ?>" title="<?php print  $row->node_title ?>"><?php print $output; ?></a>

?>

не совсем верно ...

<a href="<?php print drupal_get_path_alias('node/'.$row->nid) ?>" title="<?php print  $row->node_title ?>"><?php print $output; ?></a>

вот так пожалуй должно работать Lol