Модуль "Архив блога"

Аватар пользователя itcrowd72

Когда-то давно у меня был блог на платформе гугла blogger.com Там был хороший блок "Архив блога", который разбивал записи по месяцам

Сейчас блог на Drupal 7 и мне захотелось такой же блок. Готовых решений найдено не было, были лишь вопросы на форумах и редкие ответы. Собрав всю информацию воедино, я сделал модуль. Он создает представление (view), и с помощью JavaScript можно сворачивать разворачивать данные.

Посмотреть "вживую" можно здесь

Скачать модуль можно с официальной страницы проекта

Поучаствовать в разработке можно на GitHub

Внести пожертвование на развитие модуля можно тут

Тип материала:
Версия Drupal:
17 Спасибо

Комментарии

Аватар пользователя multpix
multpix 2 месяца назад 1

Сенкс за труды!

Аватар пользователя Van'Denis
Van'Denis 2 месяца назад 1

Спасибо!
На главной.

Аватар пользователя Niklan
Niklan 2 месяца назад 2

Не понимаю зачем это заворачивать в модуль, да ещё и криво. Такой функционал тащить аж модулем вообще не имеет никакого смысла. Проще написать статью с экспортом + JS файлом, и объяснить,как это подключить в своем модуле.

1. JS написано неверно, с ним будет оверхеад по памяти если на странице есть AJAX, он просто с каждым разом будет увеличивать количество вызовов ивентов и их биндов x2.
2. Даже экспорт из вьюса кривой. В t() завёрнуты русские слова.

Я ничего против не имею, я сам начинал с херни, но это не тянет на целый модуль, а если уж и оформлять, то сделать надо по стандартам и правильно.

Аватар пользователя gun_dose
gun_dose 2 месяца назад

За оверхед при аяксе прошу обосновать.

0 Спасибо
Аватар пользователя Niklan
Niklan 2 месяца назад 2

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

1. Загрузилась страница 1 событие
2. Произошел реаттач бихейворов (AJAX или что-то ещё из вне) - 2 события
3. Аналогично - 4 события
4. 8
5. 16
6. 32

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

В случае с js из модуля, там не просто добавляются и убираются классы, а ещё различные find() each() и т.д. Всё это также будет по экспоненте расти с вызовами.

ИМХО, вообще такие раскрытия можно сделать вообще без JS на CSS.

Заметил, что без бихейворов. Хз, как там без бихейворов, но вроде аналогично должно вести. Как минимум нужно переписывать на бихейворы где это всплывает моментально. Так как js абсолютно не по стандартам drupal. Как и впрочем .module файл. Там ни стиль не соблюдается, ни правильное использование t(). Смею предположить, что модуль собирался из экспорта фич.

Аватар пользователя gun_dose
gun_dose 2 месяца назад

Бред. Полнейший бред.

Цитата из кода:

(function ($) {

$(document).ready(function() {
  // init: collapse all groups except for the active path
  var a = false;
  $(".archive-block ul").each(function(i) {
    if ($(this).find("a.active").size() > 0) {
      $(this).siblings("h3").children(".collapse-icon").text("▼");
      a = true;
    }
    else {
      $(this).hide();
    }
  });
  if (!a) {
    $(".archive-block").find("h3").first().children(".collapse-icon").text("▼");
    $(".archive-block").find("ul").first().show();
  }

 // click event: toggle visibility of group clicked (and update icon)
 $(".archive-block h3").click(function()
 {
  var icon = $(this).children(".collapse-icon");
  $(this).siblings("ul").slideToggle(function()
  {
   (icon.text()=="▼") ? icon.text("►") : icon.text("▼");
  });
 });
});

})(jQuery);

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

0 Спасибо
Аватар пользователя Niklan
Niklan 2 месяца назад

Во-первых, да, событие выполнится один раз, и не будет ошибки описанной мной.
Во-вторых, это неправильно написанный JS, из-за чего его обертка под стандарты приведет к ошибкам описанных мной.
В-третьих, причем тут биндится на ajax? Behaviors вызываются НЕЗАВИСИМО от того биндится ли твой js на что-то или нет. После каждого AJAX (абсолютно, не важно кем и где вызван на странице), после каждого реаттача и т.д, все, абсолютно все бихейворы перезапускают и оттуда лезут дубли.

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

0 Спасибо
Аватар пользователя gun_dose
gun_dose 2 месяца назад 1

Нет бихэйворов - нет привязки к аяксу. Всё просто.

Насчёт обёртки под стандарты - можно ссылку на первоисточник?

Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
0 Спасибо
Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
Аватар пользователя Studio VIZA
Studio VIZA 2 месяца назад 1

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

Аватар пользователя gun_dose
gun_dose 2 месяца назад 1

А вот тут спешу вас огорчить. Сам блок не аяксовый, поэтому работать будет 100%. Более того, поскольку скрипт не в бихэйворе, то и нет нужды добавлять once. Так что можете приносить автору публичные извинения.

Аватар пользователя dgastudio
dgastudio 2 месяца назад

Леш, есть стандарты. или следуем, или ...

0 Спасибо
Аватар пользователя ArmRus
ArmRus 2 месяца назад 2
gun_dose написал:
Сам блок не аяксовый, поэтому работать будет 100%. Более того, поскольку скрипт не в бихэйворе, то и нет нужды добавлять once. Так что можете приносить автору публичные извинения.

А что значит блок не аяксовый? А если мне нужно будет аяксом подгрузить этот блок, вместе с вьюшкой и вывести на странице? Как быть в данном случае?
Стандарты кода не зря придумали (https://www.drupal.org/docs/develop/standards/javascript/javascript-coding-standards)
в 2-х словах объясню как это работает. Когда загружается сайт, выполняется AJAX команда или просто вызов Drupal.attachBehaviors(), в этот момент срабатывают все скрипты, который упакованы в behaviors. Автор молодец, слов нет, и никто его не оскорблял, чтобы извиняться. Вопрос в том, что модуль оформлен не по друпал-стандартам, есть логические ошибки, и на главной странице такое публиковать не правильно. Так же я бы порекомендовал выгрузить модуль на Drupal.org хоть в песочницу, и скинуть ссылку, найдутся добрые люди, которые помогут поправить стандарты и логические ошибки, после этого можно смело релизить и публиковать на главной. Так же есть хороший сервис https://pareview.sh/ который поможет проверить на валидность стандартам кода.

Аватар пользователя gun_dose
gun_dose 2 месяца назад

Прошу прощения, но где там в стандартах кода есть хоть что-то об обязательном использовании behaviours?

«А что значит блок не аяксовый? » - то и значит, что из коробки вывод блока идёт без использования аякса.
«А если мне нужно будет аяксом подгрузить этот блок» - очень и очень сомнительный юзеркейс грузить именно этот блок аяксом.

0 Спасибо
Аватар пользователя Niklan
Niklan 2 месяца назад

Я выше написал, что любой аякс на странице с бихейвором приведет к дублям. Хоть там будет console.log(). Его вызовы начнут расти по экспоненте.

«Прошу прощения, но где там в стандартах кода есть хоть что-то об обязательном использовании behaviours?»

Там не написано, что прямо обязан приобязан использовать behaviours, но подразумевается на уровне ядра что все JS файлы, описанные в модулях и темах, не поставляемых третьими сотфинами, типа либы для слайдеров и т.д., будут следовать данному подходу. Стоит только прогуляться по самым популярным контрибам где есть JS, найти там подобное написание JS файлов нереально.

Ещё есть такая вещь как Best Practice, это когда негласно что-то становиться стандартом не описанном в стандарте. Самый яркий пример из 7-ки что модули надо делить в папке на /modules/custom и /modules/contrib. Этого нигде нет в стандартах, но все следуют данному Best Practice. Если человек пишет модуль, то он должен писать его по стандартам, особенно, если он хочет поделиться им с сообществом. Тут написано с нарушениями стандартов, мы лишь указываем автору на то, что так делать не стоить, а правильно так и так. Это будет ему очень полезно, если он не читал стандарты, то вот мы в комментариях ему ткнули на ошибки. Соблюдать стандарты надо. Если бы сейчас была бы модерация как и раньше на drupal.org на публикацию модуля, он бы не прошел с таким JS, его бы заставили переписать его на бихейворы, хоть ты там выше головы прыгни, и того что в стандартах прямым посылом не написано, только так и никак иначе, им было бы просто все равно. Это Best Practice, ядро написано так, и это надо использовать.

0 Спасибо
Аватар пользователя gun_dose
gun_dose 2 месяца назад 2

Стандарт - это стандарт, best practice - это best practice - не надо всё мешать в кучу.

Что касается аякса и бихэйворов - данный скрипт обёрнут только в $(document).ready(), соответственно, совершенно независимо от всех остальных скриптов на странице, скрипт из модуля всегда будет срабатывать только один раз, И никак иначе.

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

Аватар пользователя Niklan
Niklan 2 месяца назад 1

> В данном случае вы не тыкнули человека в ошибки

Я ткнул. Я написал два пунка. 1 — неверно написанный js, 2 — неправильное использование t(). Затем добавил что и сам код в .module не по стандартам отформатирован. Мне что дальше, переписать весь код нужно за автора? Он читать не умеет или его заблокировали в гугле? Стандарты написаны единые для всех, они не в закрытом доступе, кто мешает почитать? Это как не знание законов не освобождает от ответственности, тут аналогично. Не знание стандартов, не меняет того факта что код написан неверно.

> полное незнание принципов работы javascript

Я не заметил, что там изначально нет бихейвров да, в остальном я прав. Или вы мне скажите, что бихейворы не реаттачатся при аяксе? Если бы автор переписал на бихейворы, с вероятностью ~99.99% он словил бы ошибки, описанные мной, когда я думал, что там бихейворы, так как видно, что он ещё пока не читал стандарты и все новички попадаются на это поведение.

> пытаетесь выдать своё личное мнение (пусть и совпадающее с мнениями многих) за стандарт.

Это не личное мнение. Откройте код ядра наконец, там все JS из ядра написаны именно так, через переменную Drupal и бихейворы, там нигде нету jquery on ready. Когда всё ядро написано так, когда все топовые контриб модули написаны так, когда топ контрибуторы пишут так и все гайды пишут именно так, то выдавать это за моё личное мнение как-то глупо. Это факт, так пишется JS в Drupal нравится вам это или нет. Это указано в стандартах. Зачем там писать слово "обязательно"? Это не выборочные стандарты, хочешь юзаешь, хочешь нет, они есть и их надо использовать.

Мне кажется вы тут боритесь против стандартов, к чему это?

Аватар пользователя gun_dose
gun_dose 2 месяца назад

Я борюсь за справедливость и за понимание принципов работы бихэйворов. А то обчитаются хабра и потом сиди после них переписывай в теме все функции на once, чтобы менюшки после открытия колорбокса открывались только один раз, а не два.

"Или вы мне скажите что бихейворы не реаттачатся при аяксе?" - ещё раз поясню две вещи:
1. Бихэйворы никак не влияют на выполнение скрипта из данного модуля.
2. Использование бихэйворов не является обязательным.

ЗЫ: я знаю, что такое бихэйворы, как они работают, зачем они нужны и я даже их использую.
ЗЗЫ: с чего вы взяли что я против стандартов кода?

0 Спасибо
Аватар пользователя Niklan
Niklan 2 месяца назад

> А то обчитаются хабра и потом сиди после них переписывай в теме все функции на once, чтобы менюшки после открытия колорбокса открывались только один раз, а не два.

Разрабы ядра по-вашему тоже обчитались хабра что ли? А авторы контрибов топовых? Причем тут вообще хабр, эти стандарты написаны на орге.

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

> 2. Использование бихэйворов не является обязательным.

Зачем тогда ставить 2 пробела вместо 4 или просто таба? В стандартах же про это не написано "обязательно". Зачем тогда вообще их соблюдать если там нигде не написано ОБЯЗАТЕЛЬНО так и никак иначе. Тут уже несколько человек заикнулись про бихейворы, какой смысл спорить если так пишется JS в Drupal? Что вы хотите этим доказать? То, что "и так сойдет"? Нет не сойдет, если человек хочет писать код правильно, а не выборочно по стандартам, надо переписывать на behavior, так как это не библиотека третьих лиц. В добавок, это позволяет избавиться от jquery как зависимости там, где нужен небольшой код.

Вы видимо на drupal.org не публиковали модули и не проходили в своё время проверку пока её не упразднили? Там бы за такое ещё хлеще бы дизморалили чем тут. Я прошел эти круги ада, я знаю, что говорю. Там посылают модуль нафиг даже за забытую точку в комментарии или запятую. Бихейворы там пока не увидят даже дальше проверять не будут. И каждый такой косяк + 1-2 недели ожидания следующего ответа. Там никто ничего не напишет. Скажут не по стандартам, решайте проблемы, читайте доки, практически нулевая помощь. Тут же человеку сразу ткнули и посоветовали, что поправить и на что обратить внимание, если ему что-то не ясно и он не может понять\нагуглить, никто не запрещает ему спросить, чтобы ему помогли и направили на верный путь. Вот эта встряска, которую раньше делали на drupal.org, ОЧЕНЬ полезная, после того как там так подизморалят, начинаешь по стандартам писать не глядя. Идите в ядро тогда напишите, что там в 90% модулях не нужны бихейворы и хватит jquery on ready? Почему им никто так до сих пор не написал, или написал, но они не переписали? Потому что это стандарт.

https://www.drupal.org/docs/7/api/javascript-api/managing-javascript-in-drupal-7#behaviors

Прошу обратить внимание на то, что ещё описано на данной странице. Там четко написано про бихейворы и статья как их использовать от лулаботов. Также там написано, как правильно подключать JS в Drupal. Но нигде не написано, что это обязательно. Следовательно, можно делать вот так (реальный пример под рукой):

1

Аналогичные страницы есть и для CSS, но люди делают так:

2

Вы бы ты тоже так посоветовали так подключать js и css? Ведь в стандартах не написано что обязательно drupal_add_js() подключать в каком-то хуке, или что css запрещено подключать так как на скрине, я даже не знаю как такое назвать? Там ведь тоже не написано "обязательно". Понятное дело, что нет, аналогичная ситуация и с бихейворами.

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

Моё мнение, behaviours в данном случае обязательны, это по стандартам, а то что написано там, даже откинув стиль кода, не верно в реалиях друпала. Если вы считаете, что тут можно и так, пусть будет так. И предлагаю этот невнятную дискуссию закончить, ничего хорошего она уже автору не даст и нам тоже. Дальше уже решать самому автору, переписывать как-то, оставить так, или что-то ещё сделать. В любом случае ему уже тут написали все что нужно знать и куда копать чтобы сделать правильно, если что, он спросит.

0 Спасибо
Аватар пользователя sas@drupal.org
sas@drupal.org 2 месяца назад 1

А я предлагаю прежде чем на главную ставить, делать проверку:
- https://www.drupal.org/docs/develop/standards
P.S. Вообще это больной вопрос Open Source, жесткие правила могли бы съэкномить много времени и усилить результат.

Аватар пользователя P.Selfin@drupal.org
P.Selfin@drupal.org 2 месяца назад 2

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

Аватар пользователя multpix
multpix 2 месяца назад 2

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

Аватар пользователя gun_dose
gun_dose 2 месяца назад 1

Хотя форматирование - пробелы, отступы и т.д. - действительно не по стандартам))

Аватар пользователя Van'Denis
Van'Denis 2 месяца назад 1

На основании показанных фактов/недочётов и слов тс в заголовке, я снял публикацию с главной.
После исправления указанных недостатков публикация будет снова на главной (желательно написать/напомнить мне в лс)!

Теперь немного оффтоп по сказанным тут словам:
Любой желающий может опубликовать свою разработку связанную с друпалом на ресурсе drupal.ru. Это не запрещается, а даже приветствуется!
За любые недочёты или ошибки разработки полностью ответственен тс. По опыту знаю, что иногда со стороны лучше видны недочёты, т.к. разработчик просто их не всегда их замечает. Поэтому мы нужны друг другу, но критика должна быть конструктивна и обоснованна (я согласен с картинкой в топике :))).
Про новый раздел. Такой пункт уже есть, но он не является на данным момент в приоритетах.
Что касается проверять. Ребята, вы это и сделали!
В этой ветке много полезной информации как для тс так и для других разработчиков.
Получилась очень интересная дискуссия.
От меня лично - СПАСИБО!

Аватар пользователя dgastudio
dgastudio 2 месяца назад

можно уточнить, а почему топик без проверки, улетел сразу на главную / в твиттер?

0 Спасибо
Аватар пользователя multpix
multpix 2 месяца назад 1

Потому что я обратился к контент менеджеру, зная ТС по прошлым публикациям.
В свою очередь Денис поддержал начинание ТС, выгрузил топик на главную,
чем в свою очередь привлек внимание к обсуждению,
ТС получил быстрый отклик,
и, надеюсь, продолжит совершенствовать свои навыки.
Но самый полезный момент - внимание к пользователям, которые готовы делиться своими трудами.

Аватар пользователя Van'Denis
Van'Denis 2 месяца назад

Начну с вопроса: Что подразумевается под словом проверка?
На остальное я уже ответил выше, но мне не сложно повториться снова:

Цитата:
Любой желающий может опубликовать свою разработку связанную с друпалом на ресурсе drupal.ru. Это не запрещается, а даже приветствуется!

0 Спасибо
Аватар пользователя dgastudio
dgastudio 2 месяца назад 1

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

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

поэтому, мой совет, не выносить в топ топики, которые не наберут как минимум 20 комментов или 10 плюсов.

Аватар пользователя Van'Denis
Van'Denis 2 месяца назад

Спасибо за ваш совет и мнение.
Это будет учтено.

0 Спасибо
Аватар пользователя gun_dose
gun_dose 2 месяца назад
Niklan написал:
behaviours в данном случае обязательны, это по стандартам

Так где текст стандарта то? ))) По пробелам, например, в стандартах всё чётко описано. А по бихэйворам нет))

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

Кстати. Есть модули, использующие аякс, который не вызывает бихэйворс. Как, например, shs.

0 Спасибо
Аватар пользователя Niklan
Niklan 2 месяца назад 1

> Так где текст стандарта то? )))

https://www.drupal.org/docs/7/api/javascript-api/managing-javascript-in-drupal-7#behaviors

> Как, например, shs.

ну и пример. Модуль, который в вечном деве без стабильной версии. Ну ок

Drupal 7: http://cgit.drupalcode.org/shs/tree/js/shs.js?h=7.x-1.x — бихейворы
Drupal 8: http://cgit.drupalcode.org/shs/tree/js/shs.js?h=8.x-1.x — бихейворы

Если вы считаете, что бихейворы не обязательны, ваше право, но остальные считают иначе. И вы говорите мне что я навязываю своё мнение, когда я вам кидаю ссылки на оф. документацию по JS API, ссылаюсь на ядро, которое априори пишется по стандартам, могу кучу контриба с бихеворами привести которые в ТОП друпал контриба, а вы даже пример приводите который и то на бихейворах. О чем вообще разговор? Я же вроде ясную аналогию привел. На той же странице, которая по вашему мнению "не стандарт" написано как подключается JS, т.е. по вашему в template.php сразу после <?php писать drupal_add_js() это по стандартам, я верно понимаю? Ведь это, я напоминаю, указано на странице JS API и с вашей логики не является обязательным.

Аватар пользователя gun_dose
gun_dose 2 месяца назад

https://www.drupal.org/docs/develop/standards/javascript/javascript-coding-standards вот ссылка на стандарт. Здесь нет ничего об обязательности бихэйворов.

По схс - там совсем другая история - бихэйворы других модулей и темы не дёргаются, когда его аякс отрабатывает. Приходится его ловить вручную.

0 Спасибо
Аватар пользователя Niklan
Niklan 2 месяца назад

И всё на примерах с behavior… Я же говорю, я считаю, что они обязательны, я вижу это везде, в каждом контрибе и ядре, если вы считаете иначе, ваше право.

0 Спасибо
Аватар пользователя Van&#039;Denis
Van'Denis 2 месяца назад 2

Спасибо.
Ваше мнение будет учтено, если Вы уточните некоторые моменты:
а) Я против публикации слишком частных решений - что подразумевается под этими словами? В моём понимание любое решение человека - это частное решение. Как пример: то что я сейчас пишу Вам - это моё частное/личное решение.
б) решений, которые учат плохому - а кто решит плохое это решение или нет? убить человека хорошо или плохо? правильный ответ - плохо. А если нет другого варианта и это спасёт жизнь десяткам или сотням других людей? Правильный ответ - плохо, но...
в) Не хотелось бы, чтобы автор потом отвечал так - ответ автора, это его личное решение основанное на его мнении и интересах + культура/воспитание и много других неизвестных факторов влияющих на его решение. А то что Вы написали, так это Ваше личное желание, которое с силу обстоятельств может быть не реализуемо. Как пример: Эта тема, где тс увидел недочёты разработки. Это его личное решение, его личная разработка, если он отпишется - это будет его личный ответ основанный на фактах и обстоятельствах. Я уверен, что он полученную информацию проанализирует и подкорректирует свою разработку.
Получился немного философский оффтоп. Я постарался быть краток.

Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
0 Спасибо
Аватар пользователя itcrowd72
itcrowd72 2 месяца назад 3

Я исправил явные косяки в правилах кодирования:
1) Кое-где вместо двойного пробела оказалась табуляция
2) В функции создания представления я вообще забыл подвинуть код на один уровень вперед
3) Там же убрал русскоязычные настройки. На создание представления они и не влияют
4) Добавил фильтр "Тип=Запись блога" (почему-то в модуле не оказалось)
5) В JS файле я тоже исправил синтаксис, а также добавил behaviors

После правок прогнал модуль через Coder - тот ошибок не выявил.

Аватар пользователя multpix
multpix 2 месяца назад 1

Нормальная реакция на критику!

Аватар пользователя Van&#039;Denis
Van'Denis 2 месяца назад 1

Согласен.
Такая и должна быть реакция (отбросим эмоциональные моменты, которые тоже имели основания. Все мы - люди :))
Дискуссия получилась для многих нужной и полезной.
Для себя я сделал вывод, что впредь буду давать 24 часа (с момента публикации на форуме) для критики/замечаний перед публикацией на главную. Исключение - видеоматериал.
Пока закрепляю данную тему в верху списка, для возможности дальнейшего обсуждения/критики/дополнений.

Аватар пользователя multpix
multpix 2 месяца назад 1

А ты хотя-бы попервой, связывайся с авторами потенциально интересных материалов,
чтоб они не чувствовали себя брошенными)))

И будет нормуль!
Утрясли все моменты, критику прошли - и на главную.

Аватар пользователя itcrowd72
itcrowd72 2 месяца назад

От себя хотелось бы добавить, что 95% критики - это "стандарты кодирования", которые по сути на работу самого модуля никак не влияют. И пользователям Васе, Пете, Коле, которые захотят этот модуль поставить себе на сайт, абсолютно фиолетово как там модуль оформлен. Им главное, чтобы он работал.

0 Спасибо
Аватар пользователя sas@drupal.org
sas@drupal.org 2 месяца назад

> это "стандарты кодирования"
Никто не запрещает тебе кодировать как твоей душе угодно. Вопрос был только про публикацию на главную и здесь это важно, так как стандарты признаны сообществом.

0 Спасибо
Аватар пользователя Niklan
Niklan 2 месяца назад 2

«И пользователям Васе, Пете, Коле, которые захотят этот модуль поставить себе на сайт, абсолютно фиолетово как там модуль оформлен. Им главное, чтобы он работал.»

Такой подход допустим студентам и самозванцам, но никак не профессионалу и специалисту в своем деле. Если вам кажется, что фиолетово, то вы очень глубоко заблуждаетесь. Когда сайт будет нафарширован такими модулями, которые писали "главное, чтобы он работал", то каждая проблема будет приводить к большему кол-ву часов на решение проблемы, соответственно и цене правок за элементарные вещи, потому что проблемные куски придется кому-то переписывать нормально. Если такое всплывет, заказчик к такому разработчику больше не вернется никогда, так как посчитает что он сделал свою работу недобросовестно и окажется прав. Последствия очень реальные и очень ощутимые, как для исполнителя, так и для заказчика. Пренебрежение стандартам также в будущем повлечет проблемы при обновлении и производительности сайта, за что, опять же, будет переплачивать клиент. Таких работ полный themeforest с Drupal темами. Наверное, все кто там брал так друпал тему, пожалели в итоге. У меня есть такой сайт на поддержке, там уже слито на правки кратно больше заплаченного в начале и даже больше половины не исправили ещё, правим только по потребностям и когда уязвимые места дают о себе знать или мешаются делать дальше. Проект так собран, что переделывать прямо там нет никакого смысла, дешевле сжечь, и собрать с нуля, но так как проект не маленький, приходится как-то выкручиваться и решать то что есть здесь и сейчас. Па началу там было все шикарно, красиво, сайт развивался, наполнялся, а потом он все замедлялся, замедлялся, замедлялся (не говоря о других проблемах). В итоге при 10000 материалах, и порядка 90к комментариев, это всё начало так лагать, что не обращать внимание стало просто нереально. А все потому что сайт собрали "главное, чтобы работало", и всплыло это спустя годы, так как сайт был просто нафорширован php filter и прочим бредом. Разумеется, 90% вьюсов были с php filter, который приводил к запросу LIMIT 666666, а он к тормозам. Поначалу проблема решалась покупкой все дороже и дороже серверов, но потом настал момент, когда уже сервер стал пожирать больше чем стоит заплатить уже спецу за исправление проблем, хотя бы самых явных.

С таким подходом собирали походу Битрикс, почти все крупные проекты в итоге переписывают половину ядра, потому что оно изначально написано "главное, чтобы работало".

Я вас призываю, пока ещё начинаете, сразу пишите по стандартам. Выбор конечно за вами.

Аватар пользователя Niklan
Niklan 2 месяца назад 1

Теперь, переписав на бихеворы, вы столкнулись с той проблемой о которой я писал ранее, в самом моём первом комменте. Текущий js приведет к оверхеду. Бегло посмотрел, как минимум $(".archive-block ul") и $(".archive-block h3") вызывать через jquery once, дабы предотвратить повторные биндинги и вызовы.

Аватар пользователя itcrowd72
itcrowd72 2 месяца назад

Спасибо, сейчас исправлю

0 Спасибо
Аватар пользователя ArmRus
ArmRus 2 месяца назад 1

2 рекомендации:
1. Несколько раз обращаетесь к одному и тому же блоку - закешируйте его
пример:
var $archiveBlock = $(".archive-block");
после можно выборки делать по контексту:

$('ul',$archiveBlock).each...
$archiveBlock.find("h3")...

и.т.д.

2. Переменная "a" - переименуй ее. Чтобы было понятно для чего она определена сразу, при чтении кода.

Аватар пользователя itcrowd72
itcrowd72 2 месяца назад

Исправил. Сделал коммит в GIT

0 Спасибо
Это сообщение находится в тёмной материи. Вы можете изменить настройки просмотра тёмной материи в личном кабинете.
0 Спасибо