Перейти к публикации
4.3.6

Рекомендованные сообщения

yiuryumtsev

Господа выручайте, все перерыл немогу понять!

Пытаюсь ссылки модуля статьи привести к другому виду.

в данный момент вот так: mysite.ru/{URL категории, задаются в настройка категории}/{название статьи}-r{id статьи}/

хотелось бы к примеру вот так: mysite.ru/{URL категории, задаются в настройка категории}/{id статьи}.html

Где, что прописать?

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
anufmikh

Это можно делать вручную при создании статьи.

image.png

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
yiuryumtsev

при создании статьи можно сделать индивидуально для каждой статьи, а как сделать массово на подобии переопределения для ЧПУ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
anufmikh

Просто так это не изменить, в любом случае нужно лезть в код или писать плагин.

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
yiuryumtsev
Только что, anufmikh сказал:

Просто так это не изменить, в любом случае нужно лезть в код или писать плагин.

Собственно в этом и вопрос! Куда именно в код?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
anufmikh

Сейчас напишу, ждите.

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
anufmikh

Откройте файл applications\cms\sources\Records\Records.php

Найдите строку:

preg_match( '#-r(\d+?)$#', $slug, $matches );

Замените на:

preg_match( '#(\d+?).html$#', $slug, $matches );

Найдите строку:

$recordSlug = ! $this->record_static_furl ? $this->record_dynamic_furl . '-r' . $this->primary_id_field : $this->record_static_furl;

Замените на:

$recordSlug = ! $this->record_static_furl ? $this->primary_id_field . '.html' : $this->record_static_furl;

 

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
yiuryumtsev

Спасибо! Работает!

Пытаюсь переделать под себя, чет туплю:

Хочу вот так: 1-bla-bla-bla.html

preg_match( '#(\d+?)-[a-z-]+\.html$#', $slug, $matches );

var_dump($matches)  возвращяет array(2) { [0]=> string(18) "1-bla-bla-bla.html" [1]=> string(1) "1" }

а все равно не работает!

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
anufmikh

Ошибка какая?

Нужно изменить тогда и код где собирается URL-адрес записи.

2 часа назад, anufmikh сказал:

$recordSlug = ! $this->record_static_furl ? $this->primary_id_field . '.html' : $this->record_static_furl;

$recordSlug = ! $this->record_static_furl ? $this->primary_id_field . '-' . $this->record_dynamic_furl . '.html' : $this->record_static_furl;

 

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
yiuryumtsev

вообщем упростил задачу, исключил переменную:

собираем URL:  $recordSlug = ! $this->record_static_furl ? $this->primary_id_field . '-blabla.html' : $this->record_static_furl;

переходим по ссылке, вот с этим кодом:

preg_match( '#(\d+?)\-blabla.html$#', $slug, $matches );
var_dump($matches);

получаю:

1.PNG.0b8821599c8b7b345f1250f66b03740d.PNG

комментирую вар дамп:

preg_match( '#(\d+?)\-blabla.html$#', $slug, $matches );
//var_dump($matches);

получаю страница не доступна:

2.PNG.a35dc7b22e0f9699111c616f1ab98062.PNG

вот сам URL

3.PNG.e37808ac838e8e8c27d50c2ec3bb5143.PNG

Где собака зарыта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
yiuryumtsev

регулярка вроде правильная regex101.com/r/wfS4nn/1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
anufmikh

Ошибка "Сайт ... выполнил переадресацию слишком много раз."?

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
yiuryumtsev
11 минут назад, anufmikh сказал:

Ошибка "Сайт ... выполнил переадресацию слишком много раз."?

Да она самая!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
anufmikh

Выражение не верное, и абы лишь бы нельзя подставлять слова. Название статьи должно совпадать со значением в базе данных.

Иначе IPS пытается переадресовать Вас на правильный URL-адрес, но натыкается опять на неверный, итак происходит бесконечно.

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
anufmikh

Выражение

preg_match( '#(\d+?)-(.*).html$#', $slug, $matches );

Формирование URL-адреса

$recordSlug = ! $this->record_static_furl ? $this->primary_id_field . '-' . $this->record_dynamic_furl . '.html' : $this->record_static_furl;

И еще найдите фрагмент условия

urldecode( str_replace( $matches[0], '', $slug ) ) !== $record->record_dynamic_furl

и замените на

urldecode( $matches[2] ) !== $record->record_dynamic_furl

 

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
yiuryumtsev

Отлично, помогло!

Очередной вопрос, как все остальные ссылки "страница, база данных, категория" привести к тому же виду.

т.е. в корне страницы, категории и базы данных должно прибавляться .html

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×