url наборов групп

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

нужен совет по изменению текущих url

#1 23 апреля 2022 в 18:01

Добрый день, форумчане. Нужен совет

В компоненте группы в наборы имеют url такого вида groups/index/наименование_набора

А ссылка первого набора имеет такой вид  groups/index

Как сделать её  вида /groups  ??? (для перврго набора)

v2.13

\system\controllers\groups\actions\index.php

  1. return $this->cms_template->render('index', array(
  2. 'datasets' => $datasets,
  3. 'base_ds_url' => href_to_rel('groups') . '/index%s',
  4. 'dataset_name' => $dataset_name,
  5. 'dataset' => $current_dataset,
  6. 'h1_title' => $h1_title,
  7. 'user' => $this->cms_user,
  8. 'groups_list_html' => $this->renderGroupsList($page_url, $dataset_name)
  9. ), $this->request);
  10.  
  11. }
  12.  

\templates\default\controllers\groups\index.tpl.php

  1. <h1>
  2. <?php echo $h1_title; ?>
  3. <?php if($dataset_name){ ?>
  4. <span> / <?php echo $dataset['title']; ?></span>
  5. <?php } ?>
  6. </h1>
  7.  
  8. <?php if (!empty($datasets)){
  9. $this->renderAsset('ui/datasets-panel', array(
  10. 'datasets' => $datasets,
  11. 'dataset_name' => $dataset_name,
  12. 'current_dataset' => $dataset,
  13. 'base_ds_url' => rel_to_href($base_ds_url)
  14. ));
  15. } ?>
  16.  
  17. <?php echo $groups_list_html;
  18.  

Благодарю

#2 24 апреля 2022 в 11:58

В компоненте группы в наборы имеют url такого вида groups/index/наименование_набора

denmois

У меня нет. Первая вкладка — Популярные. Имеете /groups. Вторая Новые группы /groups/all

О, сори не заметил вашу версию системы)

Добавлено спустя 10 минут

Попробуйте сделать так. Откройте файл frontend.php Первый метод

public function routeAction($action_name){ 

  1. if (is_numeric($action_name)) {
  2. ...
  3. } else {
  4.  
  5. /******** Сюда добавьте ***************/
  6.  
  7. if($action_name === 'index' && $this->current_params){
  8. return $this->redirect(href_to('groups', $this->current_params[0]), 301);
  9. }
  10.  
  11. /***************************************/
  12.  
  13. if ($this->isActionExists($action_name)){
  14. return $action_name;
  15. }
  16.  
  17.  
#3 24 апреля 2022 в 15:22

Всех с праздником Святой Пасхи!

 Lora, спасибо за совет! Попробовал, ссылки на наборы получились вида groups/наименование_набора, и при переходе -> 404

#4 24 апреля 2022 в 18:12

Далее есть строка.

if (!$group) { cmsCore::error404(); }

Поменяйте на

  1. if (!$group) {
  2.  
  3. array_unshift($this->current_params, $action_name);
  4.  
  5. return 'index';
  6. }
#5 24 апреля 2022 в 21:15

Не выходит. Точнее не выходит как нужно

Для первого набора так и осталось  groups/index 

Для остальных стало groups/наименование_набора и бонусом виджеты пропали)

#6 25 апреля 2022 в 10:44

Значит с наскоку не получится). Тогда легче обновится, так как придётся править системные файлы. И не один.

#7 2 мая 2022 в 19:39

Если в 3 строку:

  1. return $this->cms_template->render('index', array(
  2. 'datasets' => $datasets,
  3. 'base_ds_url' => href_to_rel('groups') . '/index%s',
  4. 'dataset_name' => $dataset_name,
  5. 'dataset' => $current_dataset,
  6. 'h1_title' => $h1_title,
  7. 'user' => $this->cms_user,
  8. 'groups_list_html' => $this->renderGroupsList($page_url, $dataset_name)
  9. ), $this->request);
  10.  
  11. }

переписать так:

  1. 'base_ds_url' => href_to_rel('groups') . '%s',

Ссылка на первую вкладку получается как надо  /groups, но остальные вкладки  /groups/nabor1 не работают (404)

Можно ли как-то задать условие, что только для первого набора?

Или чтобы остальные работали без. /index/

#8 3 мая 2022 в 10:15

 denmois, вам надо заменить метод public function routeAction($action_name) таким же методом из последней версии. Это в файле frontend.php. index.php оставьте в покое.

Изображение

#9 3 мая 2022 в 14:10

 Lora, жму руку, от души, помог

Правильно говорите, заменил  метод public function routeAction($action_name)

но и индекс тоже надо убрать!

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.