Astra.CMS

 

 

Форум » Проблемы

Отладка

Стоит ли открыть форум? Напишите об этом по адресу admin@astracms.ru написав в теме "открыть форум". Я не автор движка и поэтому не могу консультировать так, как это делал бы он, но возможно у нас получится совместно находить решения.

Автор Текст сообщения

SRG
Сообщений: 7

Здравствуйте.
А возможно ли использовать в CMS отладку смарти?
Имеется в виду вывод консоли отладки.
 
aristoc

admin
Сообщений: 1159

Нет, это не предусмотрено.
 

SRG
Сообщений: 7

Спасибо, понял.
А не подскажите как тогда можно посмотреть список всех переменных доступных шаблону во время вызова? Или нужно копать модуль обязательно?
 
aristoc

admin
Сообщений: 1159

В доках есть.
Глобальные перемеменные:
http://wiki.astracms.ru/integration/globaldata
По модулям, например:
http://wiki.astracms.ru/modules/catalog/templates
 

SRG
Сообщений: 7

Это понятно.
Просто есть, так сказать, сторонний модуль (нестандартный каталог товаров) и докумнетации по нему нет. А задача стоит извлечь данные из этого каталога и отобразить в несколько другой форме.
Вот и пришла в голову идея использовать консоль отладки чтобы не вдаваясь в подробности увидеть все переменные этого модуля доступные для шаблонов.

На самом задача состоит совсем не в отладке. Попробую описать:
Есть модуль – каталог товаров. У него есть один блок: форма поиска. Модуль позволяет пользователю выбирать позиции каталога по нескольким поисковым критериям: производитель, тип, характеристика. И отображает результат запроса на одной из трех страниц. Всего у модуля есть 3 страницы (шаблона). 1-я и вторая отображают каталог и форму поиска, 3-я  результат выборки из каталога по критериям. Стоит задача повторить то же самое, но с других страниц и результат отобразить также на другой странице (другой внешний вид и компоновка данных). То есть предоставить доступ к тем же самым данным но с других страниц.
Вопрос: какими средствами можно реализовать подобный механизм?
Например, добавив блоки, но сам механизм поиска описан в модуле, и он жестко привязан к существующим страницам модуля.
Или нужно переписывать сам модуль с учетом вывода через разные шаблоны?
Или же создать аналогичный модуль и изменить в нем страницы на необходимые нам? Но, как я понял, каждый экземпляр модуля (например каталога) создает собственные таблицы в БД? Возможно ли обращаться из нового модуля к таблицам старого?
В общем, примерно так. Надеюсь изложил понятно.
Заранее спасибо.
 
aristoc

admin
Сообщений: 1159

Экземпляры одного модуля могут работать и с одинаковыми таблицами БД. Если модуль какой-то свой, то достаточно в нем жестко прописать имена таблиц (без использования префикса SECTION).
Потом можно его размножить, назначить другие шаблоны и все.
 

SRG
Сообщений: 7

Спасибо большое за подсказку! Буду копать в этом направлении.
Если я правильно все понял то следующие действия должны увенчаться успехом.
1. Скопирую модуль.
2. Удалю create.sql чтобы при создании экземпляра не создавались таблицы. Изменю install.xml.
3. Поменяю в модуле все префиксы SECTION на какую нибудь свою переменную в которой будет префикс таблиц оригинального модуля.
4. Изменю код страниц (шаблонов)
По идее все должно заработать: Новый модуль и новые страницы - а данные из каталога принадлежащего другому модулю.
PS:
Можно ли переменную содержащую префикс таблиц из оригинального модуля реализовать через плагин "глобальные переменные"? что то вроде {$options.oldSECTION}
В доках написано: "значения которых будут доступны в шаблонах всех страниц."
Надеюсь в текстах модулей тоже будут доступны.
 
aristoc

admin
Сообщений: 1159

1. зачем копировать? прямо в том модуле что будет базовым для обоих разделов меняете названия таблиц в запросах на свои жестко заданные.
3. можно обойтись и без дополнительной переменной префикса.

Важно понимать что модуль будет один, но на сайте будет два раздела (экземпляра модуля).
http://wiki.astracms.ru/architecture
В случае общих таблиц бд отличаться они будут только урлами и шаблонами.
т.е. после модернизации нужного модуля, в админке (сайт - разделы) создаете два раздела на базе нужного модуля и все.
 

SRG
Сообщений: 7

Так и сделал. После создания нового экземпляра удалилось все содержимое таблиц старого модуля...
Видать надо править create.sql. Также перестала работать админка нового экземпляра, видать не везде сменил SECTION - буду копать.
 

SRG
Сообщений: 7

Спасибо за участие, все в принципе получилось.
Но появилась следующая сложность с которой мне пока не справиться:
У модуля жестко прописаны три страницы (шаблона)
1 Просто каталог
2 Форма параметров поиска по каталогу
3 Результат выборки.
У нового экземпляра модуля помимо вывода страниц с использованием других шаблонов необходимо добавить еще несколько страниц. А конкретнее, страница параметров поиска по каталогу настолько обширна, что ее нужно разделить на несколько страниц. Например страница выбора диаметров,  высоты и ширины, страница выбора производителей и т.д.
Как это сделать в экземпляре модуля - ума не приложу.
Возможно ли вызвать из шаблона другой шаблон как процедуру?
Либо возможно ли вызывать шаблон из самого себя передавая ему параметры? например как обычная php страничка вызывает сама себя сколь угодно раз получая при этом данные с предыдущей страницы?
Еще хотелось бы поинтересоваться в какой последовательности отрабатывают процедуры Router Action и Create Data у модулей?
Заранее спасибо!
 
aristoc

admin
Сообщений: 1159

У нового экземпляра модуля помимо вывода страниц с использованием других шаблонов необходимо добавить еще несколько страниц. А конкретнее, страница параметров поиска по каталогу настолько обширна, что ее нужно разделить на несколько страниц. Например страница выбора диаметров,  высоты и ширины, страница выбора производителей и т.д.
Как это сделать в экземпляре модуля - ума не приложу.
Возможно имеет смысл сделать разбиение на какие то табы с помощью js. Т.е. форма по сути будет одна, но просто визуально разбита на фрагменты.

Возможно ли вызвать из шаблона другой шаблон как процедуру?
Либо возможно ли вызывать шаблон из самого себя передавая ему параметры? например как обычная php страничка вызывает сама себя сколь угодно раз получая при этом данные с предыдущей страницы?
Подключать другие шаблоны можно например через {include file=...} , так подключаются например фрагменты шапки и подвала. Все данные доступные для базового шаблона будут доступны и в подключаемом.

Еще хотелось бы поинтересоваться в какой последовательности отрабатывают процедуры Router Action и Create Data у модулей?
1. Router
2. Action
3. Create Data
 

SRG
Сообщений: 7

Спасибо! Буду думать.
Возникла неоднозначность.
Есть дополнение 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, но мне нужен не весь массив, а определенная часть.
 
aristoc

admin
Сообщений: 1159

Дело в том что список загружается в виде ассоциированного массива, поэтому обычный section в данном случае для его обхода не подойдет.
Надо либо менять метод загрузки списка в plugins/listnum/include.php
либо ограничивать вывод в foreach условием по $smarty.foreach.[name].iteration
 

Вы не можете добавить сообщение. Вам необходимо авторизироваться на сайте под своим логином либо зарегистрироваться.