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

Главные вкладки

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

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

Комментарии

Аватар пользователя morgusha morgusha 11 июля 2016 в 11:00

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

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

Аватар пользователя morgusha morgusha 11 июля 2016 в 11:06

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

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 11:10

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']);

  

/* не благодарите */
?>
Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 11:27

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

Аватар пользователя sergeybelya sergeybelya 11 июля 2016 в 11:31

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 11:36

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

Аватар пользователя morgusha morgusha 11 июля 2016 в 11:16

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

                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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 11:29
1

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

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

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

Аватар пользователя sergeybelya sergeybelya 11 июля 2016 в 12:26

Самое интересное - предупреждают же: "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", но народу это нипочем:)

Аватар пользователя morgusha morgusha 11 июля 2016 в 12:34

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

Аватар пользователя sergeybelya sergeybelya 11 июля 2016 в 12:41

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

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

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 12:46

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 12:51

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

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

Аватар пользователя gun_dose gun_dose 11 июля 2016 в 14:59

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 15:31

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

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

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

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

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

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

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

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

Аватар пользователя Orion76 Orion76 11 июля 2016 в 13:04

OldWarrior wrote:

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

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

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 13:15

Orion76 wrote:

внедряем js

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

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

Аватар пользователя Orion76 Orion76 11 июля 2016 в 13:17

OldWarrior wrote:

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

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 13:32

Orion76 wrote:

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

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

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

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

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

Аватар пользователя sergeybelya sergeybelya 11 июля 2016 в 13:36

OldWarrior wrote:

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

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 13:48

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

Аватар пользователя morgusha morgusha 11 июля 2016 в 13:50

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

Аватар пользователя OldWarrior OldWarrior 11 июля 2016 в 13:55

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

Аватар пользователя morgusha morgusha 11 июля 2016 в 13:58

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

Аватар пользователя Orion76 Orion76 11 июля 2016 в 14:27

OldWarrior wrote:

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

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

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

Аватар пользователя gun_dose gun_dose 11 июля 2016 в 15:53

OldWarrior wrote:

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

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