За последние 24 часа нас посетили 18196 программистов и 1606 роботов. Сейчас ищут 1412 программистов ...

PinPIE

Тема в разделе "Прочее", создана пользователем igordata, 27 мар 2016.

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    еще такая вопрос возник, зачем такой геморрой с конфигами, допустим у меня всего 1 сайт, зачем мне создавать под него конфиг с именем файла равный адресу сайта, может лучше оргинизовать такую же работу как с паге? т.е.
    при заходе на сайт mypinpie.local происходит следующее, первым делом у меня в папке config проверяется наличие файла config/mypinpie.local.php, если его нет, проверяется существует ли папка config/mypinpie.local и если да в ней подцепляется какой то файл, index.php или config.php, а если нет ни файла не папки, тогда типа всего 1 сайт и должен быть файл config/config.php где собственно конфиг, а если и его нет значит конфиг по умолчанию, как то так.
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    и если использовать эту модель с конфигами, то если мы используем папки, типа config/mypinpie.local/config.php то можно было бы еще добавить файл preinclude.php для каждого сайта, помещая его в папку с конфигом сайта, при этом preinclude.php тот что в корневой папке сохраняется и тоже используется, сначала будет подключаться скажем так глобальный - /preinclude.php после него уже для сайта - config/mypinpie.local/preinclude.php как то так.
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    про конфиги идею понял, сделаю на свой манер.

    По сниппету из кода можно заюзать PinPIE:: ParseString(), а можно в принципе добраться до метода, который сидит глубже, куда передаётся тег, как массив, но это пипец.
     
    VLK нравится это.
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да, ещё хочу заметить, что способ
    это основной способ работать со сниппетами.

    Однако рендеринг сниппета происходит как и положено - после исполениня кода пхп этого текущего файла, в котором вы эту строчку пишете.

    Если вам надо получить текст отрендерённого сниппета "прям ща", то тогда дёргайте тот метод, что я сказал выше. Обычно он не нужен. Но иногда я его использовал при генерации ответов json.
     
  5. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    а как правильно отдавать json для ajax, допустим если у меня все делается (формирование ответа) в page? т.е. без сниппетов.
    --- Добавлено ---
    Я пока вот к такому пришел, правда не тестировал (но по коду страницы вроде норм):
    в page:
    PHP:
    1. [[@template=my_json_tmp]]
    2. <?php
    3. $result = 'some result';
    4. echo json_encode($result);
    а в templates/my_json_tmp.php:

    PHP:
    1. <?php
    2. header("Content-Type: text/html; charset=UTF-8");
    3. echo '[[*content]]';
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    VLK нравится это.
  7. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    еще такая вопрос, допустим у меня пользователь авторизованный не авторизованный, как лучше всего организовать при заходе на страницу если он авторизован, то предоставить ему контент, если не авторизован, форму авторизации.
    допустим страниц много, и на каждой делать проверку не айс.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тогда проверку можно сделать в преинклуде том как раз. Я так в галерее делал, там в админке всё закрыто всегда, если не залогинен.

    Но последнее время у меня обычно как раз ситуация такая, что одной только авторизации недостаточно, и приходится на каждой странице проверять свои отдельные права видеть контент именно этой страницы.
     
    VLK нравится это.
  9. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну надо бы продумать как это лучше всего прикрутить, создать какой то обработчик (класс) который будет определять права, он естественно будет в preinclude.php (пользователь сам будет делать) и он должен как то ловить подгружаемый контент, а так же иные элементы (например админ панель или меню) и давать то, что разрешено.
    как со стороны ПинПие перехватывать подгружаемые элементы..
     
    #84 VLK, 27 июн 2016
    Последнее редактирование: 27 июн 2016
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @VLK зачем ты через жалобу модератору форума php.ru пытаешься внести предложение о функциональности PinPie. Да, Игоряша тоже увидит эту жалобу. Но вот тут есть тред и в нем и пиши. Или я должен [vs] влепить баллы за нарушение? :)
    --- Добавлено ---
    а, я кажется понял. Вася опечатался в названии файла, добавив лишнюю букву s и сделав из единственного preinclude множественное preincludes. Ну пипец, @[vs]. Это явно балла на 3 тянет...
     
  11. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    я просто попросил исправить ошибку, если бы пользователь мог редактировать свои старые сообщения, как это было предыдущем движке, я бы написал ему, а не модераторам через жалобу.
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @VLK да я не сразу въехал в суть жалобы. Уже поправил.
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    раньше было с s
    --- Добавлено ---
    запилил.
    Работать будет так:
    [[*placeholder=default value]]
    --- Добавлено ---
    Проверьте пожалуйста. Самому сложно проверять, тестов нет, писать не умею и не буду пока. =)
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Исправил упущение, спешите заценить http://pinpie.ru/ru/manual/start
    --- Добавлено ---
    Кстати говоря доступны исходники сайта с документацией: https://github.com/igordata/PinPIE.docs

    Можно заценить как сумасшедшим образом реализовано боковое меню, которое подключается на странице как чанк, а потом как константа в него пихаются ссылки на подразделы данного раздела:
    Код (Text):
    1. [title[=Configuration]]
    2. [sidemenu[ru/manual/sidemenu]]
    3. [menu config[=
    4. <ul>
    5.   <li><a href="#config-files">Файлы конфигов</a></li>
    6.   <li><a href="#config-variables">Переменные конфига</a></li>
    7.   <li><a href="#simplest-config">Простейший конфиг</a></li>
    8.   <li><a href="#default-pinpie-settings">Дефолты</a></li>
    9.   <li><a href="#cache">Кэш</a></li>
    10.   <li><a href="#code-page">Code page</a></li>
    11.   <li><a href="#static">Статики</a></li>
    12.   <li><a href="#log">Log</a></li>
    13. ...
    14.   <li><a href="#config-example">Пример конфига</a></li>
    15. </ul>
    16. ]]
    https://github.com/igordata/PinPIE.docs/blob/master/app/backend/pages/ru/manual/config.php
    --- Добавлено ---
    Ляпайте звёздочки в репах! Это важно!
    тут https://github.com/igordata/PinPIE.docs
    и тут https://github.com/igordata/PinPIE
    upload_2016-7-6_23-57-15.png
     
    VLK, mr.akv, mahmuzar и ещё 1-му нравится это.
  15. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    еще такой проблема или..
    допустим у меня в темпелате так:

    HTML:
    1. <!doctype html>
    2. <meta charset="utf-8" />
    3. <title>[[*title]]</title>
    4. </head>
    5.     <div class="menu">[[$menu]]</div>
    6.     <div class="content">[[*content]]</div>
    7. </body>
    8. </html>
    как видно меню выводиться при помощи сниппета (именно сниппета потому что..), но допустим есть некоторые страницы где мне не надо выводить меню, было бы не плохо иметь возможность как то обнулить что-ли сниппет, что бы он не выводился, как то типа:
    PHP:
    1. $pinpie_snippets['menu'] = false;
     
  16. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Самое очевидное решение - создать копию темплейта, но без меню
     
  17. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Было бы прикольно иметь возможность что бы сниппет выводил что-то другое, что бы я мог его на странице переопределить.
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Сниппеты в принципе могут выводить что угодно, там же пхп. Ты можешь проверять, на какой странице он вызывается. Показывать меню или не показывать.
     
  19. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @VLK, в сниппет можно передать гет-параметр. В самом сниппете определить, если передан false - меню не выводить
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Если сниппеты разные или параметры там, то значит можно просто не писать его, когда не нужно. =)

    В темплейте
    Код (Text):
    1. [[*menu_placeholder]]
    на страницах на каких надо
    Код (Text):
    1. [menu_placeholder[$menu_snippet]]
    Можно передавать параметры или использовать другие сниппеты или что угодно.
    Код (Text):
    1. [menu_placeholder[$menu_another_snippet?somevar=value]]
    Если этого не будет где-то, то и меню не будет.

    В сайте с документацией это реализовано вот так:
    https://github.com/igordata/PinPIE.docs/blob/master/app/backend/pages/ru/manual/config.php
    тут подменю, т.к. страница длинная, и нужно подменю с пунктами, которые только на этой странице есть.

    а тут плейсхолдеры с меню
    https://github.com/igordata/PinPIE.docs/blob/master/app/backend/chunks/ru/manual/sidemenu.php
    это очень сложный случай, поэтому там дочерта плейсхолдеров. Но работает прекрасно!
     
  21. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну в том то и проблема, на страницах, а если у меня 100 страниц, на 95 оно нужно, на 5 ненужно, на 95 что то писать из-за 5 страниц? может нужна возможность пойти от обратного, т.е. переопределить сниппет. Рассмотри такую возможность.
     
  22. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Одна звездочка у репы...

    А есть у этого творения хоть какое то будущее? Для таких мелких вещей у каждого могу поспорить есть свой велосипед есть куча микрофреимворков и т.д.
    Что бы это прокатило в пхп надо быть везунчиком)
     
  23. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    @smitt ну а какие еще существуют мини-CMS такого толка (на файлах, без лишнего геморроя), только популярные? я вот искал, не нашел, а
    это вроде как приглянулось, ни чего особо сложного, можно свои скрипты (классы) подгружать как хочешь.
    --- Добавлено ---
    был еще какой то чувак с файловой CMS - морфу, но вроде она какая то мутная
     
  24. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Опиши какие задачи ставятся перед cms. Кому нафиг нужны файлы? o_O Это извращение.
    Я файловыми движками не пользовался поэтому не могу посоветовать.
     
  25. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    ну создание каких то минисайтов, визиток, короче там, где БД не нужна, допустим сайт рекламирующий всю ту же CMS :) ну или кто-то сделает какую то программу или плагин для чего то, ему же надо на чем то сделать сайт для рекламы.