X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> [решено] Вопросы по ConstructUrl
Loader
сообщение 2011-07-28, 18:36
Сообщение #1
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


По ConstructUrl у меня есть два вопроса.

Допустим нам нужно "сконструировать" УРЛ опроса для модуля "Что нового". Вот тут-то и начинается самое интересное.
Для этого используем конструкцию:
Цитата
$result=$Mainclass->Db->Query('SELECT `id`, `url`, `cid`, `title`, `date`, `cnt` FROM `f_voting` INNER JOIN `f_voting_l` USING(`id`) WHERE `language` IN (\'\',\''.$Mainclass->lang_name.'\') AND `status`=1 AND `date` BETWEEN \''.$start_date.'\' AND \''.$end_date.'\'',__file__,__line__);

while($arr=$Mainclass->Db->Fetch_assoc($result))
            {
$url=($Mainclass->vars['m_voting_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['cid'],'voting_categories',false,false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'vid'=>$arr['id'])),!$Mainclass->vars['m_voting_long_url']);
}


Получаем:
http://pda-kino.net/whats-new/kak-vy-ocenivaete-sayt.html


Вопрос первый: как сделать так чтобы не дописывать вручную название модуля в начале
Цитата
$url='voting/'.$url;


Вопрос второй: как избавиться от /whats-new/

Добавлю, что в модуле "Карта сайта" эта конструкция почему-то не пытается вписать в УРЛ имя модуля /sitemap/ , а тут почему-то пытается...
Подскажите что неправильно? :blink:



Сообщение отредактировал Loader - 2011-08-01, 20:47
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-07-28, 18:56
Сообщение #2
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


Цитата (Loader @ 2011-07-28, 19:36)
Вопрос второй: как избавиться от /whats-new/

$url=($Mainclass->vars['m_voting_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['cid'],'voting_categories',false,false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'vid'=>$arr['id'])),FALSE);
Вроде бы так
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-07-28, 19:14
Сообщение #3
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Djadka @ 2019-08-22 12:32)
Вроде бы так

По второму вопросу зачёт. Остался первый.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-07-28, 21:36
Сообщение #4
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 260
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67



$Mainclass->Url->ConstructURl(array('module'=>'M',..))

Не?
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-07-28, 22:53
Сообщение #5
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2019-08-22 12:32)
Не?

А нельзя ли полный синтаксис команды привести?
А то получается вот так:
http://pda-kino.net/news/dokumentalnyy/news/11-sentyabrya-kogda-bashni-upali-9-11-after-the-towers-<</span>/span>fell.html


Вот код который надо переделать:
$Mainclass->Url->ConstructUrl(array(array($arr['url'],'nid'=>$arr['id'])),false);


Сообщение отредактировал Loader - 2011-07-28, 22:59
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-07-29, 1:27
Сообщение #6
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 260
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Что Вы имеете ввиду под "полный синтаксис"?
$Mainclass->Url->ConstructUrl(array('module'=>'news',array($arr['url'],'nid'=>$arr['id'])),false);


Немного неудобно в RC5 извлекать URL категорий, поэтому, пока, наверное, лучше без них.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-07-29, 10:28
Сообщение #7
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2011-07-29, 1:27)
Немного неудобно в RC5 извлекать URL категорий, поэтому, пока, наверное, лучше без них.


Вот как раз с категориями-то и надо! :o
Перейти в начало страницы
+Цитировать сообщение
Djadka
сообщение 2011-07-29, 10:40
Сообщение #8
Любитель
Иконка группы

Группа: Eleanor user
Сообщений: 463
Регистрация: 2010-10-17

Репутация:   нет  
Всего: нет


Цитата (Loader @ 2011-07-29, 11:28)
Вот как раз с категориями-то и надо! :o


так если с категориями то надо место фалсе, тру писать
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-07-29, 11:01
Сообщение #9
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Djadka @ 2019-08-22 12:32)
так если с категориями то надо место фалсе, тру писать

Если написать true то он вместо категории имя текущего модуля туда тащит!
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-07-30, 15:21
Сообщение #10
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 260
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (Loader @ 2019-08-22 12:32)
Если написать true то он вместо категории имя текущего модуля туда тащит!

true - это флаг включать ли ПРЕФИКС ссылки или не включать. Префиксом как раз и есть модуль.

С категориями, конечно, трудно немного, но... Уже почти все готово:
Цитата (Loader @ 2019-08-22 12:32)
$url=($Mainclass->vars['m_voting_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['cid'],'voting_categories',false,false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'vid'=>$arr['id'])),!$Mainclass->vars['m_voting_long_url']);

Остается только создать $Mainclass->Categories_l и зарузить настройки модуля, чтобы переменная $Mainclass->vars['m_voting_long_url'] стала доступной. Тут показать легче, чем объяснять. Пожалуйста, предоставьте мне данные доступа, я все сдедалю - Вы потом выложите здесь.
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-07-31, 7:53
Сообщение #11
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2019-08-22 12:32)
true - это флаг включать ли ПРЕФИКС ссылки или не включать. Префиксом как раз и есть модуль.

Вот именно, что ТЕКУЩИЙ модуль им является!
А если я в модуле "Карта сайта" вывожу УРЛ-ы из модуля "Новости"? Так он мне имя модуля не "Новости", а "Карта сайта" туда тащит причём очень упорно!
Цитата (Alexander @ 2019-08-22 12:32)
Остается только создать $Mainclass->Categories_l и зарузить настройки модуля, чтобы переменная $Mainclass->vars['m_voting_long_url'] стала доступной. Тут показать легче, чем объяснять. Пожалуйста, предоставьте мне данные доступа, я все сдедалю - Вы потом выложите здесь.

Да этоя всё знаю! Показывать не нужно.
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-07-31, 16:45
Сообщение #12
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 260
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Цитата (Loader @ 2019-08-22 12:32)
Вот именно, что ТЕКУЩИЙ модуль им является!

Ну так, нужно указать false вторым параметром ContrustUrl, а в самом конструкторе ссылок указать имя модуля:
$url=$Mainclass->Categories_l->CategoryUr(array('module'=>'new'),false,false).$Mainclass->Categories_l->GetDel().($Mainclass->vars['m_voting_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['cid'],'voting_categories',false,false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'vid'=>$arr['id'])),!$Mainclass->vars['m_voting_long_url']);

И все. Зачем кричать?

Добавлено через 0 минут, 59 секунд:

Цитата (Loader @ 2019-08-22 12:32)
Вот именно, что ТЕКУЩИЙ модуль им является!

Ну так, нужно указать false вторым параметром ContrustUrl, а в самом конструкторе ссылок указать имя модуля:
$url=$Mainclass->Categories_l->CategoryUr(array('module'=>'new'),false,false).$Mainclass->Categories_l->GetDel().($Mainclass->vars['m_voting_long_url'] ? $Mainclass->Categories_l->CategoryUrl($arr['cid'],'voting_categories',false,false) : '').$Mainclass->Url->ConstructUrl(array(array($arr['url'],'vid'=>$arr['id'])),!$Mainclass->vars['m_voting_long_url']);

И все. Зачем кричать?
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-07-31, 17:30
Сообщение #13
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2019-08-22 12:32)
И все. Зачем кричать?

Вот это Жесть получилась! :blink: Я лучше ручками припишу 'news/' :sarcastic_hand:
Перейти в начало страницы
+Цитировать сообщение
Alexander
сообщение 2011-08-05, 0:04
Сообщение #14
Eleanor developer
Иконка группы

Группа: Администраторы
Сообщений: 5 260
Регистрация: 2008-11-11
Из: Николаев
Версия системы: RC5

Репутация:   нет  
Всего: 67


Loader, проблема решена?
Перейти в начало страницы
+Цитировать сообщение
Loader
сообщение 2011-08-05, 11:04
Сообщение #15
Профессионал
Иконка группы

Группа: Eleanor user
Сообщений: 1 161
Регистрация: 2010-04-19

Репутация:   нет  
Всего: нет


Цитата (Alexander @ 2019-08-22 12:32)
Loader, проблема решена?

Да, вопрос исчерпан на 100%.
Перейти в начало страницы
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 
RSS Текстовая версия 0.0454 сек.    11 запросов    GZIP включен    Сейчас: 2019-08-22, 11:32