Перейти к содержимому


Вывод текстовых блоков в любом месте


  • Вы не можете ответить в тему
Сообщений в теме: 4

#1 zcz

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 104 сообщений
Репутация: 62
Продвинутый

Отправлено 12 November 2014 - 10:19 AM

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

Делюсь:

В core/includes/home.php в самом низу перед закрывающим тегом ?>
вставляем следующий код:

$content = array();
$q = db_query("SELECT bid, content FROM ".BLOCKS_TABLE."");
while ($row = db_fetch_row($q)) {
    $content[$row['bid']]=$row['content'];
}
$smarty->assign("blockC", $content)

Сохраняем. И, да, теперь все готово))

Теперь вы можете выводить текстовые блоки в любой части сайта вставив код {$blockC[номер_блока]} , где "номер_блока" - это ID блока для вывода.
Выводит только текст заданного блока.
Узнать ID блока можно при его редактировании, посмотрев на строку адреса (вид admin.php?dpt=conf&sub=blocks_edit&edit=ТУТ_ID_БЛОКА)

надеюсь, кому-нибудь пригодиться.
  • 0
Пишу, устанавливаю, натягиваю))) pix-art.ru

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 November 2014 - 11:08 AM

Логично бы добавить WHERE html=0, чтобы в выборку попадали только текстовые блоки.

PS. А вообще в blocks.php уже есть аналогичный запрос и цикл, осталось в цикл добавить создание массива $content и $smarty->assign
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 zcz

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 104 сообщений
Репутация: 62
Продвинутый

Отправлено 12 November 2014 - 11:12 AM

ну или content !="" )) смысл понятен - далее уже кто как хочет действует.
Можно сия фигню прописать и для файловых блоков...
делать проверку на пустоту контента, выводить инклуд.
  • 0
Пишу, устанавливаю, натягиваю))) pix-art.ru

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 November 2014 - 12:50 PM

Я из спортивного интереса сделал немного по другому:

1. в blocks_functions.php вставляем функцию

function GetBlockByID($blockID)
{
$row = db_fetch_assoc(db_query("SELECT content FROM ".BLOCKS_TABLE." WHERE bid=$blockID"));
return $row['content'];
}

2. в желаемое место вывода блока вставляем

{84|GetBlockByID}

Где 84 это ID блока.
Т.е. полный массив всех имеющихся блоков не строим, зачем занимать память, а получаем нужный блок по необходимости.
  • 1
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 zcz

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 104 сообщений
Репутация: 62
Продвинутый

Отправлено 12 November 2014 - 01:33 PM

так даже еще лучше. Спасибо)
  • 0
Пишу, устанавливаю, натягиваю))) pix-art.ru