Совместимость URL с другими CMS

  • 20 Ответов
  • 2929 Просмотров

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Совместимость URL с другими CMS
« : 20 Мая 2016, 10:12:56 »
Привет сообществу!
Понимая, что Danneo является CMS портального типа, рискну все же озвучить свое пожелание.
У меня есть множество различных проектов, сделанных Бог знает на чем — Джумла, ImageCMS и пр. Ну, и Danneo, конечно. Еще есть стойкое желание перетащить большую часть проектов на Danneo, но мешает структура URL. Делать же под каждую категорию мод — слишком трудозатратно.
Вопрос: реально ли сделать в Danneo стандартные URL "категория/страница", оставив при этом и существующую структуру "мод/категория/страница"? В новой версии на мой взгляд это вроде бы возможно.
Я вижу это примерно так. Создается новый мод с именем, к примеру, mod_default (копия news подойдет идеально). При заходе на сайт идет обычный разбор url, но если в нем нет имени стандартных модов news, info и т.д., то включается мод mod_default. То есть адреса "имя-сайта/диваны/красный-диван.html" или "имя-сайта/красный-диван.html" должен обработать именно он. А уже затем идет проверка на существование и выдача 404, если в mod_default нет категории или страницы диванов. При этом следует исключить обработку mod_default нескольких страниц — морды сайта, 404 (может еще каких-то, больше не нашел).

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

Если идея идиотская, ногами сильно не пинать :). Буду тогда сам дальше ковыряться.

И еще. Хорошо бы работать с материалом, который при сохранении не закрывается — скажем, были кнопки "Сохранить" и "Сохранить и закрыть".
« Последнее редактирование: 10 Мая 2018, 18:12:05 от SergusNET »

Neon

  • Сообщений: 671
    • Просмотр профиля
    • Danneo CMS
Re: Совместимость с другими CMS
« Ответ #1 : 20 Мая 2016, 18:31:42 »
Да в общем, это не идиотская идея. Чем меньше вложений в урл тем лучше.
Именно поэтому, в базовом, статичном моде "Страницы", урл страниц идет от корня.
http://сайт.ру/страница
При создании клона этого мода, вид урл будет уже: http://сайт.ру/newmod/страница
Тот вид который вам нужен. Делайте таких клонов неограниченное количество, и у вас будут урл:
http://сайт.ру/категория/страница
http://сайт.ру/категория2/страница
и т.д.

При использовании модулей типа новости, и клонов, когда на сайте включено много модов, урл не получится сделать без имени мода.
Роутеру нужна информация куда перенаправлять, иначе в 404.
Без этого ни как.

Для мода "Страницы", в роутере забито резервное имя (pages), поэтому там укороченные урл.
Но, больше одного имени не получится.

Другой вариант, удалить все моды, и оставить один, к примеру "Новости".
Для одного единственного мода, можно изменить шаблоны замены урл, укоротить.
В файле: mod/news/mod.rules.php
Просто удалить имя мода, это можно сделать самостоятельно.
Тогда, также можно получить урл вида:
http://сайт.ру/категория/страница
http://сайт.ру/категория2/страница
и т.д.
DANNEO ™

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Re: Совместимость с другими CMS
« Ответ #2 : 20 Мая 2016, 19:42:09 »
Спасибо за ответ и отдельное спасибо за информацию по работе движка — я не обратил внимания, что в новой версии статичные страницы без имени мода. Не подскажете, где именно забито резервное имя (pages)?
« Последнее редактирование: 20 Мая 2016, 20:00:02 от SergusNET »

Neon

  • Сообщений: 671
    • Просмотр профиля
    • Danneo CMS
Re: Совместимость с другими CMS
« Ответ #3 : 21 Мая 2016, 00:30:50 »
/core/classes/Router.php
строка 123
Цитировать
$this->mod = $this->total['pages'];
изменить на
Цитировать
$this->mod = $this->total['news'];
DANNEO ™

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Re: Совместимость с другими CMS
« Ответ #4 : 02 Мая 2018, 11:26:49 »
Удалил все моды, кроме главной, оставил news.
В /core/classes/Router.php изменил на news.
Что бы ни менял в  mod.rules, при удалении из адреса /news/ ошибка 404.
Не могли бы вы помочь с правилами на примере двух соответствующих правил mod.rules? Остальное сам сделаю по аналогии.
"index.php\?dn=".$WORKMOD."&ccpu=([a-zA-Z0-9_\-]*)&to=page&id=(\d+)&cpu=([a-zA-Z0-9_\-]*)" => $WORKMOD."/$1/$3",
$WORKMOD."/([a-zA-Z0-9_\-]*)/([a-zA-Z0-9_\-]*)" => "index.php?dn=".$WORKMOD."&ccpu=$1&to=page&cpu=$2",

Neon

  • Сообщений: 671
    • Просмотр профиля
    • Danneo CMS
Re: Совместимость с другими CMS
« Ответ #5 : 07 Мая 2018, 20:18:13 »
to, SergusNET.

Замените файлы из архива:
core/classes/Router.php
mod/news/mod.rules.php

Важно!
Мод Новости закрепить на главной.
Мод Страницы удалить, он больше не сможет работать, адреса ЧПУ будут пересекаться с новостями.

Все остальные моды, кроме страниц, можно включать.

Все должно работать.
DANNEO ™

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Re: Совместимость с другими CMS
« Ответ #6 : 08 Мая 2018, 09:14:16 »
Все работает, большое спасибо за уделенное время.
Обнаружил, что без закрепеления мода на главной единственной проблемой является неправильная генерация хлебных крошек — вставляется лишний семент с именем мода и ссылкой на главную страницу. Изменил в \core\classes\Template.php строку 94
$bread_crumb.= $crumb.$config['separate_crumb'];
на
if (!stristr($crumb,'<a href="/">') and !stristr($crumb,'<a href="/.html">')){
$bread_crumb.= $crumb.$config['separate_crumb'];
}
и после этого условия все стало на свои места. Другие моды это изменение не затрагивает, проверено — на главной теперь закреплять любой мод.

« Последнее редактирование: 09 Мая 2018, 23:31:39 от SergusNET »

User

  • Сообщений: 31
    • Просмотр профиля
Re: Совместимость с другими CMS
« Ответ #7 : 10 Мая 2018, 10:25:09 »
Полезное дело сделали. Я свой мод article так сделал.

Сайтмап выдаёт со старыми адресами!

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Re: Совместимость с другими CMS
« Ответ #8 : 10 Мая 2018, 16:09:07 »
Полезное дело сделали. Я свой мод article так сделал.
Да, штука хорошая вышла. Но это заслуга Neona, а не моя.
Сайтмап выдаёт со старыми адресами!
Лечим карту сайта:
\mod\map\index.php строка 227
перед $ins['map'].= $tm->parse(array)
ставим код
         if (stristr($ins['title'],'<a href="/"') or stristr($ins['title'],'<a href="/.html"')){            
            $ins['title'] = $api->siteuni($v['name']);
         }
То есть вместо ссылки просто выводим имя мода. Другие моды не затрагивает.

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

« Последнее редактирование: 10 Мая 2018, 20:41:33 от SergusNET »

User

  • Сообщений: 31
    • Просмотр профиля
Re: Совместимость с другими CMS
« Ответ #9 : 10 Мая 2018, 18:11:25 »
Сначала сделал - ссылка без изменений. Потом вспомнил, что у меня под map вообще не подключён.

Я говорил о SEO инструменте - создании сайта sitemap.xml для поисковиков.
В этом файле после корректировки по методике этой ветки создаются ссылки на страницы в которых вставлен "/article/" от которого я уже избавился в адресах страниц.

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Re: Совместимость с другими CMS
« Ответ #10 : 10 Мая 2018, 18:13:33 »
Сначала сделал - ссылка без изменений. Потом вспомнил, что у меня под map вообще не подключён.

Я говорил о SEO инструменте - создании сайта sitemap.xml для поисковиков.
В этом файле после корректировки по методике этой ветки создаются ссылки на страницы в которых вставлен "/article/" от которого я уже избавился в адресах страниц.
Я просто не врубился, исправил мод «Карта сайта». Гляну и это.

User

  • Сообщений: 31
    • Просмотр профиля
Re: Совместимость URL с другими CMS
« Ответ #11 : 10 Мая 2018, 19:13:12 »
Тоже нужное дело.  ;D
Изменил в \core\classes\Template.php строку 94
$bread_crumb.= $crumb.$config['separate_crumb'];
на
if (!stristr($crumb,'<a href="/">') and !stristr($crumb,'<a href="/.html">')){
$bread_crumb.= $crumb.$config['separate_crumb'];
}
Это мне в моде article не помогает - всё равно остаётся в крошках название мода, да ещё и переадресация на неё не действует и выдаёт 404...  :(
« Последнее редактирование: 10 Мая 2018, 19:16:54 от User »

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Re: Совместимость с другими CMS
« Ответ #12 : 10 Мая 2018, 19:52:14 »
Сначала сделал - ссылка без изменений. Потом вспомнил, что у меня под map вообще не подключён.

Я говорил о SEO инструменте - создании сайта sitemap.xml для поисковиков.
В этом файле после корректировки по методике этой ветки создаются ссылки на страницы в которых вставлен "/article/" от которого я уже избавился в адресах страниц.

Исправляем генерацию sitemap.xml
файл \admin\system\seo\index.php

строку 196
.'<loc>'.$ro->seo('index.php?dn='.$k, true).'</loc>'
меняем на
.'<loc>'.str_replace('/.html','',$ro->seo('index.php?dn='.$k, true)).'</loc>'

строку  208
$xml.= '<loc>'.$conf['site_url'].'/'.$k.'/'.$item['catcpu'].'/</loc>';
меняем на
$xml.= '<loc>'.str_replace('/news/','/',$conf['site_url'].'/'.$k.'/'.$item['catcpu']).'/</loc>';
вместо news должно быть имя нужного мода
Вроде корректно работает...
« Последнее редактирование: 10 Мая 2018, 20:30:55 от SergusNET »

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Re: Совместимость URL с другими CMS
« Ответ #13 : 10 Мая 2018, 20:02:04 »
Тоже нужное дело.  ;D
Изменил в \core\classes\Template.php строку 94
$bread_crumb.= $crumb.$config['separate_crumb'];
на
if (!stristr($crumb,'<a href="/">') and !stristr($crumb,'<a href="/.html">')){
$bread_crumb.= $crumb.$config['separate_crumb'];
}
Это мне в моде article не помогает - всё равно остаётся в крошках название мода, да ещё и переадресация на неё не действует и выдаёт 404...  :(
Вот уж не скажу... Я на базе news перепиливал, все четко работает. А правила mod.rules изменяли? Они по идее должны быть несколько другими, чем в news. А ссылки в названии мода куда ведут?

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Re: Совместимость с другими CMS
« Ответ #14 : 10 Мая 2018, 20:09:33 »
... от которого я уже избавился в адресах страниц.
Так вы же говорили, что избавились...