Здравствуйте!
Можно ли в путь меню добавить ссылку которая автоматически переходит на последний добавленный материал определенного типу материала? Если можно, то так?
Можно ли в путь меню добавить ссылку которая автоматически переходит на последний добавленный материал определенного типу материала? Если можно, то так?
ИМХО, это из серии хочется странного. Обычно в меня как раз размещаются те ссылки, которые , скажем так, стабильны.
"ХулиGUN" wrote:
Как вариант для ленивых - выводить ноды через views, или хотя бы эту последнюю... в настройках вьюхи сортировка по дате и лимит в 1 ноду.
Как раз нормальный вариант, можно если что и настройки изменить движением одной руки и хоть картиночку из материала к ссылке добавить или еще чего изменить.
«Как вариант для ленивых - выводить ноды через views, или хотя бы эту последнюю... в настройках вьюхи сортировка по дате и лимит в 1 ноду.
Как то так))»
В данном случае у меня так и есть, но это не то что нужно У меня есть одна главная меню и одна по типу материалу, и когда добавляется материал в меню по ТМ мне нужно что бы в главной меню путь автоматически ставился на последний материал и в меню ТМ поле активного материала становился активным. Ну вот что-то такое
У меня есть одна главная меню и одна по типу материалу, и когда добавляется материал в меню по ТМ мне нужно что бы в главной меню путь автоматически ставился на последний материал и в меню ТМ поле активного материала становился активным.
я совершенно ничего не понял, но вообще можно создать страницу вьюс с урлом к примеру /last-article и в меню его добавить
У меня есть одна главная меню и одна по типу материалу, и когда добавляется материал в меню по ТМ мне нужно что бы в главной меню путь автоматически ставился на последний материал и в меню ТМ поле активного материала становился активным.
я совершенно ничего не понял, но вообще можно создать страницу вьюс с урлом к примеру /newest-article и в меню его добавить
Мне нужно что бы в меню, путь к материалу автоматически адресовал пользователя на последний материал а не на какой-то конкретный.
Мне нужно что бы в меню, путь к материалу автоматически адресовал пользователя на последний материал а не на какой-то конкретный.
если вам нужно, чтобы в пункте меню путь установлен был именно на саму последнюю ноду, то только программно:
в hook_node_insert создаете новый пункт меню с помощью menu_link_save, а старый удаляете используя menu_link_delete
можно как вариант впихнуть эту ссылку и в функции темизации, которая выводит меню(theme_menu_tree или theme_links)
далее включаете эту хрень на странице модулей и перекидываете новый пункт меню куда нужно(хотя это можно явно в модуле прописать), по дефолту оно где-то в навигации будет.
далее включаете эту хрень на странице модулей и перекидываете новый пункт меню куда нужно(хотя это можно явно в модуле прописать), по дефолту оно где-то в навигации будет.
однако довольно тяжелый(возможно лишний раз придется кеш сбрасывать)
menu rebuild после создания новой ноды #вешаетсервер - новые мемы зачем же придумывать?
"sg85" wrote:
сложный
я бы сказал просто, что это вариант выполняющий свою задачу
"sg85" wrote:
со всеми этими способами получите подзатыльник от сеошника за дубликат контента
вот тут совсем не понял, в меню появляется новая ссылка с новым анкором и новым урлом, ведущая на соответствующий урлу материал - какие то новые seo-причуды?
menu rebuild после создания новой ноды #вешаетсервер - новые мемы зачем же придумывать?
+SQL запрос на получение старой ссылки, для передачи её настроек в новую
+удаление ссылки, SQL запрос
+добавление ссылки, SQL запрос
...
а в остальном да, способ ох..енно легкий и простой.
"drupby" wrote:
я бы сказал просто, что это вариант выполняющий свою задачу
потому я и написал, что ваш способ тоже подходит, однако, он откровенно геморный.
"drupby" wrote:
вот тут совсем не понял, в меню появляется новая ссылка с новым анкором и новым урлом, ведущая на соответствующий урлу материал - какие то новые seo-причуды?
"Sandy Big Boy" wrote:
Как раз нормальный вариант, можно если что и настройки изменить движением одной руки и хоть картиночку из материала к ссылке добавить или еще чего изменить.
Ну и кроме того, раз уж пошла такая песня, то с hook_menu_alter+hook_node_insert будет меньше и нежданчиков, и кода
или вообще можно какому-либо пункту меню созданному через модуль menu просто менять путь при сохранении новой ноды. Но только опять же, коли вы уж доколупались до кондишена, значит вам этот кондишен придется и тут реализовывать, то есть при сохранении уже существующей ноды проверять её статус, и если он не активен, выяснять является ли нода последней, и если да, то искать новую последнюю ноду со статусом 1. Словом, 10 строк кода магическим образом превращается во вполне солидный модуль, на написание и отладку которого нужно время.
page сменить на нужное. Спс что поправили, что-то я спросони не внимательный.
"drupby" wrote:
ну так я не увидел другого, который выполняет задачу ТС
способов там на самом деле овер9000, но почти у всех у них две проблемы - громоздкость кода, да и легкими в плане числа SQL запросов, пусть даже только при сохранении ноды их не назовешь. Вариант с редиректом может не подойти только в случае, если в ТЗ есть условие, что 301 редирект недопустим по каким-то там причинам(пример, СЕО головного мозга).
еще, кстати, есть довольно простой вариант без модуля, это в template.php подменить функцию темизации нужного меню и на этом уровне добавлять в него ссылку, тем более, что этот кеш будет(по крайней мере должен) сбрасываться каждый раз при сохранении ноды автоматически, но это уже из серии "вменяемых" костылей, проблемой такого способа может стать разве что нехватка знаний PHP, например, неумение писать функции сортировки, пользоваться отладкой(хотя бы тот же devel) и т.д., ну и проблема всех костылей - через годик, если понадобится что-то поменять, придется искать откуда у этой ссылки ноги растут.
еще, кстати, есть довольно простой вариант без модуля, это в template.php подменить функцию темизации нужного меню и на этом уровне добавлять в него ссылку
"drupby" wrote:
можно как вариант впихнуть эту ссылку и в функции темизации, которая выводит меню(theme_menu_tree или theme_links)
ну для этого ж нужно хотя бы php на уровне поверхностного ознакомления знать... А у нас преобладают мышкосайтоделы
php "на уровне поверхностного ознакомления", чтобы модуль набыдлокодить, может и обезьяна изучить. Проблема в том, что для написания модуля нужно еще знание Drupal API, а это уже несколько сложнее. При этом нужный модуль уже может быть на drupal.org, поэтому кодить свой велосипед на каждый чих - признак небольшого ума, мягко говоря.
Ну гуглить, наверное, обезьяну уже не научить, но все-равно без общих, базовых знаний сложно ориентироваться, чем одно решение лучше чем другое, на себе ощущаю.
Комментарии
ИМХО, это из серии хочется странного. Обычно в меня как раз размещаются те ссылки, которые , скажем так, стабильны.
Как раз нормальный вариант, можно если что и настройки изменить движением одной руки и хоть картиночку из материала к ссылке добавить или еще чего изменить.
«Как вариант для ленивых - выводить ноды через views, или хотя бы эту последнюю... в настройках вьюхи сортировка по дате и лимит в 1 ноду.
Как то так))»
В данном случае у меня так и есть, но это не то что нужно У меня есть одна главная меню и одна по типу материалу, и когда добавляется материал в меню по ТМ мне нужно что бы в главной меню путь автоматически ставился на последний материал и в меню ТМ поле активного материала становился активным. Ну вот что-то такое
я совершенно ничего не понял, но вообще можно создать страницу вьюс с урлом к примеру /last-article и в меню его добавить
Мне нужно что бы в меню, путь к материалу автоматически адресовал пользователя на последний материал а не на какой-то конкретный.
если вам нужно, чтобы в пункте меню путь установлен был именно на саму последнюю ноду, то только программно:
в hook_node_insert создаете новый пункт меню с помощью menu_link_save, а старый удаляете используя menu_link_delete
можно как вариант впихнуть эту ссылку и в функции темизации, которая выводит меню(theme_menu_tree или theme_links)
со всеми этими способами получите подзатыльник от сеошника за дубликат контента, годный из этого 1й способ Хулигана
Вариант drupby тоже годен, однако довольно тяжелый(возможно лишний раз придется кеш сбрасывать)/сложный.
создаете внутри sites/all/modules папку mymodule
внутри создаете файл mymodule.info
description = Last node's menu link
core = 7.x
создаете файл mymodule.module
<?php
function mymodule_menu(){
return array(
'last_node' => array(
'title' => 'Последний материал',
'page callback' => 'last_node_cb',
'access arguments' => array('access content'),
),
);
}
function last_node_cb(){
$nid = db_select('node','n')
->fields('n',array('nid'))
->orderBy('n.nid','DESC')
->range(0,1)
->execute()->fetchField();
drupal_goto(drupal_get_path_alias('node/'.$nid));
}
?>
далее включаете эту хрень на странице модулей и перекидываете новый пункт меню куда нужно(хотя это можно явно в модуле прописать), по дефолту оно где-то в навигации будет.
неужели это сложно?
Спасибо всем и отдельно sg85, вопрос решен.
menu rebuild после создания новой ноды #вешаетсервер - новые мемы зачем же придумывать?
я бы сказал просто, что это вариант выполняющий свою задачу
вот тут совсем не понял, в меню появляется новая ссылка с новым анкором и новым урлом, ведущая на соответствующий урлу материал - какие то новые seo-причуды?
кондишиона в запросе не хватает
->condition('n.status',1)
довольны?
+SQL запрос на получение старой ссылки, для передачи её настроек в новую
+удаление ссылки, SQL запрос
+добавление ссылки, SQL запрос
...
а в остальном да, способ ох..енно легкий и простой.
потому я и написал, что ваш способ тоже подходит, однако, он откровенно геморный.
Ну и кроме того, раз уж пошла такая песня, то с hook_menu_alter+hook_node_insert будет меньше и нежданчиков, и кода
или вообще можно какому-либо пункту меню созданному через модуль menu просто менять путь при сохранении новой ноды. Но только опять же, коли вы уж доколупались до кондишена, значит вам этот кондишен придется и тут реализовывать, то есть при сохранении уже существующей ноды проверять её статус, и если он не активен, выяснять является ли нода последней, и если да, то искать новую последнюю ноду со статусом 1. Словом, 10 строк кода магическим образом превращается во вполне солидный модуль, на написание и отладку которого нужно время.
________________________________________________________
ну так я не увидел другого, который выполняет задачу ТС
можно заменить save и delete на hook_menu_link_alter, но если кто то удалит этот пункт, то сломается вся логика модуля
page сменить на нужное. Спс что поправили, что-то я спросони не внимательный.
способов там на самом деле овер9000, но почти у всех у них две проблемы - громоздкость кода, да и легкими в плане числа SQL запросов, пусть даже только при сохранении ноды их не назовешь. Вариант с редиректом может не подойти только в случае, если в ТЗ есть условие, что 301 редирект недопустим по каким-то там причинам(пример, СЕО головного мозга).
еще, кстати, есть довольно простой вариант без модуля, это в template.php подменить функцию темизации нужного меню и на этом уровне добавлять в него ссылку, тем более, что этот кеш будет(по крайней мере должен) сбрасываться каждый раз при сохранении ноды автоматически, но это уже из серии "вменяемых" костылей, проблемой такого способа может стать разве что нехватка знаний PHP, например, неумение писать функции сортировки, пользоваться отладкой(хотя бы тот же devel) и т.д., ну и проблема всех костылей - через годик, если понадобится что-то поменять, придется искать откуда у этой ссылки ноги растут.
php "на уровне поверхностного ознакомления", чтобы модуль набыдлокодить, может и обезьяна изучить. Проблема в том, что для написания модуля нужно еще знание Drupal API, а это уже несколько сложнее. При этом нужный модуль уже может быть на drupal.org, поэтому кодить свой велосипед на каждый чих - признак небольшого ума, мягко говоря.
А ТС откровенно хочет странного.
Ну гуглить, наверное, обезьяну уже не научить, но все-равно без общих, базовых знаний сложно ориентироваться, чем одно решение лучше чем другое, на себе ощущаю.