CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » [решено] Вопросы по ConstructUrl
Официальный форум Eleanor CMS » Поддержка пользователей системы Eleanor CMS » Секреты и советы
Loader
По 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:

Djadka
Цитата (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
Цитата (Djadka @ 2024-12-06 07:00)
Вроде бы так

По второму вопросу зачёт. Остался первый.
Alexander

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

Не?
Loader
Цитата (Alexander @ 2024-12-06 07:00)
Не?

А нельзя ли полный синтаксис команды привести?
А то получается вот так:
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);
Alexander
Что Вы имеете ввиду под "полный синтаксис"?
$Mainclass->Url->ConstructUrl(array('module'=>'news',array($arr['url'],'nid'=>$arr['id'])),false);


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


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


так если с категориями то надо место фалсе, тру писать
Loader
Цитата (Djadka @ 2024-12-06 07:00)
так если с категориями то надо место фалсе, тру писать

Если написать true то он вместо категории имя текущего модуля туда тащит!
Alexander
Цитата (Loader @ 2024-12-06 07:00)
Если написать true то он вместо категории имя текущего модуля туда тащит!

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

С категориями, конечно, трудно немного, но... Уже почти все готово:
Цитата (Loader @ 2024-12-06 07:00)
$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
Цитата (Alexander @ 2024-12-06 07:00)
true - это флаг включать ли ПРЕФИКС ссылки или не включать. Префиксом как раз и есть модуль.

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

Да этоя всё знаю! Показывать не нужно.
Alexander
Цитата (Loader @ 2024-12-06 07:00)
Вот именно, что ТЕКУЩИЙ модуль им является!

Ну так, нужно указать 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 @ 2024-12-06 07:00)
Вот именно, что ТЕКУЩИЙ модуль им является!

Ну так, нужно указать 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
Цитата (Alexander @ 2024-12-06 07:00)
И все. Зачем кричать?

Вот это Жесть получилась! :blink: Я лучше ручками припишу 'news/' :sarcastic_hand:
Alexander
Loader, проблема решена?
Loader
Цитата (Alexander @ 2024-12-06 07:00)
Loader, проблема решена?

Да, вопрос исчерпан на 100%.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.