Как удалить идентификатор элемента меню из ссылки на элемент k2
У меня есть два разных шаблона на моем сайте, давайте просто назовите их Tcat и Titem. Страница просмотра категории k2 использует Tcat, то есть пункт меню страницы просмотра категории k2 связан с Tcat. Я хочу, чтобы страницы элементов k2 использовали Titem, то есть, когда я нажимаю ссылку на элемент на странице просмотра категории, я надеюсь, что новая страница, показывающая этот элемент, будет использовать Titem. Однако по умолчанию эта новая страница будет использовать Tcat.
Я знаю, это потому, что в ссылке href есть параметр itemid = xxx.
Насколько я знаю, элемент k2 можно открыть с помощью URL-адреса, например mysite.com/index.php?option=com_k2&view=item&id=10
, в этом случае без идентификатора элемента меню в URL-адресе , страница будет использовать шаблон по умолчанию; но если добавлен параметр Itemid
, и URL-адрес выглядит как http://67.20.67.232/index.php?option=com_k2&view=item&id=10&Itemid=150
, тогда на странице будет использоваться шаблон, связанный с элементом меню #150
. Проблема в том, что, поскольку я связал представление категории с элементом меню #150
, ссылки всех элементов этой категории, похоже, всегда имеют это Itemid=150
.
Я всегда сталкиваюсь с аналогичной проблемой с k2. Одним из способов решения проблемы является использование javascript для устранения этого параметра Itemid
, другой не очень практичный способ - связать каждый элемент с пунктом меню что связано с Titem .... Есть ли другой способ? Может быть, путем hardcoding некоторые PHP?
Кроме того, в файлах php php в k2 ссылка генерируется чем-то вроде <?php echo $this->item->link ?>
, я думаю, если я узнаю, как ---- +: = 8 =: + ----, я могу найти способ его жесткого кодирования. Но мои знания PHP очень ограничены, при некоторых исследованиях я могу только догадываться, что $this->item
является экземпляром $this
в k2ItemviewList
, но этот класс имеет только один член: com_k2/views/itemlist/view.html.php
, function display($tpl = null)
нигде не было найдено. Я изучаю PHP и пытаюсь понять ядро joomla и ядро k2, поэтому я не удовлетворен решением javascript. Если вы можете объяснить, как отслеживать коды за кодом item
, это очень поможет в обучении. Любые намеки приветствуются. Спасибо заранее.
1 ответ
Itemid - ключевая часть Joomla Router для идентификации цели и навигации по структуре меню. Кроме того, модули связаны с конкретными Itemid.
Если нет Itemid, Joomla отображает страницу по умолчанию с модулями, назначенными страницам «Все».
Если вы ищете способ настройки SEF и генерации Urls без идентификаторов, вы можете просто установить Расширение SEF .