Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Полная кастомизация html-вывода #29

Closed
maxsite opened this issue Mar 25, 2015 · 19 comments

Comments

@maxsite
Copy link
Owner

commented Mar 25, 2015

Задача довольно сложная. Причём её решение в каждом случае получается индивидуальным. Например форма логина. Я сделал так, чтобы саму форму можно было настраивать через type/loginform/units/form.php Аналогично — password-recovery, search и registration. Если в шаблоне нужна своя верстка, то кидаем только этот файл и правим под свою задачу.

Теперь в чем сложность. Некоторые type-файлы состоят из сложной if-логики. Например тип users и page-comment-form.php. Каким образом её отделить от содержимого пока не ясно.

Отсюда вопрос: какие ещё блоки, «зашитые» в систему вызывают сложности и требуют разделения?

Отмечу еуще один момент — плагины. Ну тот же forms. Форма жестко зашита в плагин. Можно попробовать её выделить отдельным файлом. Но поскольку там опять же сложная логика, то получится как-то так:

$f['format_textarea'] = '<p><label class="ffirst ftitle ftop" for="{id}"{require_title}>{description}{require}</label><span><textarea name="forms_fields[{key}]" id="{id}"{placeholder}{required}{attr}>{pole_value}</textarea></span></p>{tip}';

$f['format_tip'] = '<p class="nop"><span class="ffirst"></span><span class="fhint">{tip}</span></p>';

То есть это некий шаблон вывода разных html-участков формы. Насколько такой код сложен для понимания верстальщиков?

@vimruler

This comment has been minimized.

Copy link

commented Mar 26, 2015

Вроде понятный и приемлемый вариант с кастомизацией. Но я программист, так что непоказательно...

По плагинам - сразу сложно сказать. Надо освежить в памяти вопрос.

@cuprum

This comment has been minimized.

Copy link

commented Mar 26, 2015

Вот по плагину forms - если будет бОльшая кастомизация, чем сейчас, то за.

@SWAT727

This comment has been minimized.

Copy link

commented Mar 27, 2015

Товарищи программисты, прошу обратить внимание, что я верстальщик и дизайнер, поэтому могу не правильно называть всю эту фигню, расписанную ниже (чуть что поправьте).

Перед критикой, хочу поблагодарить за толковую систему, если разобраться в тонкостях шаблоностроения, все продуманно и довольно легко клепается, варится и коптится.

Однако за время создания и верстки шаблонов, вот с какими трудностями я столкнулся, и буду признателен, если их больше не будет:

1. Доработать функцию вывода записей через units
Или как вы это там называете? А именно - переменную, которая будет отвечать за вывод заголовка не ссылкой, а просто текстом.
На данный момент использую вывод записи через p, а не b. Вот так:

$p->format('title', '<h1>', '</h1>', false); 

Такой же функционал хотелось бы иметь и в b (в качестве примера):

 'title_url' => false;

Если таковой уже имеется, просьба написать

2. Универсальная структура вывода виджетов.
Эта структура, которая подойдет для обновы:

<div class="widget widget_№ widget_name widget_name_№ ">
    <div class="w0"> <!-- Нахрена??? -->
        <div class="w1"> <!-- Нахрена??? -->
            <div class="widget_header"><span>Название:</span></div>
            <div class="widget_content">
                Контент
            </div>
        </div>
        <div class="w2"></div> <!-- Нахрена??? -->
    </div>
</div>

👉 Обратите внимание на комменты!

В идеале, лучше было бы так (но после обновы у всех слетят сайдбары):

<div class="widget widget_№ widget_name ">
    <div class="widget_header"><span>Название:</span></div>
    <div class="widget_content">
        Контент
    </div>
</div>

Этих блоков с лихвой хватит для дизайна.
Сейчас основная проблема в выводе контента виджетов в том, что его тупо нет 😕
И контент каждого виджета выводится по своему, например в списках чего либо это ul.is_link, в том же рандомном тексте это - div.random-text, и так с каждым виджетом... И когда надо оформить каждый виджет одинаково (шапка отдельно, контент отдельно) приходится попотеть и придумывать костыли. Не оформлять же каждый виджет отдельно??

3. Не хватает блока wrap в следующих частях сайта:

  • в комментариях под статьёй
  • на личных страницах пользователей
  • на странице, где выводятся комментарии
  • на странице со списком статей по категориям (скорее всего на других подобных страницах (по меткам, по датам) тоже не будет)

4. Не хватает класса для ссылки редактирования
Это касается как статей, так и комментов. Сейчас везде прописывается по умолчанию вообще ничего не задается, только через файл info-top это: right bg-yellow, почему бы просто не задать edit ??

5. Добавить классы ко всем спанам в info и убрать br
По умолчанию сейчас вся инфопанель к статьям выводиться сугубо при помощи спанов и br
Возможно потом еще, что-нибудь нарою. 😉

@maxsite

This comment has been minimized.

Copy link
Owner Author

commented Mar 27, 2015

На данный момент использую вывод записи через p, а не b. Вот так:

Что такое b?

@maxsite

This comment has been minimized.

Copy link
Owner Author

commented Mar 27, 2015

  1. Универсальная структура вывода виджетов.
    Текущая схема хорошо работала на IE6. :-) Менять на другую особого смысла нет, поскольку это действительно приведет к потере совместимости. Но на самом деле эту страктура задается в mso_show_sidebar() при выводе сайдбара. То есть всегда можно прописать своё обрамление виджетов. Например:
mso_show_sidebar('1', '<div class="widget widget_[NUMW] widget_[SB]_[NUMW] [FN] [FN]_[NUMF]"><div class="wrap">', '</div></div>');
@maxsite

This comment has been minimized.

Copy link
Owner Author

commented Mar 27, 2015

  1. Не хватает класса для ссылки редактирования
    Это касается как статей, так и комментов. Сейчас везде прописывается по умолчанию вообще ничего не задается, только через файл info-top это: right bg-yellow, почему бы просто не задать edit?
    А зачем, если используется type_foreach-файл? Если это уровень шаблона, то вебмастер делает что хочет.
@cuprum

This comment has been minimized.

Copy link

commented Mar 27, 2015

Хочу попросить по поводу вывода комментариев на сайте - чтобы их можно было отключить со стороны (из плагина) не ковыряя шаблон + какой-то хук на вставку. Тогда можно будет сделать плагин, элементарно подключающий любые сторонние комменты. Включили плагин - disqus (к примеру) заработал, а родные комменты исчезли.

@maxsite

This comment has been minimized.

Copy link
Owner Author

commented Mar 27, 2015

Нужно подумать. Юра, сделай отдельным тикетом, чтобы не потерялся.

Ещё. Я только что выложил все накопленные изменения с каркасом для нового шаблона. Старый удалил, поэтому сейчас любые старые шаблоны на dev-версии работать не будут! При переделке старых шаблонов, делайте так, чтобы все загрузки были из своего каталога, а не из shared (кроме того, что осталось).

@vimruler

This comment has been minimized.

Copy link

commented Mar 27, 2015

Хочу попросить по поводу вывода комментариев на сайте - чтобы их можно было отключить со стороны (из плагина) не ковыряя шаблон + какой-то хук на вставку. Тогда можно будет сделать плагин, элементарно подключающий любые сторонние комменты. Включили плагин - disqus (к примеру) заработал, а родные комменты исчезли.

Да, в плане вывода комментариев нужно больше гибкости. В идеале именно, чтобы можно было на хук вешать свою систему комментирования через плагин и при этом не ковырять шаблон (или только задавать через type_foreach оформление - но это уже задача для плагина).

@cuprum

This comment has been minimized.

Copy link

commented Mar 27, 2015

@SWAT727

This comment has been minimized.

Copy link

commented Mar 27, 2015

Что такое b? 😄 Я не знаю, как это правильно называется.
Например в type/home/units/ статьи выводятся через эту хрень:

$b->output( array (
                'block_start' => '<div class="cf"><h2>' . $cat['category_name'] . '</h2>',
                'block_end' => '</div>',
                'content_chars' => 200,
                'thumb_width' => 150,
                'thumb_height' => 100,
                'thumb_class' => 'left',
                'line1' => '<div class="anons">[title]',
                'line2' => '[thumb]',
                'line3' => '',
                'line4' => '</div>',
                'content_cut' => '...',
                'title_start' => '<h4>',
                'title_end' => '</h4>',
            ));

И вообще, чем отличаются выводы записей через p и b, а то я как маленький мальчик с презервативом - шарики надувать получается, а вот для чего они нужен не догадываюсь. 😄

По поводу структуры вывода виджетов.
Ту наводку, что ты мне дал, спс. Но главная проблема остается актуальной. Я при помощи нее в сам виджет див не запихаю.

Потому как прошу не сам виджет обрамить, а его контент. То есть нужно именно что бы шло widget_header(шапка) + widget_content(контент). Потому как очень часто из за этого приходится придумывать костыли по оформлению виджетов, что бы они одинаковые были.
Ну и кстати, вот тебе идея - разбей вывод самого виджета. Что бы можно было и шапки вывод задать, и контента самому.

А зачем, если используется type_foreach-файл? Если это уровень шаблона, то вебмастер делает что хочет.
Пора бы уже ближе к людям быть. А то у нас те, кто умеет шаблоны делать - раз два и нету нифига. И то там половина - редкосный самопал...
Так вот, отвечаю зачем: Что бы новичкам легче верстать было. Не все знают про твой инфотоп.

@maxsite

This comment has been minimized.

Copy link
Owner Author

commented Mar 28, 2015

Может тогда ты перестанешь себя вести как маленький мальчик из детского садика?

«Хрень» — это для детей. Для нормальных людей — это класс для вывода блоков записей Block_pages. Сделан он как раз для того, чтобы упростить написание кода в шаблоне при выводе блоков. Аналогично Page_out — шаблонизатор вывода записей, чтобы не писать сложный код, а просто задать параметры и свою разметку.

По поводу структуры вывода виджетов.
Ту наводку, что ты мне дал, спс. Но главная проблема остается актуальной. Я при помощи нее в сам виджет див не запихаю

Автоматизировать процесс разбивки виджета не получается. Была попытка, но она оказалась неудачной. Поэтому структура виджетов полностью ложится на разработчика. В текущем варианте она позволяет кастомизировать любой виджет практически произвольно только через CSS. У всех виджетов есть общий класс .widget. Если у тебя есть вопросты по вёрстке, то сделай отдельный тикет для обсуждения.

Так вот, отвечаю зачем: Что бы новичкам легче верстать было. Не все знают про твой инфотоп.

Моя задача — только предусмотреть возможность. Ты же ведешь шоу, расскажи про info-top новичкам.

@SWAT727

This comment has been minimized.

Copy link

commented Mar 28, 2015

Ну если бы я себя не вел как маленький мальчик из десткого садика - я до сих пор не знал бы как называются твои B и P. Теперь знаю - СПС. Чувсвую, что подрос 👍

От себя добавлю: Хрень - это для всех. Для программистов - это класс.
Не веришь? Проведи опрос среди своей аудитории, и увидишь, как обстоят дела на самом деле. Программистов там раз - два и обчелся.
Ладно, проехали

Если у тебя есть вопросты по вёрстке, то сделай отдельный тикет для обсуждения.

Макс, у меня вопросов по верстке нету. Я прекрасно заю, как сделать оформление чего угодно. Просто разбивка виджета на 2 блока: widget_header и widget_conent - намного бы упростила верстку. Ты просил по ней советов - я даю.

Если автоматизировать процесс нельзя - возможно тогда ты сможешь вшить блок widget_conent?? Что бы все видежеты выводились по одной структуре. От этого верстка старых шаблонов не слетит.

Моя задача — только предусмотреть возможность. Ты же ведешь шоу, расскажи про info-top новичкам.

И расскажу! Если будут вопросы по названиям и другoму - к тебе можно обращаться в личку? 😄

@maxsite

This comment has been minimized.

Copy link
Owner Author

commented Mar 28, 2015

От себя добавлю: Хрень - это для всех. Для программистов - это класс.
Не веришь? Проведи опрос среди своей аудитории, и увидишь, как обстоят дела на самом деле. Программистов там раз - два и обчелся.

Я на эту «хрень» потратил кучу времени, чтобы такие же дети-непрограммисты могли хоть что-то делать и настраивать. Если ты не в состоянии разобраться где какой класс и как он используется, то это уже твои проблемы. Свой жаргон оставь для своей аудитории. У нас тут не диджейское шоу и никто никого развлекать не собирается.

@SWAT727

This comment has been minimized.

Copy link

commented Mar 28, 2015

Да уж, я ребенок... а тебя, взрослого дядьку, так от слова "хрень" разнесло :))) Чего ты взъелся то?? Я тебя не развлекаю, если что, и хватит искать в моем поведении подвоха - его нет.

Давай конструктивно:

Ты попросил высказать пожелания - я высказал. Но высказал на своем жаргоне по той простой причине, что толкового руководства по МаксСайт днем с огнем не сыскать. От куда мне знать как все это называется? Сказал как умею.

А то сейчас получается - что бы высказать пожелания по изменению макссайта - надо сначала выучить PHP и весь ваш слэнг. Люди разные, интересы тоже. Мне вот PHP не светит никогда. Нет желания и интереса. Так что теперь - заткнуться и молчать в тряпочку??

А если тебе что-то в моих словечках не нравится, можно не тыкать меня лицом в дерьмо и не унижать, а просто сказать:

- Серёга, это называется КЛАСС, и впредь так и называй, а то меня от слова хрень корёжит.

К твоей работе и к тебе я отношусь с уважением. И к твоим просьбам всегда прислушиваюсь. За что такое отношение ко мне... не понимаю. Вроде я не Путин 🙏

PS:

Если ты не в состоянии разобраться где какой класс и как он используется, то это уже твои проблемы.

Я прекрасно разбираюсь в макссайте на уровне "создай нормальный шалон сам". Все изучал долго и кропотливо методом тыка и подстановок. И не смотря на то, что я могу на данный момент встроить на сайт что угодно и вывести как мне угодно любую страницу на движке, я до сих пор толком не знаю в чем предназначение многих вещей (не буду говорить хреней).

Наприме те же классы:
Я знаю как вывести запись/записи через page_out, block_pages, знаю как настроить вывод и т.д. Но в чем принципиальное различие между ними, с какой целью ты создавал одни и другие - вот этого для меня загадка.

И таких вещей пруд пруди, знаю как заставить работать, а недоговорок в голове целая куча.

И такая ситуация не у меня одного. У большинства детей-непрограммистов она намного хуже. Несмотря на то, что ты все сделал для нас отсталых.

@vimruler

This comment has been minimized.

Copy link

commented Mar 29, 2015

Как на счёт внедрения семантической разметки?

В частности, можно было бы разметить меню согласно http://schema.org/SiteNavigationElement, но для этого нужно править mso_menu_build или создавать форк (ради пары мелких изменений).

@maxsite

This comment has been minimized.

Copy link
Owner Author

commented Mar 29, 2015

Илья, делай отдельный тикет по меню и желательно примеры что должно получится в итоге.

@vimruler

This comment has been minimized.

Copy link

commented Apr 1, 2015

Кстати, хотелось бы ещё подвергать кастомизации тексты стандартных писем. Оформить отдельный тикет?

@maxsite

This comment has been minimized.

Copy link
Owner Author

commented Apr 1, 2015

Да, все пожелания лучше отдельными заданиями оформлять.

@maxsite maxsite closed this May 8, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.