Создание пункта меню в Joomla для входа на форум и перенос регистрации пользователей из SMF на сайт

| 18.05.2017

Создание пункта меню в Joomla для входа на форум и перенос регистрации пользователей из SMF на сайт

15 Окт, 2009

  1. Создание пункта меню в Joomla, который будет вести на форум
  2. Форум будет открываться как самостоятельный ресурс
  3. Как сделать регистрацию посетителей форума на сайте
  4. Альтернативный способ переадресации пользователей

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. В предыдущих статьях данной рубрики мы подробно рассмотрели установку и настройку форума SMF ) и компонента JFusion, добившись интеграции этого движка и Joomla.

Так же мы обсудили проблему выбора лучшей конференции для Джумлы и сошлись с вами во мнении, что имеющиеся у этого движка расширения в большинстве случаев не удовлетворят наших взыскательных требований и лучше всего будет прикрутить к нему полноценный движок конференции. Мы благополучно справились с задачей их интеграции и объединения пользователей форума и сайта.

Теперь нам осталось только настроить перенаправление пользователей с СМФ, желающих зарегистрироваться, на сайт (это особенно актуально если у вас конференция открывается не внутри дизайна вебсайта, а в отдельном окне), а так же настроить способ отображения форума и установить модули JFusion, которые будут выводить на вебсайте ту или иную информацию с конференции.

Создание пункта меню в Joomla, который будет вести на форум

Начать, наверное, стоит с настройки способа отображения форума по отношению к вебсайту. Для начала нужно добавить пункт меню, по нажатию на который откроется главная страница вашей конференции.

Для создания такого пункта заходим в админку Джумлы (http://vash_sait.ru/administrator/) и подводим мышь к пункту «Все меню» в верху окна. Из выпадающего списка выбираем то меню, в котором мы хотим разместить ссылку на конференцию. При этом у вас откроется окно с уже имеющимися там пунктами.

Выбор дальнейших действий зависит от того, как вы хотите настроить взаимное отображение: будет ли он показываться внутри Joomla в области контента или же будет открываться в новом окне без какого-либо дополнительного обрамления?

Сначала рассмотрим порядок действий для первого варианта, когда SMF будет открываться внутри шаблона вебсайта в области для контента (там, где у вас обычно отображаются статьи или выводимый другими компонентами контент).

Нам необходимо создать новый пункт, поэтому мы нажимаем на кнопку «Создать» в верхнем правом углу окна.

В открывшемся дереве «Выберите тип меню», щелкаем по надписи «JFusion». Перед нами появится окно с настройками, состоящее из левого и правого блоков.

В левом блоке настроек вы задаете:

  1. в поле «Заголовок» (очевидно, «Конференция»)
  2. в поле «Псевдоним» можете задать вид ссылки, если используете ЧПУ (человеко-понятные Урлы), например, при использовании сторонних компонентов типа ARTIO JoomSEF или sh404SEF. Если ЧПУ (SEF) не используете, то оставьте это поле пустым.
  3. в поле «Ссылка» вы можете видеть Урл этой будущей ссылки, чтобы иметь возможность его скопировать
  4. в поле «Показать в» можете выбрать меню, в котором появится данный пункт
  5. в поле «Родительский элемент» можно задать вложенность (если вкладывать не надо, то оставьте вариант по умолчанию «Верх»)
  6. в поле «Опубликовано» ставите галочку «Да» для того, чтобы ваш новый пункт был виден на вебсайте
  7. в поле «Доступ» выбираете кому он будет виден: либо всем, либо только зарегистрированным пользователям, либо только админам (вариант «Специальный»)
  8. в поле «Открывать в» можете выбрать: открывать конференцию в этом же окне (вариант «в этом же окне с навигацией»), либо в новой вкладке того же самого окна (вариант «новом окне с навигацией»), либо в новом окне (вариант «новом окне без навигации»)

В правом блоке настроек вы задаете:

  1. в поле «Плагин JFusion» щелкаете по кнопке «Выбрать» и во всплывающем окне, в поле «JFusion Plugin», выбираете нужный плагин (в нашем случае — smf), после чего не забудьте нажать кнопку «Save» в этом же окне
  2. в поле «Визуальная интеграция» выбираете вариант «Враппер» (у меня вариант «Frameless» приводил к ошибке) и тогда, при нажатии на создаваемый пункт меню, форум откроется внутри дизайна (шаблона) Джумлы в области контента.

    Если вы выберите вариант вывода во враппер (wrapper), то можете расширить область для показа конференции за счет отключения показа всех боковых модулей. Для этого нужно будет:

    1. зайти в настройки всех боковых модулей по очереди и в поле «Меню» поставить галочку «Выбрать из списка»
    2. затем, удерживая Shift или Ctrl на клавиатуре, выделить все пункты меню, кроме созданного нами для SMF.
    3. в результате, эти боковые модули будут видны везде, кроме страницы с конференцией
  3. в поле «Полосы прокрутки во враппере», на мой взгляд, лучше всего выбрать вариант «Автоматически», тогда длина враппера будет автоматически подстраиваться под длину открываемых на форуме страниц и не будет появляться полоса прокрутки
  4. в поле «Ширина враппера» в Joomla и «Высота враппера» у меня стоит 100% для ширины и 500 для высоты wrapper. Это будет важно, если вы выбрали в предыдущем пункте вариант отличный от «Автоматически».
  5. в поле «Автоопределение высоты во враппере» и «Прозрачный враппер (wrapper)» я поставил галочку рядом с вариантом «Да» (можете попробовать и посмотреть что изменится, если поставить «нет»)

Не забудьте после окончания произведенных настроек нажать на кнопку «Сохранить» или «Применить» (при нажатии на кнопку «Сохранить» ваши настройки сохранятся и вас выкинет с этой страницы настроек, а при нажатии на кнопку «Применить» — ваши настройки также сохранятся, но вы останетесь на этой же странице).

Форум будет открываться как самостоятельный ресурс

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

Так же, как и в предыдущем случае, создаем пункт меню. Для этого выбираем в админке Джумлы из выпадающего списка «Все меню» то из них, куда хотим поместить ссылку для перехода на форум. Затем нажимаем на кнопку «Создать» в верхнем правом углу страницы и в открывшемся дереве «Выберите тип меню» щелкаем по надписи «Внешняя ссылка». Перед нами появится окно с настройками.

Настройки левого блока аналогичны описанным выше, за исключение появившегося поля «Ссылка», в которое мы должны вставить адрес нашего форума:

http://vash_sait.ru/forum/index.php

Если название папки, в которую вы устанавливали движок СМФ отлично от Forum, то вы пишете в адресе ее название вместо forum. В поле «Открывать в» я выбрал вариант «новом окне с навигацией», в результате чего страница с конференцией открывается в новой вкладке браузера.

Как сделать регистрацию посетителей форума на сайте

Суть наших действий будет заключаться в следующем: т.к. мы запретили регистрацию пользователей в настройках СМФ, то теперь при переходе по ссылке «Регистрация» посетитель видит сообщение об ошибке. Это не есть гуд и поэтому вместо этого сообщения хорошо бы было объяснить пользователю, что нужно сделать для прохождения регистрации.

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

Для начала открываем на редактирование файл Errors.russian.php, который вы сможете найти пройдя в своем FTP-менеджере по следующему пути:

 forumThemesdefaultlanguagesErrors.russian.php

.

Если вы используете не дефолтную тему оформления для вашего форума, то в этом пути, вместо каталога default, вы должны заходить в каталог с названием вашей темы. В том текстовом редакторе, который используете для редактирования файлов (я пользуюсь Notepad++, который можно скачать здесь) с помощью встроенного поиска найдите в этом файле строку:

$txt['registration_disabled'] = 'Извините, регистрация в данный момент недоступна.';

и замените ее на нужный вам текст с встроенными ссылками на страницу регистрации в Joomla. В моем случае это будет выглядеть так:

$txt['registration_disabled'] = 'Регистрация осуществляется на сайте. <br><br>Вводите, пожалуйста, в форму регистрации реальный e-mail, т.к. на него Вам придет письмо с активирующей ссылкой.';

Теперь при переходе на страницу регистрации вашей конференции, вы увидите нужный текст с нужными ссылками, но если вы посмотрите на верхнюю панель браузера, в котором открыта эта страницы, то увидите там надпись 'Ошибка!'. Это не есть гуд и для исправления этой ситуации в SMF нужно открыть на редактирование файл index.russian.php, пройдя по следующему пути:

forumThemesdefaultlanguagesindex.russian.php

Воспользуйтесь поиском в вашем текстовом редакторе и найдите следующую строку:

$txt[106] = 'Ошибка!';

и замените ее на:

$txt[106] = 'Регистрация';

Альтернативный способ переадресации пользователей

Уже после публикации этой статьи уважаемый Max (RuSellers.ru — сайт посвящен специалистам и начинающим работникам торговли) в комментариях предложил очень интересный вариант переадресации пользователей и с форума на сайт. Суть этого варианта заключается в том, что сразу после нажатия на кнопку «Регистрация» на конференции, пользователь будет переброшен на страницу регистрации в Джумле.

Просто и изящно. Для реализации этого способа нужно будет открыть на редактирование файл /forum/Themes/default//forum/Themes/index.temlate.php и найти приведенный ниже участок кода:

// If the user is a guest, also show [register] button.
	if ($context['user']['is_guest'])
		echo ($current_action == 'register' || $context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '">&nbsp;</td>' : '' , '
				<td valign="top" class="maintab_' , $current_action == 'register' ? 'active_back' : 'back' , '">
					<a href="', $scripturl, '?action=register">' , $txt[97] , '</a>
				</td>' , $current_action == 'register' ? '<td class="maintab_active_' . $last . '">&nbsp;</td>' : '';

а затем заменить его на следующий код:

// If the user is a guest, also show [register] button.
	if ($context['user']['is_guest'])
		echo ($current_action == 'register' || $context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '">&nbsp;</td>' : '' , '
				<td valign="top" class="maintab_' , $current_action == 'register' ? 'active_back' : 'back' , '">
					<a href="http://ваш_Сайт_на_Jomla/страница_Регистрации_на_сайте.php">' , $txt[97] , '</a>
				</td>' , $current_action == 'register' ? '<td class="maintab_active_' . $last . '">&nbsp;</td>' : '';

По сути, меняется только небольшой участок кода темы, отвечающий за формирование адреса ссылки на страницу регистрации. Вместо http://ваш_Сайт_на_Jomla/страница_Регистрации_на_сайте.php вы должны подставить адрес страницы для регистрации пользователей в Джумле. Таким способом мы изменили адрес ссылки для кнопки «Регистрация», расположенной в верхнем меню форума Simple Machines Forum:

Но еще остается ссылка на страницу регистрации, которая прописана в сообщении «Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.», которое видит незарегистрированный пользователь конференции над формой ввода логина и пароля.

Для того, чтобы и эта ссылка вела на страницу регистрации расположенную на вебсайте, нужно внести изменения в файл Themes/default/languages/Index.russian.php. Найдите в этом файле следующий участок кода:

$txt['welcome_guest'] = 'Добро пожаловать, ' . $txt[28] . '. Пожалуйста, <a href="' . $scripturl . '?action=login">войдите</a> или <a href="' . $scripturl . '?action=register">зарегистрируйтесь</a>.';

и замените его на:

$txt['welcome_guest'] = 'Добро пожаловать, ' . $txt[28] . '. Пожалуйста, <a href="' . $scripturl . '?action=login">войдите</a> или <a href="http://ваш_Сайт_на_Jomla/страница_Регистрации_на_сайте.php">зарегистрируйтесь</a>.';

Т.е. мы опять прописываем путь к странице регистрации на сайте — http://ваш_Сайт_на_Jomla/страница_Регистрации_на_сайте.php.

Вот, собственно, и вся настройка регистрации пользователей. Как я и говорил — ничего сложного. Осталась всего одна статья по теме — последняя (ссылка на нее приведена в самом начале этой публикации).