Отладка
Стоит ли открыть форум? Напишите об этом по адресу admin@astracms.ru написав в теме "открыть форум". Я не автор движка и поэтому не могу консультировать так, как это делал бы он, но возможно у нас получится совместно находить решения.
Автор | Текст сообщения | |||
---|---|---|---|---|
SRG |
14.07.2010 16:41
Отредактировано: 14.07.2010 16:48
Здравствуйте.
А возможно ли использовать в CMS отладку смарти? Имеется в виду вывод консоли отладки. |
|||
admin |
14.07.2010 18:22
Нет, это не предусмотрено.
|
|||
SRG |
14.07.2010 19:22
Спасибо, понял.
А не подскажите как тогда можно посмотреть список всех переменных доступных шаблону во время вызова? Или нужно копать модуль обязательно? |
|||
admin |
14.07.2010 22:31
В доках есть.
Глобальные перемеменные: http://wiki.astracms.ru/integration/globaldata По модулям, например: http://wiki.astracms.ru/modules/catalog/templates |
|||
SRG |
15.07.2010 00:18
Отредактировано: 15.07.2010 00:47
Это понятно.
Просто есть, так сказать, сторонний модуль (нестандартный каталог товаров) и докумнетации по нему нет. А задача стоит извлечь данные из этого каталога и отобразить в несколько другой форме. Вот и пришла в голову идея использовать консоль отладки чтобы не вдаваясь в подробности увидеть все переменные этого модуля доступные для шаблонов. На самом задача состоит совсем не в отладке. Попробую описать: Есть модуль – каталог товаров. У него есть один блок: форма поиска. Модуль позволяет пользователю выбирать позиции каталога по нескольким поисковым критериям: производитель, тип, характеристика. И отображает результат запроса на одной из трех страниц. Всего у модуля есть 3 страницы (шаблона). 1-я и вторая отображают каталог и форму поиска, 3-я результат выборки из каталога по критериям. Стоит задача повторить то же самое, но с других страниц и результат отобразить также на другой странице (другой внешний вид и компоновка данных). То есть предоставить доступ к тем же самым данным но с других страниц. Вопрос: какими средствами можно реализовать подобный механизм? Например, добавив блоки, но сам механизм поиска описан в модуле, и он жестко привязан к существующим страницам модуля. Или нужно переписывать сам модуль с учетом вывода через разные шаблоны? Или же создать аналогичный модуль и изменить в нем страницы на необходимые нам? Но, как я понял, каждый экземпляр модуля (например каталога) создает собственные таблицы в БД? Возможно ли обращаться из нового модуля к таблицам старого? В общем, примерно так. Надеюсь изложил понятно. Заранее спасибо. |
|||
admin |
15.07.2010 00:59
Отредактировано: 15.07.2010 01:00
Экземпляры одного модуля могут работать и с одинаковыми таблицами БД. Если модуль какой-то свой, то достаточно в нем жестко прописать имена таблиц (без использования префикса SECTION).
Потом можно его размножить, назначить другие шаблоны и все. |
|||
SRG |
15.07.2010 01:34
Отредактировано: 15.07.2010 01:47
Спасибо большое за подсказку! Буду копать в этом направлении.
Если я правильно все понял то следующие действия должны увенчаться успехом. 1. Скопирую модуль. 2. Удалю create.sql чтобы при создании экземпляра не создавались таблицы. Изменю install.xml. 3. Поменяю в модуле все префиксы SECTION на какую нибудь свою переменную в которой будет префикс таблиц оригинального модуля. 4. Изменю код страниц (шаблонов) По идее все должно заработать: Новый модуль и новые страницы - а данные из каталога принадлежащего другому модулю. PS: Можно ли переменную содержащую префикс таблиц из оригинального модуля реализовать через плагин "глобальные переменные"? что то вроде {$options.oldSECTION} В доках написано: "значения которых будут доступны в шаблонах всех страниц." Надеюсь в текстах модулей тоже будут доступны. |
|||
admin |
15.07.2010 01:51
1. зачем копировать? прямо в том модуле что будет базовым для обоих разделов меняете названия таблиц в запросах на свои жестко заданные.
3. можно обойтись и без дополнительной переменной префикса. Важно понимать что модуль будет один, но на сайте будет два раздела (экземпляра модуля). http://wiki.astracms.ru/architecture В случае общих таблиц бд отличаться они будут только урлами и шаблонами. т.е. после модернизации нужного модуля, в админке (сайт - разделы) создаете два раздела на базе нужного модуля и все. |
|||
SRG |
15.07.2010 12:22
Так и сделал. После создания нового экземпляра удалилось все содержимое таблиц старого модуля...
Видать надо править create.sql. Также перестала работать админка нового экземпляра, видать не везде сменил SECTION - буду копать. |
|||
SRG |
17.07.2010 00:12
Отредактировано: 17.07.2010 01:27
Спасибо за участие, все в принципе получилось.
Но появилась следующая сложность с которой мне пока не справиться: У модуля жестко прописаны три страницы (шаблона) 1 Просто каталог 2 Форма параметров поиска по каталогу 3 Результат выборки. У нового экземпляра модуля помимо вывода страниц с использованием других шаблонов необходимо добавить еще несколько страниц. А конкретнее, страница параметров поиска по каталогу настолько обширна, что ее нужно разделить на несколько страниц. Например страница выбора диаметров, высоты и ширины, страница выбора производителей и т.д. Как это сделать в экземпляре модуля - ума не приложу. Возможно ли вызвать из шаблона другой шаблон как процедуру? Либо возможно ли вызывать шаблон из самого себя передавая ему параметры? например как обычная php страничка вызывает сама себя сколь угодно раз получая при этом данные с предыдущей страницы? Еще хотелось бы поинтересоваться в какой последовательности отрабатывают процедуры Router Action и Create Data у модулей? Заранее спасибо! |
|||
admin |
17.07.2010 17:50
2. Action 3. Create Data |
|||
SRG |
19.07.2010 23:20
Отредактировано: 19.07.2010 23:21
Спасибо! Буду думать.
Возникла неоднозначность. Есть дополнение t1 с базовым плагином "список чисел" вывожу на экран в шаблоне: {* выводятся все значния массива $t1 *} {foreach from=$t1 item=curr_id} Data: {$curr_id}<br> {/foreach} Все работает. А вот следующая конструкция - не работает: {section name=ind start=1 step=1 max=9 loop=$t1} Data: {$t1[ind]}<br> {/section} цикл отрабатывает, а данных нет. Пробовал по всякому: $t1[ind].id $t1[ind].name $t1[ind].value Не хочет. в принципе хватило бы foreach, но мне нужен не весь массив, а определенная часть. |
|||
admin |
20.07.2010 01:49
Дело в том что список загружается в виде ассоциированного массива, поэтому обычный section в данном случае для его обхода не подойдет.
Надо либо менять метод загрузки списка в plugins/listnum/include.php либо ограничивать вывод в foreach условием по $smarty.foreach.[name].iteration |
|||
Вы не можете добавить сообщение. Вам необходимо авторизироваться на сайте под своим логином либо зарегистрироваться.