Перейти к содержимому
Русский язык для Invision Community 5

ЧПУ для компонента

Собственно хочу приобрести компонент Classifieds но мне необходимо что бы урлы на него были такими test.ru/Classifieds а форум у меня установлен в test.ru/forum и соответственно компонент открывается по адресу test.ru/forum/Classifieds

Можно сделать так что бы компонент открывался по адресу test.ru/Classifieds ??

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

Обратите внимание

По указанному вами в профиле "Board url" находится не IP.Board, либо модифицированный пиратский скрипт с удаленными копирайтами. Если вы указали неверный URL, пожауйста, поправьте его, потому что он скорее всего потребуется при диагностике вашей проблемы. Нелицензионные скрипты не приветствуются, т.к. зачастую именно некорректное "нуление" и является причиной проблем в них.

По идее mod_rewrite должен помочь ну и если потребуется то надо будет модифицировать сам компонент.

Можно попробовать в htaccess из корня сайта добавить (после RewriteEngine On)

 

RewriteRule ^classifieds/(.*) forum/classifieds/$1 [L]

в initdata.php

 

if( strpos($_SERVER['REQUEST_URI'], '/classfields/') == 0 )
{
$_SERVER['REQUEST_URI'] = '/forum' . $_SERVER['REQUEST_URI'];
}

 

ПС

А вообще адреса генерируются абсолютными с board_url, так что все линки на страницы classfields будут с /forum/.

  • Автор

Можно попробовать в htaccess из корня сайта добавить (после RewriteEngine On)

 

RewriteRule ^classifieds/(.*) forum/classifieds/$1 [L]

в initdata.php

 

if( strpos($_SERVER['REQUEST_URI'], '/classfields/') == 0 )
{
$_SERVER['REQUEST_URI'] = '/forum' . $_SERVER['REQUEST_URI'];
}

 

ПС

А вообще адреса генерируются абсолютными с board_url, так что все линки на страницы classfields будут с /forum/.

 

В этом случае да компонент открывается по нужному адресу, но все ссылки в компоненте идут через forum/ это можно как исправить?

Изменено пользователем avgaz

Без правки модуля - нет.

  • Автор

А в каком хоть файле править пути?

Там может быть не один файл, и кроме файлов есть еще шаблоны, где прописана основная часть ссылок.

  • Автор

Уже обыскался не как не найду где править, нашёл такой файл furlTemplates.php

Вроде там идет преобразование урлов но как там поправить?

вот его код

<?php

/**
*
* Classifieds 1.2.1
*
* @author		$Author: Andrew Millne $
* @copyright   2011 Andrew Millne. All Rights Reserved.
* @license		http://dev.millne.com/license.html
* @package		Classifieds
* @link		http://dev.millne.com
*
*/

if ( ! defined( 'IN_IPB' ) ) {
   print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
   exit();
}

$_SEOTEMPLATES = array(
       'app=classifieds'		=> array(
               'app'			=> 'classifieds',
               'allowRedirect' => 1,
               'out'			=> array( '#app=classifieds$#i', 'classifieds/' ),
               'in'			=> array(
                       'regex'		=> "#/classifieds/?$#i",
                       'matches'	=> array( array( 'app', 'classifieds' ) )
               )
       ),

       'view_category' => array(
               'app'			=> 'classifieds',
               'allowRedirect' => 1,
               'out'			=> array( '/app=classifieds(?:(?:&|&))module=core(?:(?:&|&))do=view_category(?:(?:&|&))category_id=(.+?)(&|$)/i', 'classifieds/category/$1-#{__title__}/$2' ),
               'in'			=> array(
                       'regex'		=> "#/classifieds/category/(\d+?)-#i",
                       'matches'	=> array(
                               array( 'app'		, 'classifieds' ),
                               array( 'module'		, 'core' ),
                               array( 'do'	, 'view_category' ),
                               array( 'category_id'		, '$1' )
                       )
               )
       ),
       'view_item' => array(
               'app'			=> 'classifieds',
               'allowRedirect' => 1,
               'out'			=> array( '/app=classifieds(?:(?:&|&))module=core(?:(?:&|&))do=view_item(?:(?:&|&))item_id=(.+?)(&|$)/i', 'classifieds/item/$1-#{__title__}/$2' ),
               'in'			=> array(
                       'regex'		=> "#/classifieds/item/(\d+?)-#i",
                       'matches'	=> array(
                               array( 'app'		, 'classifieds' ),
                               array( 'module'		, 'core' ),
                               array( 'do'	, 'view_item' ),
                               array( 'item_id'		, '$1' )
                       )
               )
       ),
);

шаблоны, где прописана основная часть ссылок.

Темплейт задает только формат чпу, а ссылки в основном компилируются в шаблонах.

А вообще лучше всего оставить как есть, ничего страшного если в адресе будет папка форума.

  • Автор

В шаблона ссылки вот такого вида

<a href="{parse url="module=core&do=view_category&category_id={$sibling['category_id']}&sort_key={$sort['key']}&sort_order={$sort['order']}&filter={$filter}" template="view_category" seotitle="{$sibling['seo_title']}" base="publicWithApp"}" data-tooltip="{$sibling['name']}">{IPSText::truncate($sibling['name'], 20)}</a>

В фалах вот такого

$this->registry->output->addNavigation( $row['name'], 'app=classifieds&module=core&do=view_category&category_id=' . $row['category_id'], $row['seo_title'], "view_category"  );

Проблема в том что не как не найти где ссылке присваивается адрес форума уж все облазил

 

Оставлять в таком виде как сейчас уж очень не хочется.

Проблема в том что не как не найти где ссылке присваивается адрес форума уж все облазил

Формируется он в специальной функции - buildUrl (admin\sources\classes\output\publicOutput.php)

 

Как вариант, перед $this->setCachedFurl($_md5, $base.$url); добавить

 

	if( strpos($url, 'app=classfields') !== FALSE )
	{
		$base = str_replace( '/forum/', '/', $base );
	}

  • Автор

Спасибо, все отлично.

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

Важная информация

При использовании данного сайта, вы согласаетесь с Условия использования и Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим..

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.