Skip to content

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

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

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

Featured Replies

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

По указанному вами в профиле "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/.

  • Author

Можно попробовать в 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/ это можно как исправить?

Edited by avgaz

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

  • Author

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

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

  • Author

Уже обыскался не как не найду где править, нашёл такой файл 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' )
                       )
               )
       ),
);

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

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

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

  • Author

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

<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 );
	}

  • Author

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

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.