Joomla 3.9.12, JoomGallery 3.4
Имеем магазин, где есть товары (JoomShopping) и портфолио - выполненные работы (JoomGallery). Выполненные работы имеют структуру:
- Выполненные работы
- - Ценовой диапазон 1
- - Ценовой диапазон 2
- - Ценовой диапазон 3
Также на сайте 2 меню: в одном есть псевдонимы пунктов меню из другого.
Для облегчения перелинковки сделал контент-плагин, который берет название, описание категории и одну фотографию из нее: если указана в коде вставки плагина, то по id, если нет, то либо миниатюру из настроек категории, либо первую из категории.
Естественно, что целью перелинковки является ссылка. И тут проблема - ссылки, получаемые с помощью
JRoute::_ имеют вид
site.ru/component/joomgallery/название_категории. В JoomGallery есть
interface.php, где есть свой метод
route. С его помощью получается ссылка, по которой все открывается, но SEF-url не тот. По url получается, что выполненная работа из
ценовой диапазон 1 оказывается в
ценовом диапазоне 3.
Если же сам получаешь itemId
function getItemid( $component, $view )
{
$items = JFactory::getApplication()->getMenu( 'site' )->getItems( 'component', $component );
foreach ( $items as $item ) {
if($item->query['view'] === $view){
return $item->id;
}
}
}
и делаешь ссылку таким образом
$catlinkItemId = $this->getItemid( 'com_joomgallery', 'category' );//$this->getJoomId($catid);
$catlink = $this->_interface->route('index.php?&option=com_joomgallery&view=category&catid='.$catid."&itemid=".$catlinkItemId);//ссылка на категорию
То вызывается itemId пункта меню верхнего уровня - только родительский. Соответственно url оказывается укорочен на целую категорию.
Если же itemId не указываешь в url для метода route, то формируется правильная по длине ссылка, но, как писал, выполненная работа из
ценового диапазона 1 оказывается в
ценовом диапазоне 3.