Вывод мета тега {PAGE_TITLE} из другого файла

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Eridani
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет
Благодарил (а): 17 раз

Вывод мета тега {PAGE_TITLE} из другого файла

Сообщение Eridani »

Добрый день. Помогите, пожалуйста

Мне нужно было создать для 5-10 отдельных страниц свои мета теги, для этого я в хидере подключил отдельный файл

Код: Выделить всё

<!-- PHP --> require "dynamicmeta.php";<!-- ENDPHP -->
<title><!-- PHP --> echo $title;<!-- ENDPHP --></title>
Чтобы там сравнивать адреса страниц и присваивать переменным нужные значения.

Код: Выделить всё

$currenturl = $_SERVER['PHP_SELF'];


switch ($currenturl) {
	case "/forum/portal.php":
		$title = "Мой титл";
		$description = "моё описание";
		$keywords = "мои ключи";
	break;
	default:
	$title = "{SITENAME} &bull; <!-- IF S_IN_MCP -->{L_MCP} &bull; <!-- ELSEIF S_IN_UCP -->{L_UCP} &bull; <!-- ENDIF -->{PAGE_TITLE}";
}
НО! Мне нужно, чтобы бы в противном случае, то есть любые другие страницы, которые не будут присутствовать в switch case, им задавалось значение по-умолчанию, то есть то, которое идет стандартным (я как раз пытался представить его в default), но дело в том, что он в этом случае передается как обычный string.

Как можно сделать, чтобы {PAGE_TITLE} передавался как значение?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Anvar
Former team member
Сообщения: 1964
Стаж: 16 лет 5 месяцев
Благодарил (а): 67 раз
Поблагодарили: 800 раз

Re: Вывод мета тега {PAGE_TITLE} из другого файла

Сообщение Anvar »

Нужен ли php в шаблонах для этих целей?

В phpBB есть штатная возможность проверки для страниц в шаблонах.

Код: Выделить всё

<!-- IF SCRIPT_NAME == 'index' -->
<meta name="title" content="Главная страница" />
<meta name="description" content="Это описание главной страницы..." />
<!-- ELSEIF SCRIPT_NAME == 'viewforum' -->
<meta name="title" content="Страница форума" />
<meta name="description" content="Это описание страницы форума..." />
<!-- ELSE -->
<meta name="title" content="Custom page title" />
<meta name="description" content="Описание по дефолту.." />
<!-- ENDIF -->
(Обратить внимание что путь и расширение файла вырезаются заранее в php).

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

Код: Выделить всё

$template->assign_var('S_PAGENAME', true);
В шаблоне используем конструкцию

Код: Выделить всё

<!-- IF S_PAGENAME -->
<meta name="title" content="Page Name" />
<meta name="description" content="Это описание страницы PAGE..." />
<!-- ENDIF -->
Более лучший способ:
Выводить в нужной странице или в каждом требуемом условии:

Код: Выделить всё

$template->assign_vars(array(
	'TITLE'		=> 'Название страниц', // Лучше выводить из БД, либо хранить в lang
	'DESCRIPTION'	=> 'Описание лучше хранить в базе или $lang файлах',
	)
);
В шаблоне используем конструкцию:

Код: Выделить всё

<meta name="title" content="{TITLE}" />
<meta name="description" content="{DESCRIPTION}" />
(Повторять не нужно)

Отправлено спустя 6 минут 54 секунды:
Да, кстати возможности шаблонов не ограничены для различных манипуляций.
Рекомендую ознакомиться Руководство по синтаксису шаблонов
Аватара пользователя
Eridani
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет
Благодарил (а): 17 раз

Re: Вывод мета тега {PAGE_TITLE} из другого файла

Сообщение Eridani »

Anvar писал(а):Нужен ли php в шаблонах для этих целей?
В phpBB есть штатная возможность проверки для страниц в шаблонах.
Спасибо, но вроде бы не совсем подходит.

В первой конструкции если используется более двух условий, то ничего не работает, форум летит. :cry:
В остальных конструкциях используются конкретные общие страницы, такие как viewtopic и т.п.

Мне же нужно задавать эти теги для основных разделов форума, например: Для модуля портала, для страницы списка форум и для основных разделов самого форума: viewforum.php?f=1 , viewforum.php?f=299 и т.п. как через эти шаблонные теги добавлять эти get адреса - не знаю, меня этот смарт вообще в ступор вводит, не столь я силен в пхп для его понимания.
+ У меня сейчас установлен СЕО ultimate, соответственно, все адреса имеют вид ЧПУ, посему, я начал использовать switch case.

Я что именно хотел сделать - чтобы эти 10 страниц имели свои мета теги, а остальные (else) имели не какое то одно описание для всех страниц, а чтобы для каждого своего поста использовался свой тайтл (как это используется в {PAGE_TITLE}, который берется из заголовка самой темы, то есть так, как это есть в дефолтной сборке.

Отправлено спустя 20 минут 25 секунд:
Вот такая бы конструкция была весьма уместна, но тем ни менее, page title не передается как значение

Код: Выделить всё

<title><!-- PHP --> if ($title == true) { echo $title;} else { echo '{PAGE_TITLE}';}<!-- ENDPHP --></title>
Anvar
Former team member
Сообщения: 1964
Стаж: 16 лет 5 месяцев
Благодарил (а): 67 раз
Поблагодарили: 800 раз

Re: Вывод мета тега {PAGE_TITLE} из другого файла

Сообщение Anvar »

Eridani писал(а): В первой конструкции если используется более двух условий, то ничего не работает, форум летит.
Была опечатка, поправил.
Eridani писал(а): viewforum.php?f=1 , viewforum.php?f=299
Тут проще добавить дополнительные поля к таблице в БД. Описания есть у каждого форума, можно их задействовать или создать аналогично.

Посмотрите как реализованы моды Topic SEO + Index SEO + Forum SEO [Три простых мода СЕО]
Аватара пользователя
Eridani
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет
Благодарил (а): 17 раз

Re: Вывод мета тега {PAGE_TITLE} из другого файла

Сообщение Eridani »

Anvar писал(а):
Тут проще добавить дополнительные поля к таблице в БД. Описания есть у каждого форума, можно их задействовать или создать аналогично.
Иными словами, использовать шаблонный тег page_title внутри php у меня шансов нет? Так то было бы вообще идеально, сразу бы решил свой вопрос.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Вывод мета тега {PAGE_TITLE} из другого файла

Сообщение Sheer »

Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Anvar
Former team member
Сообщения: 1964
Стаж: 16 лет 5 месяцев
Благодарил (а): 67 раз
Поблагодарили: 800 раз

Re: Вывод мета тега {PAGE_TITLE} из другого файла

Сообщение Anvar »

Eridani писал(а): использовать шаблонный тег page_title внутри php у меня шансов нет?
Можно и его использовать.

В каждом php файле страницы он задаётся в функции page_header('Название страницы');

Можно использовать ваш метод, только не в шаблоне.

Открыть includes/functions.php

Найти

Код: Выделить всё

	// The following assigns all _common_ variables that may be used at any point in a template.
	$template->assign_vars(array(
		'SITENAME'						=> $config['sitename'],
Добавить перед

Код: Выделить всё

$currenturl = str_replace('.' . $phpEx, '', $user->page['page_name']);

switch ($currenturl)
{
	case 'portal':
		$page_title = 'Название страницы портала';
	break;

	case 'index':
		$page_title = 'Название главной страницы';
	break;

	default:
		$page_title = 'Остальные страницы';
	break;
}
Аватара пользователя
Eridani
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет
Благодарил (а): 17 раз

Re: Вывод мета тега {PAGE_TITLE} из другого файла

Сообщение Eridani »

Anvar писал(а): Можно использовать ваш метод, только не в шаблоне.
ЕС! Спасибо. Чуточку не так, но я поправил под свои нужны. Я и не додумывался запихнуть это в функции... В итоге:

Код: Выделить всё

$currenturl = $_SERVER['PHP_SELF'];

switch ($currenturl)
{
   case '/forum/portal.php':
      $page_title = 'Главная страница';
   break;

   case '/forum/index.php':
      $page_title = 'Список форумов';
   break;

}
То есть, могу сравнивать страницы хоть по ЧПУ, хоть по get параметрам. В противном случае (default я тут не использовал, т.к. мне НЕ нужно было статичное для всех других страниц описание) применяется стандартный выдергиватель названия страниц.

В итоге, для нужных мне страниц я прописываю их как хочу, но и все остальные страницы (а это тысячи топиков) имеют свое собственное уникальное название! :roll:

Вернуться в «Поддержка phpBB 3.0.х»