Вывожу несколько тизеров/teasers(тобишь краткие новости) в блоке после содержания.Вот сайт.
Задача - сделать текст тизера !!!в блоке после содержания!!! анкором ссылки на полную новость.
Друпал 6.1
Как это провернуть ? Киньте хоть какие-то наметки
Комментарии
Откройте файл node.tpl.php вашей темы и пишите что надо.
Дело в том что таких сайтов много, везде нужно будет лезть в тему оформления ?
Средствами движка и модулей это нельзя решить ?
ReadMoreLink но вставлять будет в конец
[delete]
batbug , спасибо но это немного не тот модуль.
Текст всего тизера(а не два последних слова) должен быть ссылкой на полную новость.
Много - понятие растяжимое. Не так велики переделки.
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 тела if и else - одинаковые?
А как можно сделать вывод тизера ссылкой для определенных типов материалов?
проверять $node->type
<?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; ?>
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' => ' ',
),
'name' => array(
'sortable' => 1,
'separator' => '',
),
'comment_count' => array(
'sortable' => 1,
'separator' => '<br />',
),
'last_comment_timestamp' => array(
'sortable' => 1,
'separator' => ' ',
),
'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');
?>
По-моему в настройках Views есть опция, которая тизер делает ссылкой на ноду (хотя, может я и ошибаюсь)
правки с block.tpl.php работать не будут , да и этот шаблон здесь не причем
«По-моему в настройках Views есть опция, которая тизер делает ссылкой на ноду (хотя, может я и ошибаюсь)»
Нигде не нашел..
«правки с block.tpl.php работать не будут , да и этот шаблон здесь не причем»
Не, ну как то можно переиначить приведенный вами код, чтобы обрабатывалось не содержание, а нужный мне блок ?
посмотри там когда добавляешь поле с анонсом материала можно сделать его ссылкой, а там уже настраиваешь как оно будет ссылаться, я, правда, с этим не разобрался
Можно пойти другим, более длинным путем
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. Обнови кеш
Дерзай! Больше объяснять не буду
Через views элементарно решается
romass, спасибо за метод, при обновление кеша падает сайт
Если не лень, напишите пожалуйста этот "элементарный" способ. Спасибо.
ps Я уже переклацал все опции во views, есть там вывод ссылки на полную новость, есть вывод названия новости в виде ссылки и т.д., но чтобы всё описание тизера становилось анкором ссылки на полную новость - этого никак найти не могу.
добавляете поле Материал: nid, делаете его скрытым. Потом добавляете поле анонса, жмете на галочку "выводить в виде ссылки" (не помню точно, как там это называется), у вас должно раскрыться поле с вводом для ссылки, а ниже доступные значения токена (модуль токен должен быть установлен), пишите в УРЛ ссылки node/[nid] (опять же точно не помню, как пишется [nid]). ТОгда весь текст анонса будет ссылкой на ноду.
Лампочка, спасибо! )
Все вышло легко и непринужденно
Лампочка, респект, спасибо за помощь.
Всем кто принял участие в дискуссии - тоже спасибо.
Да не за что В этим [nid]-ом можно еще по-разному играться. Например, выводить родительской ноды (по нодрефференс), а ссылку делать на дочернюю.
не совсем верно ...
<a href="<?php print drupal_get_path_alias('node/'.$row->nid) ?>" title="<?php print $row->node_title ?>"><?php print $output; ?></a>
вот так пожалуй должно работать