Задача:
Получить страницу созданную через views, замещающую стандартную node страницу с поддержкой синонимов в url адресе (модуль pathauto), поддержкой метатегов прописанных на основе токенов полей ноды (модуль metatag), выводом хлебных крошек (модуль path_breadcrumbs) и без вывода заголовка ноды.
Решение:
1. Cоздано views представление с машинным именем: page и машинным именем отображения: airport, путь: airport/%, контекстный фильтр: Содержимое: Nid (скриншот:http://prntscr.com/dgw9h0), заголовок: Нет.
2. В шаблонах темы добавлен файл: node--airport.tpl.php (где airport - машинное имя типа материала), в котором копия содержимого файла в теме (page.tpl.php) и сверху добавлен код:
<?php if ($node->type=="airport") : ?>
<?php print views_embed_view('page','airport', $node->nid); ?>
<?php else: ?>
3. Шаблон генерации синонимов для материалов типа airport: airport/[node:title] (где заголовок ноды 3-х буквенное уникальное для всех нод значение)
4. В настройках модуля metatag для типа материала airport прописаны метатеги, которые берут значения из полей ноды.
5. В настройках модуля Path Breadcrumbs: Основное (путь: node/%node), Аргументы (скриншот: http://prntscr.com/dgxf37), Правила выбора (скриншот: http://prntscr.com/dgxffm)
Проблемы:
1. При запросе страницы по системному адресу, например: /node/17 получаю результат созданного views представления с работающими метатегами определёнными для типа материала airport и работают хлебные крошки, НО выводится заголовок ноды (хотя во views представлении значение поля заголовок указано: Нет).
2. При запросе синонима страницы, например: /airport/abl получаю пустую страницу (только шапка, правая боковая панель, а содержимого страницы нет) и не работают метатеги (то есть выводятся метатеги прописанные в самом views, а не те метатеги, которые прописаны для типа материала airport) и не выводятся хлебные крошки. Уточню, что так выводится для анонимного посетителя, для админа выводится также как в п.1 (при этом в настройках доступ для views указано: Доступ:Право доступа | Просмотр опубликованных материалов).
Вопросы:
Нужно, чтобы по запросу страницы-синонима материала для анонима отображалcя результат вывода views представления, работали метатеги, отображались хлебные крошки, не выводился заголовок ноды. Какие ошибки допускаю?
Комментарии
Ошибка в самой постановке задачи. Зачем выводить страницу ноды с помощью views?
Следуя по вашей наводке, удалил в папке темы шаблон: node--airport.tpl.php и отключил созданное представление. В итоге обнаружил следующую ошибку: для анонима при запросе страницы: /airport/aaa выдаётся сообщение что страница не найдена, хотя в списке созданных синонимов такой синоним есть (при этом в качестве админа страница показывается без проблем).
(проверил права для анонимов, отмечено: Просмотр опубликованных материалов, обновил права доступа к материалам (admin/reports/status/rebuild), проверил что в базе данных в таблице users есть запись с uid=0, удалил и заного создал все синонимы путей, очистил все кеши, запустил обновление, запустил cron - ситуация не поменялась.)
Получается есть какая-то проблема с тем, что анонимам при запросе синонима материала, показывается Страница не найдена (при запросе системного адреса страницы, страница успешно отображается), а админу показывается страница корректно и с системным адресом и с синонимом.
Из-за чего такое может быть?
Источник проблемы был найден: язык сайта по умолчанию стоял английский, а интерфейс админа русский, в итоге для анонимов ноды не показывались (т.к. имели русский язык), а для админа показывались. При изменении дефолтного языка сайта на русский, ноды для анонимов стали показываться.
Решение проблемы: в базе данных в таблицах node и url_alias был изменён язык на en (английский), после этого дефолтный язык был переключен обратно на английский и ноды для анонимов успешно показывались.
НО. Осталась проблема вывода заголовка ноды, который выводить не нужно (т.к. там всего 3 буквы).
Решение:
1. В папке темы в файл tempate.php добавить код (заменив pixture_reloaded на название вашей темы):
<?phpfunction pixture_reloaded_preprocess_page(&$vars, $hook) {
if (isset($vars['node'])) {
$vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
}
}?>
Этим действием мы прописали в теме переопределяющий шаблон: page--МАШИННОЕимяТИПАматериала.tpl.php
2. Сделать копию файла page.tpl.php в папке темы, изменив название на: page--airport.tpl.php
3. Удалить в файле page--airport.tpl.php строку выводящую заголовок, в моём случае удалил строку:
<h1 id="page-title"><?php print $title; ?></h1>