Jump to content
4.4.3
Sign in to follow this  
yiuryumtsev

Модуль страницы

Recommended Posts

yiuryumtsev

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

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

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

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

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

Спасибо!

Share this post


Link to post
Share on other sites
anufmikh

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

image.png

  • Спасибо 1

Share this post


Link to post
Share on other sites
yiuryumtsev

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

Share this post


Link to post
Share on other sites
anufmikh

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

  • Спасибо 1

Share this post


Link to post
Share on other sites
yiuryumtsev
Только что, anufmikh сказал:

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

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

Share this post


Link to post
Share on other sites
anufmikh

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

  • Спасибо 1

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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" }

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

 

 

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

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

Share this post


Link to post
Share on other sites
yiuryumtsev

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

Share this post


Link to post
Share on other sites
anufmikh

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

  • Спасибо 1

Share this post


Link to post
Share on other sites
yiuryumtsev
11 минут назад, anufmikh сказал:

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

Да она самая!

Share this post


Link to post
Share on other sites
anufmikh

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

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

  • Спасибо 1

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
yiuryumtsev

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

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

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...