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


Редактирование блока-файла в админке

редактирование блока админка

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

#1 VerstkaShopcms

    Пользователь

  • Download User
  • PipPip
  • 20 сообщений
Репутация: 4
Начинающий

Отправлено 15 April 2015 - 04:43 PM

Данная доработка возникла как необходимость менять содержимое блоков-файлов из админки. Порой бывает удобно вложить блок в какую то страницу. И тогда возникает необходимость редактирования его из админки(заказчик хочет к примеру менять текст, картинки). Это необходимо иногда потому что .. сами придумаете где применить. Надеюсь кому-то будет нужно и полезно. Если файл вложен в шаблон какой-то страницы то в настройках блока можно не заполнять где блок выводить и выбрать что блок выключен. Меняется 2 файла

core/tpl/admin/conf_blocks_edit.tpl.html Прикрепленный файл  conf_blocks_edit.tpl.html   34.44К   3 Количество загрузок:
core/includes/admin/sub/conf_blocks_edit.php Прикрепленный файл  conf_blocks_edit.php   8.09К   4 Количество загрузок:


В случае когда файл не записывается, о чём будут ошибки выводится с разделе статистика ошибок - нужно на файлы дать больше прав. То есть попробовать дать права файлам в папке blocks вашего шаблона сначала права 755, если не поможет то 777 точно сработает. Кто подскажет как сделать так чтобы права выставлялись автоматически при открытия файла на чтение-запись - буду безмерно благодарен. Почему делал данную - доработку? Потому что в стандартном варианте редактирования блока(если он сделан просто как текст-хтмл) вырезаются смарти-теги. Возможно кто-то подскажет как это исправить?

Прикрепленные файлы

  • Прикрепленный файл  edit_blocks.jpg   107.99К   30 Количество загрузок:

  • 0

#2 badisoft

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

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

Отправлено 15 April 2015 - 05:19 PM

Данная доработка возникла как необходимость менять содержимое блоков-файлов из админки. Порой бывает удобно вложить блок в какую то страницу. И тогда возникает необходимость редактирования его из админки(заказчик хочет к примеру менять текст, картинки). Это необходимо иногда потому что .. сами придумаете где применить.

Лично я просто не понял, что же делает это дополнение :).
1. видимо, можно редактировать шаблон блока, если он (блок) в виде файла.
2. видимо, как-то можно вложить блок как часть контента доп.страницы. Внутрь страницы, т.к. снаружи контента (лево-право-верх-низ) блок и так размещается штатным способом.
Но это какие-то мои смутные предположения.

нужно на файлы дать больше прав. То есть попробовать дать права файлам в папке blocks вашего шаблона сначала права 755, если не поможет то 777 точно сработает

Нужно по голове бить тех, кто дает такие советы. Приговаривая "вот из-за таких пентагоны и взламывают!" :).
Нечетные цифры для файловых прав это вообще разрешение на выполнение файла. Нахрена шаблону блока разрешение на исполнение, причем не только для владельца файла, для группы, а даже для любого пользователя?
Права на файл должны быть 644, а лучше 640 - зачем "кому угодно" даже читать ваши файлы? Нечетные цифры (то самое 755) это обычно права на каталоги (7 для владельца - можно писать, 5 для группы - только читать, 5 для остальных) и нечетность означает совсем другое (поиск в каталоге). Если прав на файлы не хватает для редактирования, то надо разбираться почему не хватает, а не делать файл доступным (и даже исполнимым) для всех вокруг.

Кто подскажет как сделать так чтобы права выставлялись автоматически при открытия файла на чтение-запись - буду безмерно благодарен.

Никак. Иначе какой смысл в правах на файлы, если, скажем 400 (только чтение, только для владельца) будет автоматически меняться на 777 при открытии файла на чтение-запись :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 VerstkaShopcms

    Пользователь

  • Download User
  • PipPip
  • 20 сообщений
Репутация: 4
Начинающий

Отправлено 15 April 2015 - 08:12 PM

Спасибо за критику. Данное дополнение было как раз сделано для того чтобы редактировать блок который является файлом и лежит в папке шаблон/blocks.
Порой приходится делать часть вёрстки шаблона блоком, к примеру шапку в которой заказчик хочет менять картинку логотипа не утруждая себя заходить через фтп и подливать картинку, или футер. Или что прийдется. К примеру в шаблоне feedback.tpl.html нужно вставить какие-то данные и по каким-то причинах стандартным решением через блоки сделать это не просто. В этом случае в сам шаблон(feedback.tpl.html) вставляем {include file="block/test.tpl.html"}, где test.tpl.html нужный нам блок с к примеру адресом и телефонами. И добавив его в управлении блоками как блок из файла - получаем доступ к быстрой и лёгкой правки информации содержащейся в блоке через вивисигн редактор.

По поводу бить по голове за изменение прав к файлам - отвечу. Согласен что с этим нужно разбираться. Но на некоторых хостингах почему-то скрипт выполняется не от рута(админа не знаю как точно это назвать) и соответственно прав 644 не достаточно для перезаписи файла. И иногда хостинг никак не хочет давать такие возможности. Безусловно можно найти другого хостера и еще много чего применить к данной ситуации. Я по поводу прав написал потому что сталкивался с такой проблемой и если кто-то с форума захочет попробовать это дополнение и столкнётся с этой ситуацией по поводу прав - то я уже описал эту проблему. Возможно моих знаний не достаточно но я не вижу ничего криминального в том что у файлов в папке {шаблон}/blocks будут права хоть 777. Я не призываю всем файлам скрипта выдать права 777 :)

Еще раз благодарю за критику. И еще хочу добавить я эту доработку выложил не как коммерческое предложение а как рабочее решение. Использовать или нет каждый решает сам. Мне в 2-х проектах пригодилось.
  • 0

#4 badisoft

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

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

Отправлено 16 April 2015 - 12:29 AM

В этом случае в сам шаблон(feedback.tpl.html) вставляем {include file="block/test.tpl.html"}, где test.tpl.html нужный нам блок с к примеру адресом и телефонами.

Что мешает сделать то же самое, но не на уровне вставки блока, добавляя (как я понял) редактор блокового файла в админку блоков, а на уровне вставки статической страницы из менеджера страниц, где этот редактор уже есть? Код для вставки на ту же строчку-две, только ничего не надо менять в админке блоков.

на некоторых хостингах почему-то скрипт выполняется не от рута(админа не знаю как точно это назвать) и соответственно прав 644 не достаточно для перезаписи файла. И иногда хостинг никак не хочет давать такие возможности.

Думаю, Вы просто не разобрались с системой прав на файлы/каталоги. Прочитайте где-нибудь (миллион ссылок) про это. Оно просто.
Три набора по три бита (7=4+2+1). Чтение-запись-выполнение. Для владельца-группы-остальных. Это для файлов. Для каталогов - чтение-запись-поиск, т.е. вместо выполнения, что для каталога бессмысленно, младший бит разрешает поиск (чтение названий файлов) в этом каталоге.

А от рута (эквивалент виндового админа) врядли что-либо клиентское выполняется на хостингах, сильно чревато :).

PS. Посмотрите, какие права выставлены на каталог /config/ и на файлы в нем. Эти файлы при инсталляции перезаписываются. Вот этих прав должно быть за глаза. Их и надо выставить для каталога /blocks/ и файлов в нем. Но вообще это УЖЕ дырка в безопасности - права на чтение-запись для шаблонов, т.е. для Smarty-файлов, куда можно вписать код {php}..{/php} и, соответственно, выполнить что угодно на Вашем сайте при наличии админского доступа. Одна подобная дырка в ShopСMS и так есть, Вы делаете вторую :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 VerstkaShopcms

    Пользователь

  • Download User
  • PipPip
  • 20 сообщений
Репутация: 4
Начинающий

Отправлено 16 April 2015 - 11:16 AM

Что мешает сделать то же самое, но не на уровне вставки блока, добавляя (как я понял) редактор блокового файла в админку блоков, а на уровне вставки статической страницы из менеджера страниц, где этот редактор уже есть? Код для вставки на ту же строчку-две, только ничего не надо менять в админке блоков.


Не совсем понял как можно вставить через статическую страницу информацию для страницы Обратная связь(feedback.html) к примеру? Второй момент использование блока-файла вставленного в любой шаблон даёт возможность использовать возможности смарти(прописать условия вывода информации как пример). Чего не сделаешь ни через доп страницу ни через обычный блок.

Приведу пример на основе вашего блока геотаргетинга, который имеет место быть.

Допустим на странице контакты должен выводится блок с информацией которая:
1. Должно быть 2-3 варианта в зависимости от города определённого геотаргетингом.
2. Эту информацию нужно редактировать из админки удобным способом. Как пример телефон и адрес для 1-го города, 2-го города, и для всех остальных.

Возможно как-то можно сделать фильтрацию {php}{/php} при редактировании файла-блока?

PS.: Имея админский доступ в магазин можно много чего плохого сделать и так. Согласен что чем меньше дыр тем лучше.
  • 0

#6 badisoft

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

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

Отправлено 16 April 2015 - 07:40 PM

Второй момент использование блока-файла вставленного в любой шаблон даёт возможность использовать возможности смарти(прописать условия вывода информации как пример). Чего не сделаешь ни через доп страницу ни через обычный блок.

Это да. Почему-то smarty оперирует именно (и только) с файлами. Т.е. функции fetch() можно передать в качестве параметра имя файла с шаблоном, но не текстовую строку с текстом шаблона. Думаю, это легко решить, если копнуть smarty поглубже. Или поискать в Гугле, наверняка ведь кто-то уже решал эту очевидно спросовую фишку. И тогда можно будет в блоке, который "не из файла" тоже писать на smarty, а не только на голом html, как сейчас. Я бы именно так решал эту задачу.

Возможно как-то можно сделать фильтрацию {php}{/php} при редактировании файла-блока?

Зачем? Ведь все равно шаблон (файл блока), написанный на smarty не будет показан в fckeditor в полноценном виде.
Но если так уж хочется, то, скорее всего, обрамление <!--{php}.....{/php}--> уберет лишний код при просмотре результата в редакторе и никак не повлияет на smarty-обработку.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 VerstkaShopcms

    Пользователь

  • Download User
  • PipPip
  • 20 сообщений
Репутация: 4
Начинающий

Отправлено 17 April 2015 - 12:40 PM

Но если так уж хочется, то, скорее всего, обрамление <!--{php}.....{/php}--> уберет лишний код при просмотре результата в редакторе и никак не повлияет на smarty-обработку.


Я немного другое имел ввиду - а именно написать функцию которая бы при сохранении вырезала теги {php}{/php} и всё что прописано внутри. чтобы сделать более безопаснее данную доработку. Хотя в общем никто не запрещал использовать пхп функции в смарти через @. То есть можно просто прописать в смарти {массив|@count} и получить количество элементов массива. Думаю с другими функциями пхп можно делать тоже самое. Так что хоть так хоть этак - дать возможность прописывать код в шаблонах - дать возможность злым рукам сделать какую-то бяку.
В общем можно долго дискутировать на эту тему. И сколько людей - столько и мнений. Каждый выбирает для себя сам путь решения.

Повторюсь данную доработку делал по причине того что нужно было решить задачу - дать заказчику возможность менять текст и картинки в файлах блоках из админки. Порой при вёрстке шаблона удобно части вёрстки сделать блоками и инклюдить их в index.tpl.html Код становится более читаемым и становится проще с ним работать, работая с отдельными файлами-блоками.

Безусловно можно разобраться как записывать смарти-теги в обычные блоки. Также можно скорее всего написать функцию фильтрации опасных функций и выражений в тексте дабы усилить безопасность и никто не смог бы записать зловредный код в коде(тексте) блока. Кстати тоже идея. Нужно только определится с набором для фильтрования.
  • 0