UMIhelp
Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: izen29 от 12 Февраля 2013, 18:13:04
-
Здравствуйте!
Реализую функционал модуля Форум и столкнулся с проблемой вывода формы создания новой темы. Единственное что нашел по данному предмету: http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/forum/forum_topic_post/
но так и не понял - как правильно заверстать форму, какие поля в ней должны быть, как реализовать оба сценария (и чем они отличаются). Кто нибудь реализовывал подобный функционал, просвятите плиз?
-
Итак... Пока не поздно - лучше выбрать другую CMS. Если кажется, что сейчас немного забыли дописать документацию и дописать кодэ - то через пару месяцев будешь сидеть и допиливать движок. Это конечно прикольно, но до поры...
Качаешь localpack... Устанавливаешь... Заходишь на форум - там одна тема создана, формы отправки новой темы нет. Форум кстати зачётный, на офф сайте можешь потыкать и посмотри сколько сообщений реально в постах и сколько выводит система. Попробуй поиск и т.п... Вообщем то ещё ололо.
Скачал localpack.... Все xslt шаблоны хранятся в xsltTpls\modules\ИМЯ_МОДУЛЯ. Соответственно для форума - xsltTpls\modules\forum. Почти для всех модулей там реализован минимальный функционал, но это не всегда.
Изучаешь, какие макросы есть у модуля форум. Тебя интересует именно topic_post. Заходим, смотрим - есть там такой файл. Смотрим как реализовано.
Заходим в localhost/pioneer_club/ , дописываем .xml - /pioneer_club/.xml. Смотрим, какой модуль и макрос у нас используется - <result xmlns:xlink="http://www.w3.org/TR/xlink" module="forum" method="conf" domain="localhost" system-build="20317" lang="ru" header="Фан-клуб Pioneer" title="Фан-клуб Pioneer" site-name="umicms.demo site" request-uri="/pioneer_club/.xml" pageId="46">
Находим файл conf.xsl или ищем по ключевому слову "conf", "$method='conf'"
Заходим, смотрим - что за на... Код из разряда a=5; if (a==5) {...}
<xsl:template match="udata[@module = 'forum'][@method = 'conf']">
<xsl:param name="test_add_topic" select="0" />
......
<xsl:if test="not($test_add_topic)">
<xsl:apply-templates select="document(concat('udata://forum/topic_post/', $document-page-id))/udata" />
</xsl:if>
</xsl:template>
Удаляем нафиг xsl:if, оставляем что там внутри, заходим ещё раз на форум и чудо - всё работает...
Обычно я пишу более аккуратно и более понятно, сейчас просто времени нет, а в личке обещал подсказать
-
Спасибо! Сел курить))
-
Все по сути в сообщении Rodogor, добавлю только, что если вы устанавливали localpack недавно и ставили демо-сайт "интернет магазин современны", то файлы его шаблона лежат по адресу /templates/demodizzy/xslt.
Шаблон формы, которую вы вывели у себя, если проделали вышеописанное, лежит в файле /templates/demodizzy/xslt/modules/forum/topic_post.xsl
Также, для пытливых, могу добавить что отправляется она по адресу /forum/topic_post_do/[elemeny_id]. Что однозначно подсказывает нам, что все, что ответственно за добавление темы, находиться в функции topic_post_do() в модуле forum.
чтобы наверняка, я заглянул в эту функции и увидел что она кушает поля с именами:
title - имя темы
body - сообщение, которое в коде никуда в итоге не записывается, но при этом проверяется через антиспам (странно ;))
nickname и email если отправитель незарегистрированный пользователь
login - если пользователь зарегистрированный (хотя по факту, это поле нигде серьезно не используется и не пишется в итогово созданную форму, так как если пользователь зарегистрирован, то система сама определяет его id и вытягивает всю необходимую информацию)
P.S. Rodogor, повеселил стилем рассказа))
-
Admin, я тут планирую сделать прям целый ряд огромных статей по тем приколам, которые я нашёл в umi, по общению с техподдержкой ну и в целом впечатление. Раскидаюсь с проектами (говорю это уже почти пол года) и повеселю от души.
Поправка про путь к xslt шаблонам и demodizzy - я действительно с путями напутал, давно уже не видел оригинал. Всё что пошло через меня обновлять больше нельзя, а вылавливать глюки в новых обновлениях мне надоело. Ради интереса порой что-то обновляю и смотрю как там в коде что сделали, может чего путёвого.