Вывод блока в зависимости от страницы

Автор Roman, 27 декабря 2010, 20:01:39

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Roman

Исходное: есть статический html блок, который подгружается в index.template.php через функцию readfile();
Версия движка 1.1.12

Вопрос: Как можно прописать условие, чтобы этот блок выводился не на всех страницах и разделах форума? А именно, хотелось бы не показывать его для всех страниц с index.php?action=хх.
А также, как прописать условие, чтобы блок отображался только на главной?
Ну или хотя бы подскажите, в каком направлении искать.


p.s. разнообразные порталы и мод AdManagement просьба не не предлагать:)
Цель как раз в том, чтобы реализовать это без лишних запросов к БД и без кучи ненужного функционала.
И раз эти функции есть в порталах, то значит, наверняка можно как-то прописать вручную.

Drakonsa


Roman

Drakonsa, спасибо, работает!

А каким образом можно определить условия для главной страницы?

Roman

#3
Обнаружил также переменную, с помощью которой можно конкретизировать определение местонахождения на форуме для действий "?action". Может, кому-то пригодится:
$context['current_action']

Например:
if ($context['current_action'] == 'profile')

Если нужно сразу несколько местонахождений, то:
if (in_array($context['current_action'], array('pm''profile')))


А вот как определить главную страницу, пока не нашел.

MiTyaj

Если правильно понял вопрос то главная страница это файл BoardIndex.template.php
Цитата: Romanкак-то прописать вручную
можно прямо в него. Ну а если очень хочется узнать где мы находимся используя файл index.template.php то можно сделать так..

Функция function template_main_above()
чуть ниже записи global $context, $settings, что то ещё, и ещё, и возможно даже ещё что то, $txt; вставляем..
global $board, $topic;

Потом в этом же шаблоне в нужное нам место вставляем..
if (empty($_REQUEST['action']))
{
if (empty($board) && empty($topic))
{
echo "Здесь главная страница";
}
elseif (!empty($board) && empty($topic))
{
echo "Здесь мы вошли в раздел";
}
elseif (!empty($topic))
{
echo "А здесь мы просматриваем тему раздела";
}
}


Вроде должно работать.
Митяй..

Roman

Действительно, есть же BoardIndex.template! Совсем про него забыл и начал рыть более сложные решения)
Спасибо, что напомнили!) Через него и реализовал, поскольку блок нужен был как раз над главной таблицей.

Второй способ не пробовал, но если потребуется выводить что-то на главной в другом месте, обязательно протестирую.

Stern

Цитата: Roman от 29 декабря 2010, 01:31:22
Обнаружил также переменную, с помощью которой можно конкретизировать определение местонахождения на форуме для действий "?action". Может, кому-то пригодится:
$context['current_action']

Например:
if ($context['current_action'] == 'profile')

Если нужно сразу несколько местонахождений, то:
if (in_array($context['current_action'], array('pm''profile')))


А вот как определить главную страницу, пока не нашел.
$current_action=='home'
но для чего эти поиски, если не секрет, Roman?
МышЫ плакали, кололись, но продолжали жрать кактус...

Roman

Stern, спасибо!

>но для чего эти поиски
Для вывода блоков по аналогии, как это сделано к примеру, в Tinyportal, но без использования самого портала.
Блоков не много, поэтому использовать такую громоздкую надстройку как портал, создающую кучу запросов к БД и имеющую массу лишнего кода, в моем случае не имеет смысла.

BIOHAZARD

просто воткните эти блоки  BoardIndex.template.php
а home отвечает не только главной странице, но и половине форума
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Stern

Цитата: Roman от 04 февраля 2011, 10:47:51
Stern, спасибо!

>но для чего эти поиски
Для вывода блоков по аналогии, как это сделано к примеру, в Tinyportal, но без использования самого портала.
Блоков не много, поэтому использовать такую громоздкую надстройку как портал, создающую кучу запросов к БД и имеющую массу лишнего кода, в моем случае не имеет смысла.
А чем плох Симплепортал?

на самом деле - вопрос интересный:
какую нагрузку, какую кучу запросов создаёт портал (СП, ТП, ПортаМх)?
кто-нибудь сравнивал?
в цифрах, если можно!
МышЫ плакали, кололись, но продолжали жрать кактус...

Roman

Цитата: Stern от 22 апреля 2011, 15:37:18
А чем плох Симплепортал?
Да ничем он, возможно, не плох. Не пробовал. Да и Тинипортал, вобщем, совсем не плох. Но я понял, что именно для моих скромных задач в виде нескольких блоков, использовать портал просто нецелесообразно.


Цитата: Stern от 22 апреля 2011, 15:37:18
на самом деле - вопрос интересный:
какую нагрузку, какую кучу запросов создаёт портал (СП, ТП, ПортаМх)?
кто-нибудь сравнивал?
в цифрах, если можно!
Могу сказать только по TinyPortal.
Сами понимаете, что как-то измерить нагрузку на сервере виртуального хостинга — задача довольно нетривиальная. Но могу сказать просто по ощущениям от скорости загрузки страниц. На одном и том же хостинге, на одном и том же сервере работали два сайта на SMF, один с Тинипорталом, другой без.
Так вот, тот, который с Тинипорталом, всегда открывался и работал заметно задумчивее другого. Как-то в цифрах выразить сложно, но по ощущениям, раза в полтора-два.

С запросами к БД все проще.
Для главной страницы сайта, без Тинипортала, типичное число запросов к БД: 8-10 штук. При наличии Тинипортала с минимальными настройками (только вывод пары-тройки блоков), число запросов к БД составляло примерно 18-21. Если увеличивать число блоков, подключать различные функции, то число запросов становится еще больше. То есть при наличии ТП, запросов было на 10-11 больше.

Stern

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

Спасибо за ответ, Роман, но отказываться от удобств, предоставляемых порталами, из-за слабого хостинга - ИМХО, лучше хостинг сменить))  /сколько у вас посетителей, кстати?/
МышЫ плакали, кололись, но продолжали жрать кактус...

Roman

Хостингов сменил несколько штук, все были крупные, известные компании) Сейчас более ли менее нормальный. Разница в скорости везде была заметна, где-то больше, где-то меньше.
В моем случае в удобстве вообще не потерял.