XF 1.5 Дополнительное поле страницы

Статус
В этой теме нельзя размещать новые ответы.

22s

Участники
Сообщения
10
Реакции
1
Баллы
700
Имеется много страниц с определенной информацией.
Необходимо 2 дополнительных поля:
Как создать их и получить в шаблон?
Даже не знаю как вам все это описать, ибо в xenForo пришел недавно, до этого пользовался исключительно DLE и там есть такие поля, кто работал с дле, тот поймет.
Заранее спасибо.
 
Посмотрел в базе в таблице ПРЕФИКС_node в breadcrumb_data есть массив, т.е. по логике добавить в него данные можно, но вопрос как это сделать при редактировании страницы, а не через БД...
Достаточно будет помощи о том как сделать 2 поля при редактировании Page, а дальше я уж как нибудь через костыли и пхп буду доставать данные...
 
Последнее редактирование:
22s, смотря что вам нужно конкретно (лучше создать отдельную страницу в админке, где будут заполнятся 2 поля для нужной вам страницы). (Посмотрите дополнения которые работают с админкой и делайте по аналогии.

А в разделах где ваша страница, будете указывать на свой собственный PHP Обработчик, где и будете передавать нужные данные с базы на страницу (только нужно будет модификации делать), чтобы вывести эту информацию.





ПРИМЕР

Там где сама страница в обработчике заполните просто вот так.
GX_Page_Test::indexGX

А сам файл лежит в папке GX -> Page -> Test.php
PHP:
class GX_Page_Test {
    public static function indexGX(XenForo_ControllerPublic_Abstract $controller,
                                   XenForo_ControllerResponse_Abstract &$response) {
        $response->params['gx_index'] = "Index";
    }
}

// В шаблоне можете использовать переменную теперь вот такую {$gx_index} и оно будет выводить Index
$response->params['gx_index'] = "Index";
 
Да, это конечно не DLE, так и ожидал...
Примерно понял, можно вместо отдельной страницы добавить 2 поля на страницу редактирования Page? И запись в бд не в отдельную таблицу а прям в массив с данными страницы?
Про вызов понял.
 
22s, можно. Но тогда нужно переопределять class controller-а (admin).
Добавлять поля, и делать проверки.

Методы save и прочее. Нужно смотреть в общем как строится (XenForo_ControllerAdmin_Page)
И вот с ним работать.

Как переопределить контроллер, смотрите другие дополнения.
 
Очень уж геморройно это, нельзя как то полегче вставить куда-то 2 поля для ввода и в шаблоне просто их вывести, почему никто не написал еще дополнения такого?
 
22s, проще вроде некуда. Так как вы описали, так не выйдет, страница просто не сохранит эти данные, так как не знает о них это раз, а во вторых она не знает куда их сохранять.

По этому тут выход только переопределять, или делать отдельную страницу с добавлением , редактированием и удалением (своих записей) где будут хранится 2 поля + id страницы нужной а на стороне уже Page (с помощью модели принимать уже нужные данные туда).
 
22s, проще вроде некуда. Так как вы описали, так не выйдет, страница просто не сохранит эти данные, так как не знает о них это раз, а во вторых она не знает куда их сохранять.

По этому тут выход только переопределять, или делать отдельную страницу с добавлением , редактированием и удалением (своих записей) где будут хранится 2 поля + id страницы нужной а на стороне уже Page (с помощью модели принимать уже нужные данные туда).
Нет тут есть 3 и еще не один выход, третий я уже делаю через костыли.
Вопрос в Test.php как можно получить только url самой страницы без средств php $_SERVER?
 
22s, если вы собрались на прямую писать в XenForo папке, при обновлении движка (файлы которые будут обновлены, перепишут ваши, и всё придется ручками снова менять).

Вопрос в Test.php как можно получить только url самой страницы без средств php $_SERVER?

Как вариант
PHP:
$pageUrl = '/pages/'.$response->params['page']['node_name'].'/';
 
  • Мне нравится
Реакции: Hope
22s, если вы собрались на прямую писать в XenForo папке, при обновлении движка (файлы которые будут обновлены, перепишут ваши, и всё придется ручками снова менять).



Как вариант
PHP:
$pageUrl = '/pages/'.$response->params['page']['node_name'].'/';
Отлично, так и предполагал...
Теперь не получается вызвать в php обработчике...
Делаю все правильно, вылазиет ошибка
The server responded with an error. The error message is in the JavaScript console.
И еще:
  • Параметры вызова обработчика:
    1. XenForo_ControllerPublic_Abstract $controller
      Экземпляр контроллера. Тут содержится запрос, ответ и т.д.
    2. XenForo_ControllerResponse_Abstract &$response
      Стандартный ответ контроллера страницы.
 
22s, значит что-то не так написали в коде.
Более подробно (читайте тут)
В этом коде еще нет ничего моего, это твой код...
PHP:
class GX_Page_Test {
    public static function indexGX(XenForo_ControllerPublic_Abstract $controller,
                                   XenForo_ControllerResponse_Abstract &$response) {
        $response->params['gx_index'] = "Index";
    }
}
 
Последнее редактирование:
22s, этот код отвечает за вывод, а где у вас ошибку показывает? (на странице или в админ панели)
В админке, когда пытаюсь сохранить страницу, если укажу первый параметр (GX_Page_Test) например так GX_Page_Tests то пишет что метод не найден, а если указываю правильно появляется эта ошибка.
Причем есть примечание:

  • Параметры вызова обработчика:
    1. XenForo_ControllerPublic_Abstract $controller
      Экземпляр контроллера. Тут содержится запрос, ответ и т.д.
    2. XenForo_ControllerResponse_Abstract &$response
      Стандартный ответ контроллера страницы.


333.png

Вроде в обработчике все перепробовал333.png

22s, этот код отвечает за вывод, а где у вас ошибку показывает? (на странице или в админ панели)
Модуль готов, Георгий спасибо за помощь :thumbsup:
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу