2014-10-10 3 views
0

Я создаю пользовательский компонент в Joomla, который должен отправлять почту пользователю. Я использую модель для отправки почты из раздела администрирования бэкэнд. Модель использует этот код:Joomla получить SEF Frontend URL-адрес от модели в backend

$btn_link = JURI::root().substr(JRoute::_("index.php?option=com_mymailer&view=messages&email={$myMsg->email}&tid={$myMsg->ticket_id}"); 

Затем я использую ссылку выше в качестве якоря на кнопку на теле письма и отправить через JMail. Однако ссылка, которая приходит, является не-sef (поскольку SEF не применяется на бэкэнд). Это ссылка я получаю:

http://testsite.com/index.php?option=com_mymailer&view=messages&[email protected]&tid=27 

В то время как результат я хочу (меню присутствует назван почты):

http://testsite.com/mails/messages/[email protected]&tid=27 

ли любое тело иметь представление о том, как получить SEF фронтэнда URL-адреса из внутренний код. Спасибо заранее.

+0

Смотреть это [ссылка] (http://docs.joomla.org/Supporting_SEF_URLs_in_your_component) –

+0

Ofcourse Я видел эту страницу, но эта страница оленья кожа имеет какое-либо решение для моей проблемы или где-нибудь близко. – Cruising2hell

ответ

0

Для достижения желаемого требуются две основные вещи. Первая заключается в том, чтобы конечная точка связи была связана с MVC-контуром переднего конца, где класс модели расширяет модель пользовательских сообщений на заднем конце.

Который приводит нас к пункту 2. Вы можете создать тип меню, который не отображается на веб-сайте через модуль mod_menus, и добавить ссылку меню в вид спереди с псевдонимом, в котором вы хотите, чтобы псевдоним быть. Это обеспечивает Joomla контрольную точку. Это быстрый и грязный метод. «Правильный» метод заключался бы в написании сценария router.php и размещении в корневой папке вашего компонента.

Если вы пишете скрипт router.php, это позволит автоматическое форматирование URL-адресов в формате SEF при использовании JRoute :: _() с одной оговоркой. Если вы этого не сделаете, вам нужно вручную отформатировать URL-адрес ссылки, чтобы указать на: www.mydomain.com/my-menu-alias

Я подключил ссылки для сценария router.php, которые теперь актуальны на следующем шаге 1.

http://docs.joomla.org/Supporting_SEF_URLs_in_your_component http://docs.joomla.org/Search_Engine_Friendly_URLs

2

Я знаю, что это довольно устаревшей, но это первая (актуально) результат на Google. Для этого вам нужен маршрутизатор сайта (frontend) и ItemID. Это все. J! 2,5

//get the frontend Application to create the full object chain 
$siteApp = JApplication::getInstance('site'); 

//now you can use the router for the frontend 
$siteRouter = $siteApp->getRouter(); 

//get the itemid as you wish 
//you can use frontend menu object 
$siteMenu = $siteApp->getMenu(); 

//you need a correct itemid in $yourUri to route correctly 
/* there's a little glitch, maybe with JURI::root so it still uses 
the admin subdir anyways, but simply remove it. 
maybe better to check if it's at the beginning of the string 
but now it's your business */ 

$sefURI = str_replace('/administrator',NULL,$siteRouter->build($yourUri)); 
Смежные вопросы