Мета-теги на статичной странице

Проблемы с установкой или работой 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 раз

Мета-теги на статичной странице

Сообщение Eridani »

Доброго всем!

Для СЕО необходимо было создать статичную страницу. Сделал путем копирования файла faq.php из корневой и faq_body из теплейтов.

Все отлично, все отображается как надо, почти идеальная площадка под статью, но...
Как можно задать мета-теги этой странице?

Я понимаю, что у меня в начале файла faq_body идет <!-- INCLUDE overall_header.html -->, откуда, видимо и берутся теги, но есть ли у кого-нибудь идейка, как без танцев с бубном задать каждой статичной заточенной под текст странице свои мета-теги?
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Мета-теги на статичной странице

Сообщение Татьяна5 »

Задать свои переменные под мета-теги для каждой страницы
По аналогии с Создание страниц в стиле конференции (все страницы будут открываться через один php-файл, а передавать переменные можно для каждой страницы свои)

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

$cond=request_var("page", "");
switch($cond)
{
case "aboutus":
    $template->assign_vars(array(
        'CUSTOM_META_KEYWORDS'    => $user->lang['KEYWORDS_ABOUTUS'],
        'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_ABOUTUS'],
    ));
    break;

case "page2":
    $template->assign_vars(array(
        'CUSTOM_META_KEYWORDS'    => $user->lang['KEYWORDS_PAGE2'],
        'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_PAGE2'],
    ));
    break;
}
KEYWORDS_ABOUTUS, DESCRIPTION_ABOUTUS, KEYWORDS_PAGE2, DESCRIPTION_PAGE2 задать в языковом файле, который подключён к страницам

В overall_header.html использовать (в мета-тегах)

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

<!-- IF CUSTOM_META_KEYWORDS -->{CUSTOM_META_KEYWORDS}<!-- ENDIF -->
<!-- IF CUSTOM_META_DESCRIPTION -->{CUSTOM_META_DESCRIPTION}<!-- ENDIF -->
Добавлено спустя 7 минут 56 секунд:
Или в таком варианте (запись короче)

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

$cond=request_var("page", "");
switch($cond)
{
	case "aboutus":
	case "page2":
		$template->assign_vars(array(
			'CUSTOM_META_KEYWORDS'    => $user->lang['KEYWORDS_' . strtoupper($cond)],
			'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_' . strtoupper($cond)],
		));
	break;
}
Аватара пользователя
Eridani
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет
Благодарил (а): 17 раз

Re: Мета-теги на статичной странице

Сообщение Eridani »

Не понимаю, в пхп не силен. То есть, условие проверяет название страницы и если оно соответствует, то тогда применяется та или иная переменная?
У меня вообще ничего не получается.
Адрес я ввожу как www.site.ru/polezno.php

В index.php используется языковой viewforum, его же я использовал для своего файла.
Добавил как:

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

    'KEYWORDS_ABOUTUS'		=> 'кейвордс',
	'DESCRIPTION_ABOUTUS'		=> 'дескрипшн',
	'TITLE_ABOUTUS'		=> 'титл',
Мой созданный файл в корне имеет вид

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

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');

page_header('polezno');

$template->set_filenames(array(
    'body' => 'polezno_body.html',
));

make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
?>
Тело:

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

    <!-- INCLUDE overall_header.html -->

    <div class="panel">
       <div class="inner"><span class="corners-top"><span></span></span>

       <div class="content">
          <p>
             Тра та та
          </p>
       </div>

       <span class="corners-bottom"><span></span></span></div>
    </div>

    <!-- INCLUDE jumpbox.html -->
    <!-- INCLUDE overall_footer.html -->
и functions.php

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

$cond=request_var("page", "");
switch($cond)
{
case "polezno":
    $template->assign_vars(array(
        'CUSTOM_META_KEYWORDS'    => $user->lang['KEYWORDS_ABOUTUS'],
        'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_ABOUTUS'],
		'CUSTOM_META_TITLE'    => $user->lang['TITLE_ABOUTUS'],
    ));
    break;

case "page2":
    $template->assign_vars(array(
        'CUSTOM_META_KEYWORDS'    => $user->lang['KEYWORDS_PAGE2'],
        'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_PAGE2'],
    ));
    break;
}
В overall_header это выглядит так:

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

<!-- IF CUSTOM_META_KEYWORDS --><meta name="keywords" content="{CUSTOM_META_KEYWORDS}" /><!-- ENDIF -->
<!-- IF CUSTOM_META_DESCRIPTION --><meta name="description" content="{CUSTOM_META_DESCRIPTION}" /><!-- ENDIF --><!-- IF CUSTOM_META_TITLE --><title>{CUSTOM_META_TITLE}</title><!-- ENDIF -->
В итоге - фиг, ничего, даже строки meta description, meta keywords и title даже неотображаются в исходном коде при просмотре страницы, либо я вообще не могу читать код.

В моем понимании, скрипт в functions проверяет название страницы, если оно соответствует одному из перечисленных, тогда он применяет те переменные, которые в теле условия и указаны.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Мета-теги на статичной странице

Сообщение Татьяна5 »

Eridani писал(а):проверяет название страницы
Да, часть из адреса после page= (а в адресе этой части нет)
Eridani писал(а):и functions.php
Там правки не нужны

page.php

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

<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');

$cond = request_var('page', '');
switch($cond)
{
	case 'polezno':
	case 'page2':
	case 'page3':
		$template->assign_vars(array(
			'CUSTOM_META_KEYWORDS'   	 => $user->lang['KEYWORDS_' . strtoupper($cond)],
			'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_' . strtoupper($cond)],
			'PAGE_TITLE'   		 		 => $user->lang['TITLE_' . strtoupper($cond)],
		));
		
		page_header($user->lang['TITLE_' . strtoupper($cond)]);

		$template->set_filenames(array(
			'body' => $cond . '_body.html',
		));
		
		make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
		page_footer();
	break;
	
	default:
		trigger_error('404 page');
	break;
}
?>
overall_header.html
(Новые строки в файл не добавлять)
Найти

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

<meta name="keywords" content="" />
<meta name="description" content="" />
Заменить на

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

<meta name="keywords" content="<!-- IF CUSTOM_META_KEYWORDS -->{CUSTOM_META_KEYWORDS}<!-- ENDIF -->" />
<meta name="description" content="<!-- IF CUSTOM_META_DESCRIPTION -->{CUSTOM_META_DESCRIPTION}<!-- ENDIF -->" />
Для title переменная там уже есть

language/ru/viewforum.php

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

    'KEYWORDS_POLEZNO'		=> 'кейвордс',
	'DESCRIPTION_POLEZNO'		=> 'дескрипшн',
	'TITLE_POLEZNO'		=> 'титл',

    'KEYWORDS_PAGE2'		=> 'кейвордс 2',
	'DESCRIPTION_PAGE2'		=> 'дескрипшн 2',
	'TITLE_PAGE2'		=> 'титл 2',

    'KEYWORDS_PAGE3'		=> 'кейвордс 3',
	'DESCRIPTION_PAGE3'		=> 'дескрипшн 3',
	'TITLE_PAGE3'		=> 'титл 3',
Названия шаблонов страниц

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

polezno_body.html
page2_body.html
page3_body.html
Адреса страниц

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

http://форум/page.php?page=polezno
http://форум/page.php?page=page2
http://форум/page.php?page=page3
Для добавления новой страницы прописать ещё один case в page.php, задать языковые переменные и создать шаблон
Аватара пользователя
Eridani
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет
Благодарил (а): 17 раз

Re: Мета-теги на статичной странице

Сообщение Eridani »

Татьяна5, Спасибо. Все получилось.
Но тут вопросик:
Дело в том, что я переменную для титла и дескрипшена в Overall header не использовал, только текст который там прописан.

Можно ли, что бы на всех страницах кроме тех, которые мне нужны, был один титл, дескрипшн и кейвордс?
Своего рода конструкция (прошу прощения, если накосячил, не силен)

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

<?php
 
  
 
  if ($cond == 'polezno') {
    $template->assign_vars(array(
			'CUSTOM_META_KEYWORDS'   	 => $user->lang['KEYWORDS_' . strtoupper($cond)],
			'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_' . strtoupper($cond)],
			'PAGE_TITLE'   		 		 => $user->lang['TITLE_' . strtoupper($cond)],
		));
		
		page_header($user->lang['TITLE_' . strtoupper($cond)]);

		$template->set_filenames(array(
			'body' => $cond . 'polezno_body.html',
		));
  }
  elseif ($username == 'page2') {
    $template->assign_vars(array(
			'CUSTOM_META_KEYWORDS'   	 => $user->lang['KEYWORDS_' . strtoupper($cond)],
			'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_' . strtoupper($cond)],
			'PAGE_TITLE'   		 		 => $user->lang['TITLE_' . strtoupper($cond)],
		));
		
		page_header($user->lang['TITLE_' . strtoupper($cond)]);

		$template->set_filenames(array(
			'body' => $cond . 'page2_body.html',
		));
  }
  
  else {
    $template->assign_vars(array(
			'CUSTOM_META_KEYWORDS'   	 => $user->lang['KEYWORDS_' . strtoupper($cond)],
			'CUSTOM_META_DESCRIPTION'    => $user->lang['DESCRIPTION_' . strtoupper($cond)],
			'PAGE_TITLE'   		 		 => $user->lang['TITLE_' . strtoupper($cond)],
		));
		
		page_header($user->lang['TITLE_' . strtoupper($cond)]);


  }
 
?>
Грубо говоря, если страница $такая то, то к ней применить переменную мета тегов, если страница2, то к ней свои, а если ни одна из них (в противном случае), то применить описание \ мета теги, которые будут распространяться на весь остальной форум
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Мета-теги на статичной странице

Сообщение Татьяна5 »

Eridani писал(а):на весь остальной форум
Если внести правки в page.php - то изменения будут распространяться только доп.страницы (которые открываются через page.php)

Можно проще, без правок в php
overall_header.html

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

<meta name="keywords" content="<!-- IF CUSTOM_META_KEYWORDS -->{CUSTOM_META_KEYWORDS}<!-- ELSE -->{L_KEYWORDS}<!-- ENDIF -->" />
<meta name="description" content="<!-- IF CUSTOM_META_DESCRIPTION -->{CUSTOM_META_DESCRIPTION}<!-- ELSE -->{L_DESCRIPTION}<!-- ENDIF -->" />
DESCRIPTION и KEYWORDS задать в ru/common.php
Аватара пользователя
Eridani
phpBB 1.4.2
Сообщения: 56
Стаж: 13 лет
Благодарил (а): 17 раз

Re: Мета-теги на статичной странице

Сообщение Eridani »

Татьяна5 писал(а):
Eridani писал(а):на весь остальной форум
Можно проще, без правок в php
Спасибо, всё сработало.
Только вот с title не очень получилось.

Keywords и Description применяются к этим страницам в page свои, на всех других оно одинаковое, дефолтное, чего я и добивался, и title применяется к этим страницам свой, но во всех других он выдает их реальные названия типа "портал", "просмотр форума" "главная страница" вместо заготовленного. Пытался сделать так, но ничего не вышло

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

<!-- IF PAGE_TITLE -->{PAGE_TITLE}<!-- ELSE -->{L_TITLE}<!-- ENDIF -->
Если я правильно понимаю, то : Если какая то страница page, то применяется page_title, в противном случае (если это не она) применяется титл, который я тоже указал в common, и по идее, должен работать везде кроме этих страниц.
Я, наверное, чокнусь с этим, но интерес, как это делается, превыше :lol:
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Мета-теги на статичной странице

Сообщение Татьяна5 »

Eridani писал(а):

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

<!-- IF PAGE_TITLE -->{PAGE_TITLE}<!-- ELSE -->{L_TITLE}<!-- ENDIF -->
Перевожу на русский:

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

<!-- ЕСЛИ переменная PAGE_TITLE задана и не равна нулю --> выводим переменную PAGE_TITLE <!-- ИНАЧЕ --> выводим языковую переменную TITLE <!-- КОНЕЦ УСЛОВИЯ -->
Переменная PAGE_TITLE задаётся через функцию page_header()

К примеру, в index.php

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

page_header($user->lang['INDEX']);
в language/ru/common.php

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

'INDEX'						=> 'Главная страница',
При переходе на index.php в заголовке будет выведено "Главная страница"

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