Как создать страницу с адресом 2011?

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

Аватар пользователя Ailme Ailme 22 июня 2011 в 17:55

Добрый день! Хочу на своем сайте сделать вывод материалов за указанный год, если, например, пользователь перешел по адресу /2011. Как я понимаю, для этого нужно использовать хук module_menu. Попробовал сделать таким образом тестовую страницу и выяснил, что работают адреса, у которых есть текст, например, a2011 - работает, а при обращении к 2011 - выдает 404 страницу. Собственно вопрос в том, как мне сделать страницу(ы) с числовыми адресами?

Комментарии

Аватар пользователя Galr Galr 22 июня 2011 в 20:41

"RxB" wrote:
Не поможет, это жумловод.
ему список тизеров нужен

почему жумлавод?
pathauto только для новых нод подойдет. остается сниппет или views, или другие модули...

Аватар пользователя Ailme Ailme 22 июня 2011 в 21:29

Раз уж зашла речь о pathauto, то он создает у меня ссылки вида: YYYY/m/node-title

Вот и хочу, чтобы можно было в адресе указав год либо год/месяц выводить соответствующие материалы на странице

Аватар пользователя Galr Galr 22 июня 2011 в 21:42

"Ailme" wrote:
Вот и хочу, чтобы можно было в адресе указав год либо год/месяц выводить соответствующие материалы на странице

надо другие токены в настройках поставить

Аватар пользователя goodboy goodboy 22 июня 2011 в 23:40

Материалы за период времени - это архив, правильно? Вот и сделайте вьюв, а в качестве параметра используйте год. Например, ссылка будет вида arсhive/2011. Сразу понятно, о чем идет речь - архив за 2011 год

Аватар пользователя Galr Galr 23 июня 2011 в 3:30

"Andruxa" wrote:
нет, это не так

так если для существующих нод поменять, они или по старым адресам перестанут работать, или получатся дубли, если по 2 синонима оставить. хотя архив и так в ноиндекс должен быть...

Аватар пользователя Andruxa Andruxa 23 июня 2011 в 9:54

алиасы, созданные автоматом - удаляются автоматом из админки /admin/build/path/delete_bulk
созданные вручную - таки да, придется удалить вручную при необходимости
но если хватило сил их насоздавать - удалить тоже хватит сил

Аватар пользователя Ailme Ailme 23 июня 2011 в 10:03

В общем так и не вижу здесь решения моего вопроса. Я хочу именно такую адресацию. Если бы мне нужна была адресация вида: archive/yyyy или archive/yyyy/m - думаю вопросов бы у меня не возникло.

Аватар пользователя Ailme Ailme 23 июня 2011 в 15:18

"Galr" wrote:
создать термин таксономии "2011" и вносить туда ноды при создании))

В таком случае url будет выглядеть taxonomy(или что-то другое)/2011, что не удовлетворяет условию моей задачи

Аватар пользователя ihappy ihappy 23 июня 2011 в 18:00

"RxB" wrote:
И я таки не понимаю, кто не даёт сделать автору вьюху с каким-нить адресом, а потом нафигачить к ней алиасов вручную или автоматом

сам отче наш)))

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 23 июня 2011 в 18:16

При задании вопроса не забывайте указывать версию Друпала.

Drupal 6 - custom_url_rewrite_inbound + custom_url_rewrite_outbound
Drupal 7 - hook_url_inbound_alter + hook_url_outbound_alter

Данная парочка хуков способна творить чудеса с путями Wink

Аватар пользователя Galr Galr 23 июня 2011 в 18:46

"Ailme" wrote:
В таком случае url будет выглядеть taxonomy(или что-то другое)/2011, что не удовлетворяет условию моей задачи

а кто мешает убрать "taxonomy/"?

Аватар пользователя Ailme Ailme 23 июня 2011 в 20:54

"G.A. Vinogradov" wrote:
При задании вопроса не забывайте указывать версию Друпала.
Drupal 6 - custom_url_rewrite_inbound + custom_url_rewrite_outbound
Drupal 7 - hook_url_inbound_alter + hook_url_outbound_alter
Данная парочка хуков способна творить чудеса с путями ;)

Спасибо, как раз сейчас разбираюсь с этими хуками

"Galr" wrote:
а кто мешает убрать "taxonomy/"?

Не знаю, возможно друпал )

Я пробовал через view создавать страницу с адресом 2011, но на выходе все равно получал 404

Аватар пользователя Ailme Ailme 23 июня 2011 в 23:54

Так и не получается сделать, как мне хочется. Нужны еще идеи и советы.

Если сделать так:

function my_categories_menu() {
$items['2011'] = array(
...
);

$items['test/2011'] = array(
...
);

return $items;
}

То страница по адресу test/2011 - срабатывает, а вот адрес 2011 - не хочет работать

А если использовать это:

function my_categories_url_inbound_alter(&$path, $original_path, $path_language) {
if ($path == '2011') {
$path = 'test/2011';
}
}

То при попытке перейти по адресу 2011 происходит изменение адреса в адресной строке на test/2011

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 24 июня 2011 в 10:26

Только что сделал так:

<?php
function my_module_url_inbound_alter(&$path$original_path$path_language){
  if (
$path == '2011') {
    
$user $GLOBALS['user'];
    
$path 'user/' $user->uid '/edit';
  }
}
?>

Все работает, по адресу /2011 работает страница редактирования профиля.

Может вы с меню намудрили?

Аватар пользователя Ailme Ailme 24 июня 2011 в 11:06

"G.A. Vinogradov" wrote:

У меня так и написано, что этот вариант работает, но когда вводишь 2011, то адрес меняется на user/1/edit (в вашем случае). А я имел в виду, что адрес 2011 должен остаться.

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 24 июня 2011 в 11:13

Ailme wrote:
"G.A. Vinogradov" wrote:

У меня так и написано, что этот вариант работает, но когда вводишь 2011, то адрес меняется на user/1/edit (в вашем случае). А я имел в виду, что адрес 2011 должен остаться.

А у меня адрес не меняется.

Аватар пользователя Ailme Ailme 24 июня 2011 в 11:45

"G.A. Vinogradov" wrote:
А у меня адрес не меняется.

Похоже у меня какой-то модуль делает редирект. Проверил на другом сайте, там адрес не менялся.