pikusov
Пользователь-
Content Count
883 -
Joined
-
Last visited
-
Days Won
7
Everything posted by pikusov
-
Откуда такая информация?
-
http://www.smarty.net/docs/en/advanced.features.template.inheritance.tpl {block 'footer'} Этот блок переопределен полностью {/block} {block 'pagination' prepend} Этот текст добавится перед блоком {/block} {block 'categories' append} Этот текст добавится после блока {/block}
-
Вам не нужно знать кого наследовать, вы наследуете класс "class MyModule1 extends MyModule1\Products" а не "class MyModule1 extends Products". Симпла в итоге сама составит цепочку наследований class MyModule2 extends class MyModule1 extends Products Если нужен join - этот пример я привел первым. Ну или, в крайнем случае, вы можете вообще весь метод переопределить. В любом случае никакой "другой" модульностью вы не сможете сделать гибче чем предлагаю я.
-
Еще один из возможных вариантов: class Products extends Simpla { protected fields = array('name', 'price'); public function get_product($id) { $this->db->query('SEELCT ?@ FROM products WHERE id=?', $this->fields, $id); return $this->db->result(); } } class MyModule1 extends MyModule1\Products { public function __construct() { parent::__construct(); $this->fields = array_push(parent::$fields, 'новоеполе1'); } } class MyModule1 extends MyModule2\Products { public function __construct() { parent::__construct(); $this->fields = array_push(parent::$
-
Он не решает указанной проблемы, вместо этого беспощадно усложняет архитектуру. Наследование же оставляет код симплы таким же простым как и раньше, при этом дает возможность изменить абсолютно любой код, а не только тот, который заранее спроектирован под возможность изменения
-
Во-первых в get_product будет запрос SELECT * - так что поле подтянется само, если есть в базе Если же эти поля, например, внешние ключи от других таблиц, то два модуля могут выглядеть примерно так: class MyModule1 extends MyModule1\Products { public function get_product($id) { $product = parent::get_product($id); $product->some_data1 = $this->db->***; return $product; } } class MyModule2 extends MyModule2\Products { public function get_product($id) { $product = parent::get_product($id); $product->some_data2 = $this->db->***; return $product; } }
-
Если автор модуля будет культурным человеком, то он просто вызовет parent::get_xx, изменит то что ему нужно и выдаст результат дальше
-
Но автор модуля не может знать на чистую систему его поставят или поверх других модулей
-
Всё равно не очень понятно - "Он берет нужный файл, вносит в него нужные правки и сохраняет в заданную директорию". А если другой модуль уже внес туда правки?
-
Проблема в какой последовательности подгружать разные модули, расширяющие один и тот же код
-
А как у них решается аналогичная проблема?
-
Модуль это просто класс, который наследует стандартный класс симплы. Как его "подхватывать", точнее в каком порядке подхватывать - в этом и сложность. На данный момент Симпла просто смотрит в папку /extensions/ и наследует стандартные классы теми, что нашлись в папке. Проблема последовательности может возникнуть когда несколько разных модулей переопределяют или дополняют один и тот же метод класса.
-
Если хранить в базе - значит данные о модулях брать из базы через class Database? Но мы не можем создать класс Database, пока не проверим не унаследован ли он каким-то модулем, возможно даже и не одним. А чтобы это узнать, нужно сначала загрузить все модули, при чем в определенном порядке. Проблема курицы и яйца. Еще на счет порядка загрузки модулей - кто вообще его должен устанавливать? Стоит ли администратору давать такие права? Пока склоняюсь к тому, что это дело программиста и класть модули в папку /extensions, а загрузку сделать через /extensions_loader.php, в котором будет список inclu
-
Например как настраивать порядок загрузки модулей и где этот порядок хранить
-
Пока не удается обойти некоторые сложности с модульностью, как только получится - выйдет бета
-
Видимо яндексу не нравится ip вашего сервера. Попробуйте через прокси (настройки прокси вносить можно в этом же файле)
-
У яндекса изменился формат капчи. Вот новый get_info.php, его нужно обновить в папке /simpla/ajax get_info.php
-
Impera CMS не нарушает патент/лицензию Simplы ?
pikusov replied to Mamyta's topic in Разные скрипты магазинов
А при чем тут патенты? Авторское право на ПО в Украине регистрируется как художественное произведение а не как патент. -
Не работает автоподбор картинок
pikusov replied to Barbatos's topic in Общие вопросы по функционалу и дизайну
Noxter прав, api гугла в симпле не используется -
Обновите файл /simpla/ajax/get_info.php get_info.php
-
Действительно, спасибо
-
Там же <base href> есть, так что все пути от него начинаются
-
А откуда такая информация?
-
Небольшое обновление Simpla 2.3.7 от 21 апреля 2015
pikusov replied to pikusov's topic in Новости Simpla CMS
Именно так уже и сделано в будущем релизе ) -
На демо парсер не обновлялся, а у себя посмотрите какая ошибка по такому адресу сайт/simpla/ajax/get_info.php?keyword=HTC%20Sensation