Вывести блок в материал

11 июля 2016 в 10:44
Аватар пользователя morgusha morgusha 0 39

Может кто знает ! Как то можно например в середины материала вставить блок сделанный в меню-блоки ?
То-бишь не через код в шаблоне, а именно в нужном месте через админку ?
Или как инклудить файлы через админку ?

Комментарии

скачал, установил block insert не могу понять в материал вставляю
[block:module=delta]
вставляю свой блок
[block:block=18]

в итоге просто этот же код и отображается ?

11 июля 2016 в 11:00

После включения модуля, не забудьте включить его фильтр в нужном формате ввода.

где это делается вообще не понимаю !

11 июля 2016 в 11:06

morgusha wrote:

Или как инклудить файлы через админку ?

<?php
  
/* мясо */
  
$block module_invoke('module_name''block_view''block_delta');
  print 
render($block['content']);

  

/* что для кастомных блоков звучит как */
  
$block module_invoke('block''block_view'30);
  print 
render($block['content']);

  

/* не благодарите */
?>
11 июля 2016 в 11:10

Пардон, ну и что? Теперь PHP-фильтр - вообще табу?
Понятно, что в зависимости от пользователя можно как навредить, так и принести пользу.
Ну так есть управление разрешёнными фильтрами на уровне ролей.

11 июля 2016 в 11:27

Ну в восьмерке его вообще теперь нет. Да и в семерке по большому счету в 100% случаев можно обойтись без него. Предположим, вы сделали сайт, админ откуда-то скопировал и вставил код с ошибками, на фронте белый экран - он все равно придет к вам как к разработчику, и вы будете тратить свое время на решение его проблемы, при этом скорее всего бесплатно. Оно вам нужно?

11 июля 2016 в 11:31

Ну так можно за уши притянуть любой довод.
Админ может ещё поставить кривой/самописный модуль или что-то попытаться изменить в темплейтах - так, из желания "разобраться". Если человек не осознаёт потенциальные проблемы вмешательства, то тут ничего не поможет.

11 июля 2016 в 11:36

вау СПАСИБО. Вывел блок !
Но всё равно вопросы остались в блоке такой вот код:

                echo '<div id="position" style="width: 50%;padding:20px; margin-top: 54px; position: relative;">';
                echo '<div id="upp" style="width:23px; height:28px;float: right;"></div>';
                echo '<h3 class="medium upper" style="padding: 0 0 10px 0;">Позиции продвигаемых фраз:</h3>';
                include ("connect.php");
                include("class_for_top_positions.php");
                $obj_top=new Top5;
                $top=$obj_top->show();
                  foreach ($top['top_keyword'] as $key => $keyword)
      {
                  echo "<li>" ."<span class='.tttop'>" . $keyword . "</span>" . " - " ."<span class='.kkey'>" . $top['top_position'][$key] . "</span>" . "</li>";
      }
         
                  echo '</div>';
          }
          ?>

так вот вылазит такая вот ошибка вместо вывода блока :

Parse error: syntax error, unexpected '}' in /var/www/vhosts/..../httpdocs/modules/php/php.module(80) : eval()'d code on line 15

11 июля 2016 в 11:16

Ну всё же написано:

Parse error: syntax error, unexpected '}' in /var/www/vhosts/..../httpdocs/modules/php/php.module(80) : eval()'d code on line 15

Лишняя закрывающая скобка, видимо.

11 июля 2016 в 11:29

Самое интересное - предупреждают же: "Enabling this module can cause security and performance issues as it allows users to execute PHP code on your site. There are better alternatives out there that do not expose such vulnerabilities on your site", но народу это нипочем:)

11 июля 2016 в 12:26

а в чём проблема то не могу понять ?
в том что сам пользователь вставит вредоносный код ?
или что это расширение имеет какие то дыры явные для взлома админки ?

11 июля 2016 в 12:34

Ну если для вас рекомендации самих же разработчиков ядра Друпала не убеждают, то как я могу вас переубедить?

Есть понятие best/bad practices. Использование фильтра php точно не относится к лучшим практикам, только если вы сам не являетесь единоличным владельцем или администратором сайта и отдаете себе отчет в том что делаете.

В вашем случае достаточно было активировать флажок в настройках фильтра для использования block inject. Мое мнение: если вам нужно вставить в контент какой-то блок, то лучше пользоваться таким подходам по аналогии с шорткодами в Wordpress. Это не только безопасно, но и удобно. Кроме того, не забывайте, что если вы используете ПХП в контенте нод или блоков, то такие ноды/блоки у вас не будут кешироваться.

11 июля 2016 в 12:41

Думаю, можно начать с того, что сам блок, который ТС "инклюдит" в тело страницы - сам по себе PHP-блок.
В контексте этого уже как-то не столь важно, как именно его вставлять - шорткодами/токенами или прямым обращением к API.

11 июля 2016 в 12:46

morgusha wrote:
...или что это расширение имеет какие то дыры явные для взлома админки ?

Да нет никаких дыр. Просто считается моветоном, плохим стилем, дурным тоном, плохим показателем IQ, "быдлокодерством", признаком гомосексуальной латентности, порочной страстью и т.д. и т.п.

11 июля 2016 в 12:51

Именно - быдлокодерство, моветон и латентное мужеложество. Можно заткнуть все дыры в безопасности, но тормозить будет дичайше. Во-первых, блок, грузимый блоком из блока хз как кэшировать - тут сама загрузка блока выпадает из нужного программного слоя и он рендерится уже абы где. Во-вторых, на этапе рендеринга контента друпал встречает ваш ссаный пхп и пошло-поехало - дуб орех или мочало, начинаем всё сначала. А потом ещё объясняй контент-менеджеру, почему ему нельзя включать визуальный редактор для такого-то блока. Хотя это ещё мелочи по сравнению с тем, как некоторые любят через пхп-фильтр понаписывать прямых запросов к базе.

11 июля 2016 в 14:59

gun_dose wrote:
...Во-первых, блок, грузимый блоком из блока хз как кэшировать - тут сама загрузка блока выпадает из нужного программного слоя и он рендерится уже абы где. ...

Имеет ли это значение, если речь чаще всего идёт о костылях, когда нужно что-то влепить, чтоб "оно крутилось"? Это примерно как сравнивать профессиональный тюнинг тачки с кляксой-наклейкой на багажнике, призванной скрыть царапину.

gun_dose wrote:
...Во-вторых, на этапе рендеринга контента друпал встречает ваш ссаный пхп и пошло-поехало - дуб орех или мочало, начинаем всё сначала ...

Он такой же "наш" как и ваш, вообще-то.
ТС уже замутил блок с php-кодом и имеет его в наличии, у него проблема (цитирую):

То-бишь не через код в шаблоне, а именно в нужном месте через админку ?
Или как инклудить файлы через админку ?

Я бы, понятно, просто написал модуль блока.

gun_dose wrote:
...А потом ещё объясняй контент-менеджеру, почему ему нельзя включать визуальный редактор для такого-то блока. Хотя это ещё мелочи по сравнению с тем, как некоторые любят через пхп-фильтр понаписывать прямых запросов к базе....

Можно вообще сделать много чего неправильно, всё определяется конкретной ситуацией. Запросы из php-блока, конечно, зло.

11 июля 2016 в 15:31

OldWarrior wrote:

Просто считается моветоном, плохим стилем

Когда-то давно кто-то выкладывал эксплоит, как получить админ-досуп к сайту с включенным php-фильтром имея права на вставку js

Суть: внедряем js который, при входе админа подгружает скрытый ifarme со страницей (в сессии админа), на которой имеется textarea с php-фильтром.
Вставляем в textarea php-код. и сабмитим.
Рисуем на фюзеляже звездочку.

11 июля 2016 в 13:04

Orion76 wrote:

внедряем js

Каким образом? Админ "случайно" забыл настроить фильтр HTML?

PS. Ребята, я не горю желанием отстаивать применение PHP-фильтра. Я вообще-то тоже считаю это дурным вкусом, но не более - просто костыль.
И паранойи вокруг вопроса не понимаю. Тем более, что видел, как на нагруженных продакшенах (не моих, чужих) PHP-фильтр включен годами и ничего страшного не происходит.

11 июля 2016 в 13:15

OldWarrior wrote:

Админ "случайно" забыл настроить фильтр HTML?

Всякое случается..
Может случайно, может специально верстальщику понадобился js и т.д. и т.п.

11 июля 2016 в 13:17

Orion76 wrote:

Всякое случается..

Может случайно, может специально верстальщику понадобился js и т.д. и т.п.

Ну хорошо, давайте разбираться.

1. Случайно вообще-то не канает, по умолчанию HTML-фильтр отрезает js. И вы это знаете. Нужно, чтобы админ сам добавил script в список разрешённых тегов.

2. Разрешить верстальщику использовать js через textarea (блоки, ноды и т.д.) - на мой взгляд какое-то особое извращение. И даже если это архи-нужно, то для одной единственной ноды можно переключить фильтр. Но вряд ли это будет делаться для роли обычного пользователя - верстальщику обычно даются привилегии чуть выше.

11 июля 2016 в 13:32

OldWarrior wrote:

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

Все верно, но такое же, на мой взгляд, извращение давать программисту возможность вставлять пхп в админке:) Для этого есть АПИ - пиши себе нужный модуль и создавай в нем кастомный пхп-шный блок.

11 июля 2016 в 13:36

Ну так суть-то в чём? В том, что случайные люди просто в принципе не должны иметь доступ к php/js. А как админу городить костыли - это уже пусть сам решает.

11 июля 2016 в 13:48

по всем правилам хорошего тона делать сайт на порядок дольше. Учитывая, что на работе в 90 процентах случаев не дают времени на какие то верные пути. Абы работало и пойдёт...другие задачи тоже не ждут ведь ! (

11 июля 2016 в 13:50

Эх... вот вы сейчас почти всё испортили. )
Я тут распинаюсь, что если человек сам себе режиссёр и "в теме", то только ему решать применять ли фильтр на своём сайте или нет. Но если сайт заведомо для кого-то, то однозначно не одобряю.

11 июля 2016 в 13:55

Нет, сайтом управляю исключительно Я. Никто другой в админке не лазит. Собственно я тоже ничего такого кроме "плохого тона" не вижу в использовании php фильтра в материалах

11 июля 2016 в 13:58

OldWarrior wrote:

Я тут распинаюсь, что если человек сам себе режиссёр и "в теме",

Вот и я про тоже, что слишком много "если".-)
Да я , в общем, не спорю и не осуждаю, а всего лишь , так сказать, довожу до сведения.

А решение принимать, эт дело личное-)

11 июля 2016 в 14:27

OldWarrior wrote:

Имеет ли это значение, если речь чаще всего идёт о костылях

Давайте ещё мануал напишем, как правильно к друпалу костыли прикручивать))))))))))))))))))) И вместо джуниоров-мидлов-сеньоров будем делить на трость-девелопер, костыль-девелопер и инвалидная-коляска-девелопер. А самые гуру будут гордо зваться "Ока-с-педалями-на-руле-девелопер".

11 июля 2016 в 15:53