Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Ritsuka

Как сделать IP.Content "корневым" приложением

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

Чтобы сделать IP.Content первым, что открывается по заходу на ваш IP.Board-форум, нужно выполнить 2 шага:

 

1. Поднять форум и все его страницы из корня в виртуальную подпапку "forums" с помощью правки ЧПУ-шаблонов

 

Заменяем содержимое файла /admin/applications/forums/extensions/furlTemplates.php на:

 

<?php
/**
* <pre>
* Invision Power Services
* IP.Board vVERSION_NUMBER
* Sets up SEO templates
* Last Updated: $Date: 2011-08-02 15:53:39 -0400 (Tue, 02 Aug 2011) $
* </pre>
*
* @author 		$Author: bfarber $
* @copyright	(c) 2001 - 2009 Invision Power Services, Inc.
* @license		http://www.invisionpower.com/community/board/license.html
* @package		IP.Board
* @subpackage	Forums
* @link		http://www.invisionpower.com
* @since		20th February 2002
* @version		$Rev: 9351 $
*
*/

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

/**
* SEO templates
*
* 'allowRedirect' is a flag to tell IP.Board whether to check the incoming link and if not formatted correctly, redirect the correct one
*
* OUT FORMAT REGEX:
* First array element is a regex to run to see if we've a match for the URL
* The second array element is the template to use the results of the parenthesis capture
*
* Special variable #{__title__} is replaced with the $title data passed to output->formatUrl( $url, $title)
*
* IMPORTANT: Remember that when these regex are used, the output has not been fully parsed so you will get:
* showuser={$data['member_id']} NOT showuser=1 so do not try and match numerics only!
*
* IN FORMAT REGEX
*
* This allows the registry to piece back together a URL based on the template regex
* So, for example: "/user/(\d+?)/", 'matches' => array(  array( 'showuser' => '$1' ) )tells IP.Board to populate 'showuser' with the result
* of the parenthesis capture #1
*/
$_SEOTEMPLATES = array(

'showannouncement'     => array( 'app'		     => 'forums',
								 'allowRedirect' => 1,
								 'out'           => array( '#showannouncement=(.+?)((?:&|&)f=(.+?))?(&|$)#i', 'forums/forum-$3/announcement-$1-#{__title__}/$4' ),
						  		 'in'            => array( 'regex'   => '#/forums/forum-(\d+?)?/announcement-(\d+?)-#i',
												 		   'matches' => array( array( 'showannouncement', '$2' ), array( 'f', '$1' ) ) ) ),

'showforum'     => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'isPagesMode'   => 1,
						  'out'           => array( '#showforum=(.+?)(&|$)#i', 'forums/forum/$1-#{__title__}/$2' ),
						  'in'            => array( 'regex'   => '#^/forums/forum/(\d+?)-#i',
												    'matches' => array( array( 'showforum', '$1' ) ) ) ),

'showtopicunread'=> array( 'app'		      => 'forums',
						   'allowRedirect'    => 1,
						   'out'              => array( '#showtopic=(.+?)(?:&|&)view=getnewpost(&|$)#i', 'forums/topic/$1-#{__title__}/unread/$2' ),
						   'in'               => array( 'regex'   => '#^/forums/topic/(\d+?)-([^/]+?)/unread(/|$)#i',
											            'matches' => array( array( 'showtopic', '$1' ),
																			array( 'view', 'getnewpost' ) ) ) ),

'showtopicnextunread'=> array( 'app'		      => 'forums',
							   'allowRedirect'    => 1,
							   'out'              => array( '#showtopic=(.+?)(?:&|&)view=getnextunread(&|$)#i', 'forums/topic/$1-#{__title__}/nextunread/$2' ),
							   'in'               => array( 'regex'   => '#^/forums/topic/(\d+?)-([^/]+?)/nextunread(/|$)#i',
												            'matches' => array( array( 'showtopic', '$1' ),
																				array( 'view', 'getnextunread' ) ) ) ),

'showtopic'     => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'isPagesMode'   => 1,
						  'out'           => array( '#showtopic=(.+?)(\#|&|$)#i', 'forums/topic/$1-#{__title__}/$2' ),
						  'in'            => array( 'regex'   => '#^/forums/topic/(\d+?)-#i',
											        'matches' => array( array( 'showtopic', '$1' ) ) ) ),

'acteqst'       => array( 'app'		      => 'forums',
						  'allowRedirect' => 1,
						  'out'           => array( '#act=ST(.*?)&t=(.+?)(&|$)#i', 'forums/topic/$2-#{__title__}/$3' ),
						  'in'            => array( 'regex'   => '#^notavalidrequest$#i',
											        'matches' => array( array( 'showtopic', '0' ) ) ) ),

'act=idx'       => array( 'app'		      => 'forums',
						  'allowRedirect' => 0,
						  'out'           => array( '#act=idx(&|$)#i', 'forums/$1' ),
						  'in'            => array( 'regex'   => '#^/forums(/|$|\?)#i',
											        'matches' => array( array( 'act', 'idx' ) ) ) ),
);

 

 

2. Назначать IP.Content основным приложением

 

Заменяем в /initdata.php это:

 

/**
* Default app name
* You can set this in your own scripts before 'initdata.php' is required.
*/
if ( ! defined( 'IPS_DEFAULT_PUBLIC_APP' ) )
{
define( 'IPS_DEFAULT_PUBLIC_APP', 'forums' );
}

 

 

на это:

 

/**
* Default app name
* You can set this in your own scripts before 'initdata.php' is required.
*/
if ( ! defined( 'IPS_DEFAULT_PUBLIC_APP' ) )
{
define( 'IPS_DEFAULT_PUBLIC_APP', 'ccs' );
}

 

 

3. Сбрасываем кэш ЧПУ (одноименная кнопка в админке)

 

4. Делаем первой вкладкой в меню наш сайт на IP.Content (опционально)

 

В шаблоне Global Templates > globalTemplate находим:

 

						<if test="showhomeurl:|:$this->settings['home_url'] AND $this->settings['home_name']">
						<li id='nav_home' class='left'><a href='{$this->settings['home_url']}' title='{$this->lang->words['homepage_title']}' rel="home">{$this->settings['home_name']}</a></li>
					</if>

 

 

Заменяем на:

 

						{parse variable="ccsActive" default="" oncondition="IPS_APP_COMPONENT == 'ccs'" value="active"}
					<li id='nav_ccs' class='left {parse variable="ccsActive"}'><a href='{$this->settings['home_url']}' title='{$this->lang->words['homepage_title']}' rel="home">{$this->settings['home_name']}</a></li>

 

 

Адрес и текст этой ссылки задаются в настройках, в группе "General Configuration", поля Website name и Website address. В принципе, если скинов не много, можно сразу написать:

 

						{parse variable="ccsActive" default="" oncondition="IPS_APP_COMPONENT == 'ccs'" value="active"}
					<li id='nav_ccs' class='left {parse variable="ccsActive"}'><a href='/' title='На главную' rel="home">Сайт</a></li>

 

 

В настройках IP.Content выставляем "Show 'Pages' navigation bar entry" на "No".

 

Результат

 

Теперь у вас все несуществующие адреса будут передаваться в IP.Content, который будет либо выдавать текстовую ошибку 404, либо показывать с тем же 404-заголовком любую назначенную вами страницу IP.Content. Главная страница IP.Content (по-умолчанию - index.html, меняется в настройках) станет главной страницей всего форума. Список форумов уйдет на подпапку "/forums/", все остальные приложения останутся в своих подпапках.

 

Итоговая структура:

/ - IP.Content
/forums/ - Форум
/blogs/ - Блоги
/gallery/ - Галерея
и т.д.

 

Примечание! Если вам нужно только назначить IP.Content как приложение по умолчанию, достаточно выполнить только второй пункт.

Статья рассказывает о именно том, как создать эффект "корневого" приложения, когда форум визуально находится в виртуальную папку /forums/

 

Это сообщение было вынесено в статью

  • Upvote 7

Поделиться сообщением


Ссылка на сообщение

Спасибо.

Главная страница IP.Content (по-умолчанию - index.html, меняется в настройках) станет главной страницей всего форума.
Как сделать, чтобы главная страница всего сайта и страница отображаемая по клику на пункт меню "Pages" были разными? Имея в виду, что обе страницы сделаны в IP.Content

Поделиться сообщением


Ссылка на сообщение

Нужно папку создавать? И какие в нее файлы кидать?

 

Делал все по инструкции но форум не открывается по адресу сайт/forums/

только так сайт/index.php?/index

Поделиться сообщением


Ссылка на сообщение

Сделал всё правильно, но получилась шляпа: "index.php?/forums/"

И чат перестал работать, жму по ссылке, а он мне пишет что такого нету.

Поделиться сообщением


Ссылка на сообщение
только так сайт/index.php?/index
Сделал всё правильно, но получилась шляпа: "index.php?/forums/"

Ну как из леса, честное слово :)

 

Убрать /index.php - это совсем другой вопрос, не раз освещенный на этом и других форумах. В АЦ в настройках "SEO" есть соответствующая опция и даже примерный .htaccess с нужными рерайтами.

 

И причем здесь изменение каталогов приложений? :)

Поделиться сообщением


Ссылка на сообщение

Ritsuka, благодарю за ответ. у меня еще есть проблема, когда я захожу в АЦ, выбираю ip content, и жму на настройки (settings), у меня появляется ошибка мускула, точно уже ошибку не помню, что-то связанное с файлом core.php

Поделиться сообщением


Ссылка на сообщение

Эта проблема легко решается покупкой лицензионного скрипта, и это совсем уже оффтоп.

Поделиться сообщением


Ссылка на сообщение

Ну как из леса, честное слово :)

 

Убрать /index.php - это совсем другой вопрос, не раз освещенный на этом и других форумах. В АЦ в настройках "SEO" есть соответствующая опция и даже примерный .htaccess с нужными рерайтами.

 

И причем здесь изменение каталогов приложений? :)

Можно по подробней как убрать? Просто я только начал изучать ipb

Поделиться сообщением


Ссылка на сообщение

Написали же, что в настройках админцентра - SEO оптимизация.

Поделиться сообщением


Ссылка на сообщение

[#10CCS2] We could not find the page you were looking for.

это когда пытаюсь зайти в тему

Поделиться сообщением


Ссылка на сообщение

[#10CCS2] We could not find the page you were looking for.

это когда пытаюсь зайти в тему

п.1 или п.3 - что-то из этого не сделано.

Поделиться сообщением


Ссылка на сообщение

Index of /forums

 

Name Last modified Size Description

Parent Directory -

Apache/2.2.9 (Debian) PHP/5.2.17-0.dotdeb.0 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g Server at site.ru Port 80

 

 

после того как убрал Index

Поделиться сообщением


Ссылка на сообщение
Index of /forums

Логично предположить, что у вас существует папочка forums в папке с форумом, поэтому вместо передачи запроса в IPB, Apache просто листит эту директорию. Удалите эту папку, если она пустая, или переименуйте, если её содержимое нужно.

 

Кстати, включенные +Indexes как бы намекают, что администрированием вашего сервера занимается либо полный пофигист, либо совершенно безграмотный человек...

Поделиться сообщением


Ссылка на сообщение

Спс с этим разобрался но все равно пишет когда заходишь в тему

[#10CCS2] We could not find the page you were looking for.

 

Хотя ЧПУ сбросил

 

Врубился в чем проблема почему то когда из категории выбираешь тему то она не дописывает /forums/в ссылке

 

Кто знает как это исправить?

 

Помогите вот одна и таже тема но ссылки разные

/showtopic=614/page__view__getnewpost это не рабочая

/forums/topic/614-pw-patcher/

 

post-49052-0-50841800-1330780901_thumb.png

 

Неужели не кто помочь не может?

Поделиться сообщением


Ссылка на сообщение

Неужели не кто помочь не может?

Никто не может. Здесь по скринам не гадают.

 

 

Помогите вот одна и таже тема но ссылки разные

/showtopic=614/page__view__getnewpost это не рабочая

/forums/topic/614-pw-patcher/

Ясно что она не рабочая. На лицо как будто неправильное отредактированные чпу. Точнее только телепаты скажут.

Если есть проблемы с кэшем чпу, можно его сбросить таким способом http://ipbskins.ru/forum/topic7604.html#entry49889

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...