Думал об этом, много смотрел, где как это делается. Делать это костыльно — не хочется, делать серьезно, глубоко и грамотно — требуется немало ресурсов. Поэтому для начала решено было реализовать, как уже говорилось, возможность управления типами блогов. Т.е. возможность не только менять параметры «стандартных» типов блогов, какие есть в движке, но и свои добавлять.
Ведь смотрите, что получается — фактически, на уровне блога уже сейчас есть определенный набор ролей, хоть явно он и не прописан:
* администратор сайта
* администратор блога
* модератор блога
* подписант блога
* пользователь (зарегистрированный на сайте, но не подписавшийся на блог)
* гость (неавторизованный посетитель).
С первым все ясно — права на все на свете. Следующие два — см. этот топик. А вот для трех оставшихся права относительно блога могут задаваться настройками типа блога — кто может вступать, читать, писать, для кого блог будет виден, а для кого нет, и т.д.
Мне кажется, что этим функционалом, если его грамотно реализовать и умело им потом распоряжаться, можно покрыть львиную долю задач по разруливанию прав.
Добавил в текст, как это можно сделать. Добавлю, что подразумевалось больше вариантов, но я проверил сейчас — для виджета плагина только один работает. В следующих версиях их обязательно будет больше.
Боюсь, коротким комментом тут не получится отделаться, но для начала поясню хотя бы ключевые моменты.
Изменения в шаблонах можно на две группы разделить: функциональные и структурные (сейчас будет многабукафф, но иначе никак, извините).
Функциональные
1) Самое большое — это замена LS-блоков виджетами. Что за собой повлекло изменение в наименовании папок и файлов шаблонов и синтаксиса вставки виджетов в шаблоны (на самом деле изменений больше, но тут я с точки зрения шаблонов описываю). Львиная доля функционала плагина совместимости — обеспечить работу со старыми LS-блоками, как с родными Alto-виджетами. В ближайшее время я планирую серию статей про виджеты, где постараюсь все про них описать, в т.ч. и с точки зрения разработки шаблонов.
2) В Alto CMS есть функционал из коробки, отсутствующий в LS, который надо предусмотреть. Например, отказ от жесткого и предопределенного разделения на «просто топики», «топики-фотосеты», «топики-опросы», «топики-ссылки». Фотосеты, опросы и ссылки могут добавляться к любому топку (но возможность их добавления может включаться/выключаться в админке). Плюс — дополнительные поля, которые так же в админке могут задаваться.
3) Есть так же возможность редактирования комментов. По сравнению со всем тем, что выше написано, вроде мелочь, но тоже надо учесть это в верстке.
В принципе, все эти изменения понятны и можно все детально описать.
Структурные
А вот тут все непросто. Потому что на сегодняшний день уже есть, как минимум, три стиля создания шаблонов, у которых разная внутренняя организация, структура папок и принцип именования файлов:
1) Стиль «Олдскул» — нынешний LS-стиль, реализованный в версии 1.0.х. Практически все рабочие плагины для ЛС 1.0 заточены под этот стиль. Но если судить по изменения в гитхабе ЛС, есть решение от него отказаться.
2) Стиль «ЛС-новый» — тот стиль, котрый активно разрабатывается в ЛС сейчас. Это — использование принципов наследования, изменение структуры папок и принципов именования файлов. В стиле «ЛС-новый» в значительной мере реализуются идеи, которые я пытался продвинуть в ЛС примерно год назад.
3) Стиль «Альто-экспериментальный» — этот стиль частично реализован в mono. Как верно было замечено, я постарался изложить свои соображения относительно организации шаблонов в статьях Общий принцип организации шаблонов и CSS-классы — общий подход и стандарты (это была попытка высказанные в дискуссиях на ЛС идеи развернуть в практическое русло). Но, к сожалению, до конца эта работа не доведена ввиду жесткой нехватки времени.
Итак, ключевой вопрос: если говорить об адаптации шаблонов под Альто, то для начала надо решить — в каком стиле проводить эту адаптацию?
Извините, но флуд и взаимный переход на личности я удаляю. Про NiceURL я задал вопросы здесь: altocms.ru/blog/questions/235.html#comment3597 и хотел бы услышать ответы, если это возможно
В каких-то случаях типизация аргументов функций, наверное, и нужна. Но я не очень понимаю, для чего она нужна в движке с динамическим автонаследованием. Поэтому в Альто типизацию убираем. Конфликтов это не вызовет, но сама ошибка, конечно, неприятна. Я бы просто делал небольшую правку устанавливаемых плагином, удаляя в аргументах функций типы ModuleTopic_EntityTopic
Да, одна из задач — это решение проблемы склонения, связанного с числами. В русском языке имеем три варианта, в английском — два (one topic — many topics), в испанском, как я смутно помню, немного сложнее ситуация (там, кажется, существительные мужского и женского рода как-то по-разному склоняются).
добавить «выкаблучивание»
Я еще не все примеры привел, какие могут быть, их там больше получается
Но повторять и сейчас приходится. Например в шаблоне пишем:
{$aLang.topic_question_create_answers_error_min}
А в языковом файле:
'topic_question_create_answers_error_min' => 'Вариантов ответа должно быть как минимум два',
Но я согласен, если в шаблоне писать большими полновесными человеческими фразами, то вероятность ошибки несколько увеличивается. Это как обычно — выигрываем в одном, проигрываем в другом. Вот и хотелось бы понять, будут ли «выигрыши» в итоге перевешивать «проигрыши»
На уровне движка будет реализация всего этого функционала. Но ничто не мешает поддерживать работу шаблонов, созданных по старой технологии. Поэтому речь, скорее, о проблеме обратной совместимости — сами шаблоны, локализованные таким образом, не будут работать на ЛС, и адаптировать их к ЛС будет делом трудоемким, об этом речь.
Раньше не думал об этом, и считал, что это поле заполняется только тогда, когда на самом деле топик прочитан. А оно, оказывается, заполняется, даже когда топик в списке показывается, что, на мой взгляд, неверно. Думаю, будем менять логику.
Это рабочий пример плагина с двумя виджетами, только что проверил
Ведь смотрите, что получается — фактически, на уровне блога уже сейчас есть определенный набор ролей, хоть явно он и не прописан:
* администратор сайта
* администратор блога
* модератор блога
* подписант блога
* пользователь (зарегистрированный на сайте, но не подписавшийся на блог)
* гость (неавторизованный посетитель).
С первым все ясно — права на все на свете. Следующие два — см. этот топик. А вот для трех оставшихся права относительно блога могут задаваться настройками типа блога — кто может вступать, читать, писать, для кого блог будет виден, а для кого нет, и т.д.
Мне кажется, что этим функционалом, если его грамотно реализовать и умело им потом распоряжаться, можно покрыть львиную долю задач по разруливанию прав.
Изменения в шаблонах можно на две группы разделить: функциональные и структурные (сейчас будет многабукафф, но иначе никак, извините).
Функциональные
1) Самое большое — это замена LS-блоков виджетами. Что за собой повлекло изменение в наименовании папок и файлов шаблонов и синтаксиса вставки виджетов в шаблоны (на самом деле изменений больше, но тут я с точки зрения шаблонов описываю). Львиная доля функционала плагина совместимости — обеспечить работу со старыми LS-блоками, как с родными Alto-виджетами. В ближайшее время я планирую серию статей про виджеты, где постараюсь все про них описать, в т.ч. и с точки зрения разработки шаблонов.
2) В Alto CMS есть функционал из коробки, отсутствующий в LS, который надо предусмотреть. Например, отказ от жесткого и предопределенного разделения на «просто топики», «топики-фотосеты», «топики-опросы», «топики-ссылки». Фотосеты, опросы и ссылки могут добавляться к любому топку (но возможность их добавления может включаться/выключаться в админке). Плюс — дополнительные поля, которые так же в админке могут задаваться.
3) Есть так же возможность редактирования комментов. По сравнению со всем тем, что выше написано, вроде мелочь, но тоже надо учесть это в верстке.
В принципе, все эти изменения понятны и можно все детально описать.
Структурные
А вот тут все непросто. Потому что на сегодняшний день уже есть, как минимум, три стиля создания шаблонов, у которых разная внутренняя организация, структура папок и принцип именования файлов:
1) Стиль «Олдскул» — нынешний LS-стиль, реализованный в версии 1.0.х. Практически все рабочие плагины для ЛС 1.0 заточены под этот стиль. Но если судить по изменения в гитхабе ЛС, есть решение от него отказаться.
2) Стиль «ЛС-новый» — тот стиль, котрый активно разрабатывается в ЛС сейчас. Это — использование принципов наследования, изменение структуры папок и принципов именования файлов. В стиле «ЛС-новый» в значительной мере реализуются идеи, которые я пытался продвинуть в ЛС примерно год назад.
3) Стиль «Альто-экспериментальный» — этот стиль частично реализован в mono. Как верно было замечено, я постарался изложить свои соображения относительно организации шаблонов в статьях Общий принцип организации шаблонов и CSS-классы — общий подход и стандарты (это была попытка высказанные в дискуссиях на ЛС идеи развернуть в практическое русло). Но, к сожалению, до конца эта работа не доведена ввиду жесткой нехватки времени.
Итак, ключевой вопрос: если говорить об адаптации шаблонов под Альто, то для начала надо решить — в каком стиле проводить эту адаптацию?
Я еще не все примеры привел, какие могут быть, их там больше получается
А в языковом файле:
Но я согласен, если в шаблоне писать большими полновесными человеческими фразами, то вероятность ошибки несколько увеличивается. Это как обычно — выигрываем в одном, проигрываем в другом. Вот и хотелось бы понять, будут ли «выигрыши» в итоге перевешивать «проигрыши»