Настройка ЧПУ с форумом

Rating based on reviews:
Total stars received: 0
Total reviews: 0
Average rating: 0
Filed under: User Blog
Внимание! Эта инструкция только для простых сайтов на Cotonti. Если вам нужно настроить ЧПУ для фриланс-биржи, то используйте другую инструкцию. В данной инструкции мы постараемся разобраться каким образом сделать универсальные настройки для организации красивых человекопонятных ссылок на Cotonti и при этом учесть структуру разделов сайта не только для страниц, но и для форума. Для начала необходимо убедиться, что на вашем сервере имеется расширение mod_rewrite. Обычно оно установлено на всех нормальных хостингах. Нам понадобиться установить на сайт штатный плагин Urleditor. С его помощью можно преобразовать ссылки на сайте так как вам нужно. Мы не будем использовать стандартный "удобный" режим. В данном режиме все работает замечательно, все страницы имеют ссылки согласно их расположению в структуре сайта, НО в данном режиме не работает ЧПУ для форума. Поэтому нам придется немного его переделать. Данное руководство не является исключительным решением и пока проходит тестирование. Любые замечания и предложение оставляйте в комментариях либо на форуме. Итак выполним следующие действия: 1. Создаем так называемый пресет-файл с нашими правилами для ссылок plugins/urleditor/preset/myconfig.dat Этот файл нужно создать с таким содержимым:
forums    m=posts&q=&d=    forums/{forums_url_structure()}/page{$d}
forums    m=posts&q=*    forums/{forums_url_structure()}
forums    m=posts&id=*    forums/{forums_url_structure()}
forums    m=topics&s=&d=    forums/{forums_url_structure()}/page{$d}{!$m}
forums    m=topics&s=*    forums/{forums_url_structure()}{!$m}
forums    c=*    forums/{$c}
forums    *    forums
page    m=*                        page?m={$m}
page    c=system&al=*            {$al}{!$c}
page    c=*&al=*                {cot_url_catpath()}/{$al}
page    c=*&id=*                {cot_url_catpath()}/{$id}
page    c=*                        {cot_url_catpath()}
index    *                        {$_path}
plug    e=tags&a=pages&t=*        {$e}/{$t}{!$a}
plug    e=tags&a=*&t=*            {$e}/{$a}/{$t}
plug    e=*                        {$e}
users    m=details&u=*            users/{cot_url_username()}
login    *                        {$_area}
message    *                        {$_area}
admin    m=*                        admin/{$m}
admin    *                        {$_area}
rss        m=*&c=*                    {$_area}/{$m}/{$c}
rss        m=*&id=*                {$_area}/{$m}/{$id}
rss        c=*                        {$_area}/{$c}
rss        m=*                        {$_area}/{$m}
*        c=*&al=*                {$_area}/{cot_url_catpath()}/{$al}
*        c=*&id=*                {$_area}/{cot_url_catpath()}/{$id}
*        c=*                        {$_area}/{cot_url_catpath()}
*        al=*                    {$_area}/{$al}
*        id=*                    {$_area}/{$id}
*        *                        {$_area}
Пресет-файл устанавливает для движка правила отображения ссылок на сайте. 2. В директории system/ создаем файл functions.custom.php с кодом функции forums_url_structure() для подключения библиотеки дополнительных функций. код файла functions.custom.php
<?php

defined('COT_CODE') or die('Wrong URL');



/**
 * Forum URL overrides
 *
 * @param array $args Args passed over from cot_url
 * @return string
 */
function forums_url_structure(&$args)
{
    global $cfg, $db, $structure, $db_forum_topics, $db_forum_posts;

  require_once cot_incfile('forums', 'module');
  
    $script = 'forums';
    $replacement = '';
    if(isset($args['m']) && $args['m'] == 'topics')
    {
        if(isset($args['s']))
        {
      $d = (int) $args['d'];
      
            $replacement .= str_replace('.', '/', $structure['forums'][$args['s']]['path']);
      
      if(isset($args['d']))
      {
        $replacement .= '/page'.$d;
      }
      
      unset($args['d']);
      unset($args['s']);
        }
        else $replacement .= $script;
    }
    elseif(isset($args['m']) && $args['m'] == 'posts')
    {
        if(isset($args['q']))
        {
            $q = (int) $args['q'];
            $d = (int) $args['d'];
            $s = $db->query("SELECT fp_cat FROM $db_forum_posts WHERE fp_topicid=".$q)->fetchColumn();
            
      $replacement .= str_replace('.', '/', $structure['forums'][$s]['path']).'/topic'.$q;
      
      if(isset($args['d']))
      {
        $replacement .= '/page'.$d;
      }
      
      unset($args['d']);
      unset($args['q']);
            unset($args['m']);
        }
        elseif(isset($args['id']))
        {
            $id = (int) $args['id'];
            $s = $db->query("SELECT fp_cat FROM $db_forum_posts WHERE fp_id=".$id)->fetchColumn();
      
            $replacement .= str_replace('.', '/', $structure['forums'][$s]['path']).'/post'.$id;
      
            unset($args['id']);
            unset($args['m']);
        }
        else $replacement .= $script;
    }
    else $replacement .= $script;
    return $replacement;
}
  
?>
    Подключить его можно в конфиг-файле datas/config.php Для этого установите переменную:
$cfg['customfuncs'] = TRUE;
  3. Теперь нам нужно немного дополнить файл .htaccess: Например, изначально он содержит такие правила (у вас он может имеет и другие строчки, но здесь показаны базовые, которые должны быть в любом сайте на Cotonti):
################ Cotonti Handy URLs for Apache #######################

# Below are the rules to be included in your main .htaccess file or httpd.conf

# Rewrite engine options
Options -Indexes
RewriteEngine On

# Server-relative path to Cotonti. Replace it with your path if you run Cotonti
# in a subfolder
RewriteBase "/"

# Language selector
RewriteRule ^(en|ru|de|nl)/(.*) $2?l=$1 [QSA,NC,NE]

# Sitemap shortcut
RewriteRule ^sitemap\.xml$ index.php?r=sitemap [L]

# Admin area and message are special scripts
RewriteRule ^admin/([a-z0-9]+) admin.php?m=$1 [QSA,NC,NE,L]
RewriteRule ^(admin|login|message)(/|\?|$) $1.php [QSA,NC,NE,L]

# System category has priority over /system folder
RewriteRule ^system/?$  index.php?rwr=system [QSA,NC,NE,L]

# All the rest goes through standard rewrite gateway
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]+) index.php?rwr=$1 [QSA,NC,NE,L]
Перед строчкой
# System category has priority over /system folder
Добавляем правила для форума:
# forums
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/topic([0-9]+)/page([0-9]+)?$ index.php?e=forums&m=posts&q=$2&d=$3 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/topic([0-9]+)?$ index.php?e=forums&m=posts&q=$2 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/post([0-9]+)?$ index.php?e=forums&m=posts&id=$2 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/([a-zA-Z0-9_%-]+)/page([0-9]+)?$ index.php?e=forums&m=topics&s=$2&d=$3 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_./%-]+)/([a-zA-Z0-9_%-]+)/?$ index.php?e=forums&m=topics&s=$2 [QSA,NC,NE,L]
RewriteRule ^forums/([a-zA-Z0-9_%-]+)/?$ index.php?e=forums&c=$1 [QSA,NC,NE,L]
RewriteRule ^forums/?$ index.php?e=forums [QSA,NC,NE,L]
4. После того как все приготовления выполнены, нужно включить наш новый набор правил в настройках плагина Urleditor. В настройках нужно выбрать "myconfig", 5. Если на сайте включен кэш, то его нужно очистить в разделе админки: Прочее -> Внутренний кэш. Все, ссылки должны измениться согласно нашим новым настройкам.   Если ничего не вышло и сссылки не работают: 1. Очистите файл urltrans.dat или ваш пресет-файл. 2. Очистите таблицу cot_cache в базе данных (не удалять, а только очистить от данных). Тогда ссылки вернутся в исходное состояние и можно попробовать настроить все заново.   по материалам сайта CMSWorks, дополненно мной


Reviews

No reviews yet


Comments (0)

No comments yet
Only registered users can post new comments

Similar pages

Настройка ЧПУ для фриланс-биржи на Cotonti
1 Настройка ЧПУ для фриланс-биржи на Cotonti Данный мануал позволяет настроить ЧПУ для вашей фриланс-биржи. ЧПУ также
User Blog • 2020-07-17 05:15 webitproff
«URL Editor» 🔗 Преобразования URL и ЧПУ
2 Плагин «URL Editor» - Преобразования URL и поддержка ЧПУ через файлы предустановок для сайта ❤️ вашей фриланс биржи ⭐
User Blog • 2020-07-17 05:15 webitproff
Плагин «BBcode» - Поддержка и настройка ББ-кодов
3 Плагин «BBcode» - Поддержка и настройка ББ-кодов и смайликов в контенте сайта. Плагин для сайта фриланс биржи на CMS
User Blog • 2020-07-17 05:15 webitproff
CKEditor + HTML Purifier - Настройка ссылок для администратора
4 Настройка ссылок с rel="dofollow" для администратора в Cotonti (CKEditor + HTML Purifier)Описание: Полная
User Blog • 2026-07-29 18:45 webitproff
Настройка ЧПУ с форумом на CMF Cotonti
5 Внимание! Эта инструкция только для простых сайтов на Cotonti. Если вам нужно настроить ЧПУ для фриланс-биржи, то

Content author

webitproff

Offline

Sodium Carbonate

Last logged: 2026-09-01 22:41

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • Page published: 2020-07-17 05:15
  • Last update: 2026-02-27 10:11