Расширения - это просто!

Форум для авторов расширений для phpBB. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 12 лет 11 месяцев
Благодарил (а): 97 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

Re: Расширения - это просто!

Сообщение xisp »

Татьяна5 писал(а):$('#username_logged_in li.icon-logout a')
Прощай пользователи без яваскрипта, прощай производительность на мобильных.
phpBBex
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12752
Стаж: 13 лет 8 месяцев
Благодарил (а): 159 раз
Поблагодарили: 2276 раз

Re: Расширения - это просто!

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

xisp писал(а):Прощай пользователи без яваскрипта
У пользователей без js расширение, написанное полностью на js, не заработает, и вместо него останется стандартный функционал форума (чего не было при изменении кода модами на 3.0). Так что "прощай" это к 3.0 относится, а не к 3.1
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 12 лет 11 месяцев
Благодарил (а): 97 раз
Поблагодарили: 91 раз
Забанен: Бессрочно

Re: Расширения - это просто!

Сообщение xisp »

Татьяна5 писал(а):У пользователей без js расширение, написанное полностью на js, не заработает,
А ежели частично? Вот половину вёрстки добавят через событие, половину- яваскриптом. С выключенным яваскриптом выйдет каша.
phpBBex
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12752
Стаж: 13 лет 8 месяцев
Благодарил (а): 159 раз
Поблагодарили: 2276 раз

Re: Расширения - это просто!

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

xisp писал(а):А ежели частично?
А это уже вопрос к авторам расширений. Код, который должен работать без js, должен и добавляться без него
Аватара пользователя
angst66
phpBB 3.0.0 RC2
Сообщения: 1540
Стаж: 13 лет 3 месяца
Благодарил (а): 49 раз
Поблагодарили: 77 раз

Re: Расширения - это просто!

Сообщение angst66 »

Не знаю, где точнее задать вопрос. Некоторые расширения добавляют свои страницы. И если в 3.0x мы могли внести правку в viewonline.php , чтобы при просмотре "Кто сейчас на конференции" видеть, что кто то просматривает эту самую новую страницу из мода, то на 3.1 мы просто видим "Главная страница". Уважаемые создатели расширений, возможно ли решать эту проблему с помощью расширений? (возможно было бы спросить как то попроще)
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12752
Стаж: 13 лет 8 месяцев
Благодарил (а): 159 раз
Поблагодарили: 2276 раз

Re: Расширения - это просто!

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

angst66, да, есть событие core.viewonline_overwrite_location
Аватара пользователя
Webliberty
phpBB 2.0.5
Сообщения: 473
Стаж: 13 лет 4 месяца
Благодарил (а): 109 раз
Поблагодарили: 47 раз

Re: Расширения - это просто!

Сообщение Webliberty »

Добрый вечер! Помогите пожалуйста разобраться, где ошибка. Делаю расширение, чтобы сделать редирект со страниц &viev=next и &viev=previous.

Для примера, редирект с такой страницы: viewtopic.php?f=1&t=1&view=previous на такую: viewtopic.php?f=1&t=1
Подобные страницы заблокированы в роботсе, но Гугл их все равно обрабатывает и хранит в индексе с сообщением о том что содержимое страницы заблокировано в файле роботс. Почему тогда он их хранит если заблокировано не понятно.

В viewtopic.php есть строки U_VIEW_OLDER_TOPIC и U_VIEW_NEWER_TOPIC (как раз previous - предыдущая тема, next - следующая тема соответственно). Сделал вот такое переопределение по аналогии с каноническими, но на странице в браузере возникает предупреждение о циклической переадресации и страница не открывается.... Сам код:

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

<?php
namespace webliberty\nextprev\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements EventSubscriberInterface
{
	protected $template;
	protected $php_ext;
	public function __construct(\phpbb\template\template $template, $php_ext)
	{
		$this->template = $template;
		$this->php_ext = $php_ext;
	}

	static public function getSubscribedEvents()
	{
		return array(
			'core.viewtopic_get_post_data' => 'get_post_data',
		);
	}

	public function get_post_data($event)
	{
		$forum_id = $event['forum_id'];
		$topic_id = $event['topic_id'];
		$this->template->assign_vars(array(
		'U_VIEW_OLDER_TOPIC'	=> redirect(append_sid("viewtopic.$this->php_ext", "f=$forum_id&t=$topic_id")),
		'U_VIEW_NEWER_TOPIC'	=> redirect(append_sid("viewtopic.$this->php_ext", "f=$forum_id&t=$topic_id")),
		));
	}
}
?>
Начинал с phpBB 3.0.9, закончил на phpBB 3.3.11 и продал форум...
Подпись заверена нотариусом :P
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 11 лет
Благодарил (а): 39 раз
Поблагодарили: 792 раза

Re: Расширения - это просто!

Сообщение LavIgor »

seodirection писал(а):Добрый вечер! Помогите пожалуйста разобраться, где ошибка. Делаю расширение, чтобы сделать редирект со страниц &viev=next и &viev=previous.

Для примера, редирект с такой страницы: viewtopic.php?f=1&t=1&view=previous на такую: viewtopic.php?f=1&t=1

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

<?php
		'U_VIEW_OLDER_TOPIC'	=> redirect(append_sid("viewtopic.$this->php_ext", "f=$forum_id&t=$topic_id")),
		'U_VIEW_NEWER_TOPIC'	=> redirect(append_sid("viewtopic.$this->php_ext", "f=$forum_id&t=$topic_id")),

?>
Это неправильно. Зачем вы редирект добавили?
Уберите редирект, и всё заработает. Но при этом добавьте обёртку с проверкой на то, является ли пользователь ботом, иначе обычные пользователи будут испытывать трудности.

Ужасно неудобно здесь, что у последнего сообщения нет кнопки "Цитата".
Я привык править цитируемые сообщения, а не слать их полностью, отчего убрали кнопку.
Уже несколько раз отослал благодарности вместо цитаты.

Думаю, нужна просто кнопка в личном разделе "Показывать ссылку Цитата в последнем сообщении темы". Те люди, кто делал полное цитирование при ненадобности (по незнанию того, что цитату нужно сокращать), вряд ли станут искать, где вернуть эту кнопку.
Аватара пользователя
Webliberty
phpBB 2.0.5
Сообщения: 473
Стаж: 13 лет 4 месяца
Благодарил (а): 109 раз
Поблагодарили: 47 раз

Re: Расширения - это просто!

Сообщение Webliberty »

LavIgor писал(а):Это неправильно. Зачем вы редирект добавили?
Если убираю редирект, то вообще ничего не происходит, как было так и остается
Начинал с phpBB 3.0.9, закончил на phpBB 3.3.11 и продал форум...
Подпись заверена нотариусом :P
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 11 лет
Благодарил (а): 39 раз
Поблагодарили: 792 раза

Re: Расширения - это просто!

Сообщение LavIgor »

Вам нужен редирект со страниц по ссылкам или чтобы эти ссылки на странице менялись (чтобы роботы по ним попадали на ту же страницу)?
Аватара пользователя
Webliberty
phpBB 2.0.5
Сообщения: 473
Стаж: 13 лет 4 месяца
Благодарил (а): 109 раз
Поблагодарили: 47 раз

Re: Расширения - это просто!

Сообщение Webliberty »

Мне нужен редирект со страницы с параметром view=previous на страницу без этого параметра. Как для пользователей так и для роботов. В ветке 3.1 вообще нет ссылок ведущих на такие страницы (даже в исходном коде страницы), в 3.0.х были вот и нашел их робот. Но сейчас то это зачем.

Можно вообще сделать чтобы при переходе на такие страницы сервер 404 ответ давал, тогда уж 100% страницы выпали бы из индекса, но не знаю как сделать. На phpbb.com спросил как сделать редирект с помощью htaccess - никто не ответил.
Начинал с phpBB 3.0.9, закончил на phpBB 3.3.11 и продал форум...
Подпись заверена нотариусом :P
Аватара пользователя
LavIgor
Former team member
Сообщения: 3468
Стаж: 11 лет
Благодарил (а): 39 раз
Поблагодарили: 792 раза

Re: Расширения - это просто!

Сообщение LavIgor »

seodirection писал(а):Мне нужен редирект со страницы с параметром view=previous на страницу без этого параметра. Как для пользователей так и для роботов. В ветке 3.1 вообще нет ссылок ведущих на такие страницы (даже в исходном коде страницы), в 3.0.х были вот и нашел их робот. Но сейчас то это зачем.
Тогда Вы можете проверить GET-параметр view на соответствие previous или next.
И только при этом соответствии делать редирект на отдельной строке.
Anvar
Former team member
Сообщения: 1965
Стаж: 15 лет 1 месяц
Благодарил (а): 57 раз
Поблагодарили: 622 раза

Re: Расширения - это просто!

Сообщение Anvar »

seodirection,
Сделай редирект с помощью .htaccess и замени свою функцию, что-бы заменить адреса на страницах.

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

	public function get_post_data($event)
	{
		$forum_id = $event['forum_id'];
		$topic_id = $event['topic_id'];
		$this->template->assign_vars(array(
			'U_VIEW_OLDER_TOPIC'	=> append_sid("{$this->phpbb_root_path}viewtopic.$this->php_ext", "f=$forum_id&t=$topic_id"),
			'U_VIEW_NEWER_TOPIC'	=> append_sid("{$this->phpbb_root_path}viewtopic.$this->php_ext", "f=$forum_id&t=$topic_id"),
		));
	}
Аватара пользователя
Webliberty
phpBB 2.0.5
Сообщения: 473
Стаж: 13 лет 4 месяца
Благодарил (а): 109 раз
Поблагодарили: 47 раз

Re: Расширения - это просто!

Сообщение Webliberty »

Anvar, так нужно что-то одно наверно, если редирект в .htaccess сделать, то зачем расширение это, какую функцию выполняет? Попробовал заменить функцию и снова циклическая переадресация. Совсем запутался. Я редирект не знаю как сделать такой, гугл тоже не знает :) Поэтому и начал копать в сторону расширения этого...
Начинал с phpBB 3.0.9, закончил на phpBB 3.3.11 и продал форум...
Подпись заверена нотариусом :P
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16947
Стаж: 18 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 549 раз
Поблагодарили: 1700 раз

Re: Расширения - это просто!

Сообщение rxu »

seodirection, LavIgor дает правильный совет. Переменные шаблона тут в принципе не нужны, нужна проверка параметра и вызов в зависимости от этого redirect. Только не передавайте redirect в шаблон, достаточно просто вызова этой функции.
Изображение

Вернуться в «Для разработчиков»