1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Создание собственной таблицы в БД форума

Тема в разделе "Для новичков", создана пользователем AfterWork, 26.07.2015.

Загрузка
  1. AfterWork

    AfterWork Местный

    Регистрация:
    14.04.15
    Сообщения:
    49
    Симпатии:
    0
    Версия XF:
    1.5.10
    Пишу плагин. В плагине есть необходимость логгировать действия пользователя и работать с этими логами. Делать выборки по содержимому, группировать и т.п. Вполне логичный вывод использовать для хранения логов таблицу в БД.

    Можно напрямую в БД форума создать собственную таблицу и работать с ней с помощью запросов. Но в этом случае сразу встает вопрос переноса плагина.

    Я понимаю что само создание таблицы в БД надо как-то делать из плагина. Можно конечно каждый раз перед запросом к таблице просто проверять базу на наличие соответствующей таблицы и при её отстутствии создавать эту таблицу, но грамотно ли это с точки зрения логики ксены?

    Поясните пожалуйста как это грамотно сделать?
     
  2. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    В инсталляторе плагина делаете процедуру проверки и создания таблицы/поля в существующей таблице, а в деинсталляторе - процедуру удаления. Так все плагины, использующие собственные таблицы и/или поля в существующих таблицах, делают. Посмотрите примеры таких плагинов.
    А в коде обработки, конечно же, уже нет необходимости проверять наличие таблиц и полей, подразумевая, что они уже есть.
     
    Kolya groza morey и AfterWork нравится это.
  3. AfterWork

    AfterWork Местный

    Регистрация:
    14.04.15
    Сообщения:
    49
    Симпатии:
    0
    Версия XF:
    1.5.10
    Такой вариант мне понятен. Не понятно как его реализовывать. На сколько я уразумел процесс инсталяции плагина состоит из 2-ух этапов.
    1. Процесс залива файлов в библиотеку ксенфоро. банальное копирование.
    2. Процесс импорта xml файлов через админку.

    Если можно поподробнее опишите как в это добавить процесс создания таблицы в БД. И если не сложно то с живым примером.
    То есть сейчас у меня есть готовый набор файлов пхп + экспортированный xml - естественно ни база не создается ни еще ряд вещей которые нужны для работы плагина. Нужны дополнительные поля для пользователей + раздел на форуме с определенными правами всё это приходится делать ручками до или после установки плагина.
    Если всё это можно сделать в процессе установки плагина не сочтите за труд расскажите как это делать. Надеюсь интересно будет не только мне.

    Прошу к моим вопросам отнестись снисходительно. Я понимаю что могу задавать вопросы на которые ответ вполне очевиден.
     
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Все верно. Ответ очевиден. Писать туториал я не намерен, поэтому отправлю Вас к изучению чужих плагинов со схожим функционалом. Уроки по созданию плагинов легко гуглятся.
    Если Вы не знаете азов, то какой смысл обсуждать здесь это? Когда будут конкретные вопросы, тогда и обращайтесь.
     
    Kolya groza morey нравится это.
  5. AfterWork

    AfterWork Местный

    Регистрация:
    14.04.15
    Сообщения:
    49
    Симпатии:
    0
    Версия XF:
    1.5.10
    Даже спорить не буду. Ответ был очевиден. Уже нашел как это делается в принципе. (Для таких как я: в свойствах плагина есть настройка где можно указать процедуру ответственную за инсталл/анинсталл. То есть пишем нужную процедуру и она в процессе импорта xml-ника делает нужные нам действия.) Буду разбираться в деталях.

    P.S. Такие вопросы как у меня возникают тогда когда изучаешь одновременно 2 новых языка (ни с php ни с html/css раньше дела не имел) и новую среду разработки (я имею ввиду ксену). Особенно с учетом того что всё это намешано просто совершенно в кучу и нет ни одного нормального мануала который дает простые примеры простых приемов. Понятно что гугл великое подспорье и 95% времени я как раз и трачу на поиск и чтение. Но всё-же тяжело разбираться и одновременно пытаться писать так чтобы было всё концептуально правильно без костылей и кривых подпорок.

    Очень напоминает: "Есть дизельные автомобили которые ездят на сжиженном газе, посмотрите примеры таких автомобилей". Ну хоть чуть-чуточку больше конкретики и было бы Вам огромное спасибо вместо разочарования. RTFM-щиков все люто ненавидят.
     
    Последнее редактирование: 26.07.2015
  6. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Я во втором посте дал Вам чуток конкретики. Чем же Вы не довольны? Или хотите, чтобы я на примере Вашего плагина сделал урок? Я и сам не редко обращаюсь к специалистам и PHP, и HTML, и CSS, да и по всем остальным вопросам. Но хотя бы какую-то базу ведь нужно иметь для того, чтобы задавать не азбучные вопросы.
    На самом деле я совсем не против, если кто-то даст Вам более подробные ответы на Ваши вопросы. Я, к Вашему сожалению, не имею достаточно времени отвечать на все Ваши вопросы, а также давать очень развернутые ответы.
    И еще. По поводу RTFM. Я не обращал Ваше внимание на руководство разработчика или пользователя. По простой причине - его банально нет. Я отослал Вас к изучению чужих плагинов, имеющих нужный Вам функционал. Лично я так и изучал и Zend Framework, и XenForo (классы, шаблоны и т.д.). Опыт программирования у меня не такой уж и большой - это не мой хлеб. Также мне хорошо помогли уроки по созданию плагина, которые я нагуглил. Ну и официальный сайт XenForo содержит много полезной информации, пусть и на английском языке.

    P.S. Я с радостью даю любые консультации, но в пределах разумного.
     
    Kolya groza morey нравится это.
  7. AfterWork

    AfterWork Местный

    Регистрация:
    14.04.15
    Сообщения:
    49
    Симпатии:
    0
    Версия XF:
    1.5.10
    Ну зачем-же из крайности в крайность? Не думаю что стоит делать целый урок из процесса инсталяции. Хотя по скольку мне всё равно писать этот процесс самому, то думаю что сам попробую сделать из этого полноценный урок. И буду рад Вашим комментариям к нему если они у вас будут и Вы найдете на это время. (Никакого сарказма.)

    Не знаю как у Вас, но у меня зачастую именно азбучные вопросы на чистое знание вызывают трудности. Я сторонник изучения через понимание. А для понимания иногда приходится на начальных этапах задавать именно азбучные вопросы. И не думаю что я один такой. Не будем брать ту категорию лиц которые пытаются что-то сделать занимаясь банальным копипастом кода и по каждой мало-мальсткой ошибке бегут на форум с криком всё сломалось выручайте. Они то как раз учиться и не хотят.
    А по поводу азбучных вопросов на чистое знание приведу Вам пример. Допустим если у электрика спросить какой провод надо использовать к примеру при токе 25 ампер и напряжении 220 вольт, он ответи не думая. Он просто помнит ответ. Он для него азбучная истина. И он не сможет понять как это человек не может ответить на такой элементарный вопрос.
    С другой стороны если спросить меня, то я могу вспомнить про закон ома, поискать в справочнике формулы для расчета площади сечения провода, найти тоже в справочнике необходимые параметры для подстановки в эти формулы и вычислить ответ на этот вопрос. Результат верный я тоже получу. И даже запомню ответ на некоторое время. И видимо на долгое если буду постоянно пользоваться этим ответом. Так что элементарное элементарному рознь. Когда ты уже столкнулся с элементарным в определенной предметной области, ты просто запомнишь это и оно и для тебя станет элементарным. Но когда не сталкивался, элементарный вопрос может быть очень и очень сложным просто потому что не знаешь куда именно посмотреть.

    Понятие RTFM несколько шире чем то о чем Вы сказали. IMHO. Если бы вы не просто сказали покапайся в плагинах, а добавили что можно посмотреть вот этот плагин в нем должен быть функционал похожий на тотчто вам нужен. Я бы просто искренне поблагодарил Вас. Так как в этом случае я бы точно знал какой плагин копать и точно знал что в нем есть то что мне нужно. А так Ваш отсыл к покопаться в плагинах выглядит как пойди туда не знаю куда поищи инсталятор. В тот момент я непонимал как именно устроен инсталятор в ксено и что это вообще такое. Чтобы найти что-то и изучить надо хотя бы понимать что ты ищешь. :)

    У меня тоже программирование это далеко не мой хлеб. И то что я сейчас решил тщательно изучать продукт вызвано скорее безисходностью чем чем-то иным. Но вы правы, это только моя проблема.
     
  8. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Чуть не забыл. Еще очень помогает отладка кода PHP. Для этого необходимо работать в какой-нибудь IDE (среда разработки) с поддержкой отладки. Лично я использую PhpEd, многие используют PhpStorm. Еще одна из распространенных IDE - Zend Studio. Есть и другие.
    С помощью отладки можно изучать как сам движок, так и работу плагинов. Полезно как для общего развития, так и для изучения движка XenForo (который базируется на Zend Framework). Но для отладки потребуется настройка серверного софта, на котором крутится сайт.

    Успехов :)
     
  9. AfterWork

    AfterWork Местный

    Регистрация:
    14.04.15
    Сообщения:
    49
    Симпатии:
    0
    Версия XF:
    1.5.10
    Книгу рекомендованную частично прочитал частично пролистал. Большая часть книги скорее о том как правильно писать большие проекты в команде разработчиков чем даже собственно о пхп. Нашел для себя несколько важных моментов по отличии объектной концепции пхп от того-же к примеру дельфи. Расстроился некоторыми моментами языка. Но это не фатально. Если бы писали на дельфи то тоже бы сразу расстроились. Дельфи гораздо четче контролирует среду исполнения, меньше пропускает тупых ошибок. Но это разница в подходе к языку и тут ничего не сделаешь.
    Для себя понял что надо искать информацию по концепции зенд фреймворк. (лучше бы сразу по ксене, но на нет и суда нет.)
    В плане IDE остановился на NetBeans может и не самое лучшее решение но он мне понравился. Вопрос с отладчиком отложен пока на чуть более позднее будущее. Ну просто потому глупо тыкаться с тестером по электропроводке автомобиля если не понимаешь где источник энергии, а где потребитель. :)
    Если потосоветуете что почитать по ZF желательно по русски буду признателен.
     
  10. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Большого смысла изучать ZF нет, так как XenForo использует его мало. Конечно, некоторые классы используются в чистом виде, но не более того. Если будете искать документацию на ZF, то ищите на 1.x, а не на 2, так как ксен использует первый зенд.
    Кстати по хукам. Сейчас от хуков практически отказались, перейдя на TMS (система модификации шаблонов) и на использование callback непосредственно в шаблонах. Хотя в некоторых случаях проще использовать хуки. Хук - это специальный тег в шаблоне, который позволяет в плагине обрабатывать вызов кода, связанного с хуком. Проблема в том, что это сильно сказывается на производительности, а потому нужно аккуратно к этому подходить.
    В любом случае отладка упрощает понимание, откуда был вызван этот код, а также какие параметры ему были переданы. Ни в какой книжке и документации подробно это не распишут. Также пошаговая отладка помогает выяснить, откуда и куда :) Поэтому отладка для меня - это основной источник ответа на вопрос "Как это работает?". Конечно, можно и по коду пробежать глазами, но это врядли будет быстрее, да и требует, порою, очень нехилых знаний, да и всю логику не так просто отследить даже для профи.
     
  11. AfterWork

    AfterWork Местный

    Регистрация:
    14.04.15
    Сообщения:
    49
    Симпатии:
    0
    Версия XF:
    1.5.10
    Я по ZF нашел простые примеры в которых как бы дана логика взаимодействия частей системы написанной на ZF. Попробовал понять по аналогии как работает ксена. Что из этого вышло естественно буду проверять на дебагером. :)
    На пробежать по тексту глазами у меня слишком слабый навык в пхп. :)
     

Поделиться этой страницей