DANNEO CMS

Danneo CMS 1.5.x => Предложения => Тема начата: SergusNET от 20 Мая 2016, 10:12:56

Название: Совместимость URL с другими CMS
Отправлено: SergusNET от 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 разбираться, да и при обновлении слетит все...

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

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

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

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

Другой вариант, удалить все моды, и оставить один, к примеру "Новости".
Для одного единственного мода, можно изменить шаблоны замены урл, укоротить.
В файле: mod/news/mod.rules.php
Просто удалить имя мода, это можно сделать самостоятельно.
Тогда, также можно получить урл вида:
http://сайт.ру/категория/страница
http://сайт.ру/категория2/страница
и т.д.
Название: Re: Совместимость с другими CMS
Отправлено: SergusNET от 20 Мая 2016, 19:42:09
Спасибо за ответ и отдельное спасибо за информацию по работе движка — я не обратил внимания, что в новой версии статичные страницы без имени мода. Не подскажете, где именно забито резервное имя (pages)?
Название: Re: Совместимость с другими CMS
Отправлено: Neon от 21 Мая 2016, 00:30:50
/core/classes/Router.php
строка 123
Цитировать
$this->mod = $this->total['pages'];
изменить на
Цитировать
$this->mod = $this->total['news'];
Название: Re: Совместимость с другими CMS
Отправлено: SergusNET от 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",
Название: Re: Совместимость с другими CMS
Отправлено: Neon от 07 Мая 2018, 20:18:13
to, SergusNET.

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

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

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

Все должно работать.
Название: Re: Совместимость с другими CMS
Отправлено: SergusNET от 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'];
}
и после этого условия все стало на свои места. Другие моды это изменение не затрагивает, проверено — на главной теперь закреплять любой мод.

Название: Re: Совместимость с другими CMS
Отправлено: User от 10 Мая 2018, 10:25:09
Полезное дело сделали. Я свой мод article так сделал.

Сайтмап выдаёт со старыми адресами!
Название: Re: Совместимость с другими CMS
Отправлено: SergusNET от 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']);
         }
То есть вместо ссылки просто выводим имя мода. Другие моды не затрагивает.

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

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

Я говорил о SEO инструменте - создании сайта sitemap.xml для поисковиков.
В этом файле после корректировки по методике этой ветки создаются ссылки на страницы в которых вставлен "/article/" от которого я уже избавился в адресах страниц.
Название: Re: Совместимость с другими CMS
Отправлено: SergusNET от 10 Мая 2018, 18:13:33
Сначала сделал - ссылка без изменений. Потом вспомнил, что у меня под map вообще не подключён.

Я говорил о SEO инструменте - создании сайта sitemap.xml для поисковиков.
В этом файле после корректировки по методике этой ветки создаются ссылки на страницы в которых вставлен "/article/" от которого я уже избавился в адресах страниц.
Я просто не врубился, исправил мод «Карта сайта». Гляну и это.
Название: Re: Совместимость URL с другими CMS
Отправлено: User от 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...  :(
Название: Re: Совместимость с другими CMS
Отправлено: SergusNET от 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 должно быть имя нужного мода
Вроде корректно работает...
Название: Re: Совместимость URL с другими CMS
Отправлено: SergusNET от 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. А ссылки в названии мода куда ведут?
Название: Re: Совместимость с другими CMS
Отправлено: SergusNET от 10 Мая 2018, 20:09:33
... от которого я уже избавился в адресах страниц.
Так вы же говорили, что избавились...
Название: Re: Совместимость URL с другими CMS
Отправлено: User от 11 Мая 2018, 06:55:52
А правила mod.rules изменяли?
Конечно!
Цитировать
Они по идее должны быть несколько другими, чем в news.
Вручную выпиливал. Сначала справа, потом слева...  8)
Цитировать
А ссылки в названии мода куда ведут?
Не совсем понял вопрос.
1. Мод "article" вывел на главную страницу по рекомендации Неона. На ней уже идут крошки - слово "Статьи" дважды друг под другом. Просто слова, без гиперссылок.
2. Если уйти на страницу конкретной статьи, то сверху имеется ряд хлебных крошек, начинаемый с названия мода (у меня везде разные, я три сайта переделал). У имени мода работает гиперссылка вида "http:lyalyalya.ru/article". На двух сайтах нажатие её ведёт к 404, на одном - выбрасывает на главную.
3. Закрепление мода статьи на главной на одном сайте привело к негативным последствиям.
Это портал да ещё с фото галереей плюс статьи.
Если закрепить мод статей на главной, то она почему-то перестаёт быть главной (по набору блоков).
Сделал блоки с главной на статьи - вообще муть получилась.
При просмотре статей выпрыгивает блок приветствия текстовый, последние сообщения форума и статья теряется в этой не нужной в данный момент информации.
Придётся отказаться от красивой идеи сокращения адресов и возвращаться к старой схеме на этом сайте.
... от которого я уже избавился в адресах страниц.
Так вы же говорили, что избавились...
Я избавился от слова article в URL страниц.
Но генератор файла sitemap.xml это не понял и шлёпает адреса с /article/.
Название: Re: Совместимость URL с другими CMS
Отправлено: SergusNET от 11 Мая 2018, 10:03:38
Странно, у меня все без проблем пошло. Но я на новом сайте делал сразу после установки движка. Пофиксил нужные места, все работает.
Название: Re: Совместимость с другими CMS
Отправлено: User от 11 Мая 2018, 19:19:34
строку 196
.'<loc>'.$ro->seo('index.php?dn='.$k, true).'</loc>'
меняем на
.'<loc>'.str_replace('/.html','',$ro->seo('index.php?dn='.$k, true)).'</loc>'
Что-то у меня с этим файлом не то. Самое близкое к заменяемому выражению строка 199:
.'<loc>'.$conf['site_url'].$ro->seo('index.php?dn='.$k).'</loc>'
Название: Re: Совместимость с другими CMS
Отправлено: SergusNET от 12 Мая 2018, 10:21:09
строку 196
.'<loc>'.$ro->seo('index.php?dn='.$k, true).'</loc>'
меняем на
.'<loc>'.str_replace('/.html','',$ro->seo('index.php?dn='.$k, true)).'</loc>'
Что-то у меня с этим файлом не то. Самое близкое к заменяемому выражению строка 199:
.'<loc>'.$conf['site_url'].$ro->seo('index.php?dn='.$k).'</loc>'
Скачал новый дистрибутив, проверил — 196 строка. Это выражение вообще одно в файле.
Название: Re: Совместимость URL с другими CMS
Отправлено: User от 12 Мая 2018, 15:26:44
Скачал дистрибутив - нашёл - заменил - попробовал сгенерировать сайтмап - получил сообщение:
Цитировать
Fatal error: Call to a member function seo() on array in /***/admin/system/seo/index.php on line 196
Если у меня этот файл другой по содержинию был, так может и остальные тоже другие? :-)
Название: Re: Совместимость URL с другими CMS
Отправлено: SergusNET от 23 Июля 2018, 21:53:35
Перевел движок с 0.53 на 1.5 с новыми url без имени мода. За основу был взят news. Сделал редиректы, Гугл сожрал с удовольствием. Работает, никаких проблем и ошибок. Адрес — internetrabota.net