0 Пользователей и 1 Гость просматривают эту тему.
  • 553 Ответов
  • 40804 Просмотров
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Решил и я добавить в эту копилку. Итак - ловите!

MiniCCK - это плагин к компоненту com_content Joomla, позволяющий добавить контенту произвольное количество дополнительных полей разного типа.

Поддерживаемые типы полей:

  • Выпадающий список
  • Радиокнопки
  • Чекбоксы
  • Строка
  • Большое текстовое поле
  • Изображение

 Плагин писался по мотивам статьи Adding custom fields to the article component Franz Korntner. Получилось гибкое и простое решение проблемы добавления полей к контенту Joomla.

Из недостатков я вижу только два - необходимость применять патч к компоненту com_content и единственный тип контента, который можно создать. Но второй недостаток - это не совсем недостаток, для Joomla есть достаточно компонентов CCK которые могут делать просто невообразимые вещи с контентом, а наш плагин занмает нишу между обычным контентом и компонентом CCK, которая достаточно востребована. Многие из-за одного дополнитеьного поля устанавливают CCK что зачастую не оправдано.

С первым недостатком к сожалению приходится мириться т.к. в ветке 2.5 этот функционал реализован не будет, но в ветке 3 есть большая и оправданная надежда получить нужный для плагина функционал из коробки. На 2.5 придется после каждого обновления проверять работоспособность плагина и в случае поломки заново устанавливать патч, хотя вероятность такого разворота событий очень мала - код 2.5 заморожен, правятся только ошибки и дыры.

Описание плагина, скачать здесь.

Установка, настройка и работа плагина описана в этой статье.

Старница проекта на гитхабе здесь.

MiniCCK на JED здесь.
« Последнее редактирование: 02.02.2015, 18:01:45 от Arkadiy »
*

Sergey Romanov

  • Давно я тут
  • 603
  • 19 / 0
Удачного вам плаванья.
Лучший ССК всех времен Cobalt
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Посмотрел пакет обновления с 2.0.8 на 2.0.9 и огорчился. В пакете присутствуют все php файлы Joomla без разбора, правленные они или нет, так-что патч с каждым обновлением будет затираться. Сравнил файлы патча с файлами пакета обновления, оказалось что только в одном файле есть изменения (относительно непатченных файлов 2.0.6, для которой изготовлен патч) и то незначительные, можно накатывать старый патч, хотя я сделал новый.
*

voland

  • Легенда
  • 10593
  • 564 / 111
  • Эта строка съедает место на вашем мониторе
Патчи увы не айс.
Может есть возможность вынести всё в системные плагины?
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Смысла нет, этот патч продвигается и с большой долей вероятности триггеры, которыми отличается патч от исходных файлов, появятся в Joomla 3. Ну а переспектива ессно за ней.
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
К тому-же в тех местах, где установлены триггеры для MiniCCK, нет никаких триггеров, в т.ч. и системных. А если обрабатывать каким-то образом весь контент страницы, для выискивания места куда вставлять свое содержимое, всеравно необходимо поставить какую-то метку. Ну или я чего-то не понимаю.
*

Sergey Romanov

  • Давно я тут
  • 603
  • 19 / 0
Смысла нет, этот патч продвигается и с большой долей вероятности триггеры, которыми отличается патч от исходных файлов, появятся в Joomla 3. Ну а переспектива ессно за ней.
Я тоже сильно верил в Joomla очень долго. В то что ни сделают то и то уже в следующей версии. Но оказалось что даже с разумными довадами этого до сих пор нету. Поэтому и пришлось делать ССК не основаный на Joomla. И честно сказать рад что принял такое решение когда читаю посты как эти. :) Извините конечно за иронию :)
Лучший ССК всех времен Cobalt
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Ну я не намерен останавливаться на этом CCK, у меня в планах, правда не очень определенных, полноценный ССК, ориентированный на профессионалов, аналог информационных систем в HostCMS, простой в управлении и создании пользовательского интерфейса.
*

Sergey Romanov

  • Давно я тут
  • 603
  • 19 / 0
Ну я не намерен останавливаться на этом CCK, у меня в планах, правда не очень определенных, полноценный ССК, ориентированный на профессионалов, аналог информационных систем в HostCMS, простой в управлении и создании пользовательского интерфейса.
Это прекрасно. Но вот главный вопрос всеже остается. Будет ли это расширение контента Joomla как у сиблод или это будет самостоятельное расширение. Я советую второе.
Лучший ССК всех времен Cobalt
*

voland

  • Легенда
  • 10593
  • 564 / 111
  • Эта строка съедает место на вашем мониторе
Блин.
CCK это хорошо.

Но когда их уже штук 10 изобретать очередной велосипед?

Либо что-то, принципиально отличающееся от конкурентов, либо даром не надо, только внимание распылять. ИМХО
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Думаю про второе. Так всем удобнее.
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Блин.
CCK это хорошо.

Но когда их уже штук 10 изобретать очередной велосипед?

Либо что-то, принципиально отличающееся от конкурентов, либо даром не надо, только внимание распылять. ИМХО
Ну так вот я и думаю, хотя резон есть и большой, я бы сравнил нынешние ССК для Joomla и информационные системы HostCMS как кирпичики и пластелин.
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
*

slepoy

  • Давно я тут
  • 721
  • 23 / 0
  • Тотальная шизофазия
Во времена Joomla 1.5 использовал хак ядра для добавления доп. полей и после миграции на J2.5 все было прос*ано.
Т.к. сайт существующий и материалов много, то "переносить" их из com_content в K2, SebLod и тому подобное просто не имеет смысла - не только изменятся ссылки на материалы, но и в модулях (работающих только с com_content) "перенесенные" материалы отображаться не будут.

Потому MiniCCK - это идеальный вариант для меня.

Но пока на тестовом сайте не удалось добиться работоспособности плагина с типами следующих полей: чекбоксы и выпадающий список (см. скриншот). Не разобрался куда вставлять двойные двоеточия

Буду благодарен за помощь. Спасибо.

Обновлено: следовало сделать так:
Цитировать
PC::PC
Mac::Mac
PS3::PS3

ПС: а рассматриваете ли возможность разработки плагина для поиска по данным полям?

[вложение удалено Администратором]
« Последнее редактирование: 09.03.2013, 23:48:15 от slepoy »
Помог? Поставь(те) плюс в репутацию.
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Это сделать не проблема, проблема в том, что с каждым релизом готовить новый хак не айс, по этому плагин пока в подвешенном состоянии, будут внедрены изменения из хака в ядро - будет продолжение банкета, не будут - видимо придется свертывать.
*

Sergey Romanov

  • Давно я тут
  • 603
  • 19 / 0
видимо придется свертывать.
Задесь других вариантов нет. Зря надеешся что они что то сделают что тебе надо. Даже если ты попытаешься убедить что это важная вещь тебя могут просто проигнорировать. И даже если они это поправят то завтра тебе понадобится что то еще. И рано или позно все равно придется сворачивать или жить с этим и выпускать хаки.

Именно по этому мы свое ССК делаем не зависимым от Joomla.
Лучший ССК всех времен Cobalt
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Ну пока надежда есть. А потраченного на этот плагин вечера не так жалко. Так что будем подождать  :)
*

Sergey Romanov

  • Давно я тут
  • 603
  • 19 / 0
Продолжать обязательно надо просто надо поменять вектор. Надо стать независимым от Joomla.
Лучший ССК всех времен Cobalt
*

NightGuard

  • Живу я здесь
  • 2932
  • 378 / 7
  • вжжж-вжжж
Продолжать обязательно надо просто надо поменять вектор. Надо стать независимым от Joomla.
Хватит флудить.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма

skype: nightguardsrussia - только по рабочим вопросам, любые консультации - платные!
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Продолжать обязательно надо просто надо поменять вектор. Надо стать независимым от Joomla.
Сергей, а вам зачем очередной конкурент? :)
*

Sergey Romanov

  • Давно я тут
  • 603
  • 19 / 0
Сергей, а вам зачем очередной конкурент? :)
Не смеши :) И не льсти себе так :)

О конкуренции ни какой речи не идет.
Лучший ССК всех времен Cobalt
*

Очередной вебмастер

  • Давно я тут
  • 768
  • 55 / 0
  • лысый умный дядя
Блин, как раз то что нужно для простого каталога на com_content.
Можно ли как то добавить возможность исключать категории? Чтоб не во всех крепились поля?
Как на сайте можно манипулировать выводом полей(местом расположения и т.п.)
Сайты на Joomla, разработка и поддержка
----------
Помог ответ - жми плюс!
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Сделать все можно, но я все жду когда джумловцы триггеры нужные поставят в систему. Вроде обещали, а вроде и не делают. А хаки к каждому апдейту делать мне как-то не с руки, по этому и разработка здесь врядли продолжится. Разве что совсем скучно станет.
Поля на фронт выводятся скопом,
Код
 $article->text = $html.$article->text; 
$html - это вывод плагина. Т.е. он цепляется перед контентом.
« Последнее редактирование: 14.05.2013, 21:42:37 от Arkadiy »
*

smart

  • Администратор
  • 6485
  • 1317 / 15
  • Хочешь сделать хорошо — сделай!
Сделать все можно, но я все жду когда джумловцы триггеры нужные поставят в систему.
А каких именно событий не хватает?
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Эх, я сейчас уже и не помню, надо сделать новый хак на 3.1.1 - в процессе все будет видно. Как сделаю - отпишусь. Но не быстро, занят очень.
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Изменения для Joomla версии 3.1.1:
\administrator\components\com_content\models\article.php со строки 318 прямо перед
Код
return $item;
Код
//Arkadiy huck
        // Get the dispatcher and load the content plugins.
        $dispatcher = JDispatcher::getInstance();
        JPluginHelper::importPlugin('content');
        // Trigger the data preparation event.
        $dispatcher->trigger('onContentPrepareData', array('com_content.article', $item));
        //End of Arkadiy huck

\components\com_content\models\article.php после 233 строки перед
Код
$this->_item[$pk] = $data;
Код
//Arkadiy huck
                // Get the dispatcher and load the content plugins.
                $dispatcher = JDispatcher::getInstance();
                JPluginHelper::importPlugin('content');

                // Trigger the data preparation event.
                $dispatcher->trigger('onContentPrepareData', array('com_content.article', &$data));
                //End of Arkadiy huck

\components\com_content\models\form.php после 142 строки перед
Код
return $value;

Код
//Arkadiy huck
        // Get the dispatcher and load the content plugins.
        $dispatcher = JDispatcher::getInstance();
        JPluginHelper::importPlugin('content');

        // Trigger the data preparation event.
        $dispatcher->trigger('onContentPrepareData', array('com_content.article', &$value));
        //End of Arkadiy huck

\components\com_content\views\form\tmpl\edit.php после строки 71 в список
Код
<!-- Arkadiy huck -->
                <?php
                // Get the form fieldsets.
                $fieldsets = $this->form->getFieldsets();
                foreach ($fieldsets as $name => $fieldset) :
                    if (in_array($fieldset->name, array('image-intro', 'image-full'))) :
                        // this set has already been displayed
                        continue;
                    endif;
                    ?>
                    <li><a href="#extrafield-<?php echo $name; ?>" data-toggle="tab"><?php echo JText::_($fieldset->label);?></a></li>
                    <?php endforeach;?>
                <!-- End of Arkadiy huck -->

перед <div class="tab-pane" id="metadata"> в районе 320 строки
Код
<!-- Arkadiy huck-->
                <?php
                // Get the form fieldsets.
                $fieldsets = $this->form->getFieldsets();
                foreach ($fieldsets as $name => $fieldset) :
                    if (in_array($fieldset->name, array('image-intro', 'image-full'))) :
                        // this set has already been displayed
                        continue;
                    endif;
                    ?>
                <div class="tab-pane" id="extrafield-<?php echo $name;?>">
                    <?php
                    foreach($this->form->getFieldset($fieldset->name) as $field): ?>
                        <?php if ($field->hidden): ?>
                            <?php echo $field->input; ?>
                            <?php else: ?>
                            <div class="control-group">
                                <div class="control-label">
                                    <?php echo $field->label; ?>
                                </div>
                                <div class="controls">
                                    <?php echo $field->input; ?>
                                </div>
                            </div>
                            <?php endif; ?>
                        <?php endforeach; ?>
                </div>
                    <?php endforeach;?>
                <!-- End of Arkadiy huck -->
\administrator\components\com_content\views\article\tmpl\edit.php
после 73 строки
Код
			<!-- Arkadiy huck -->
<ul class="nav nav-tabs">
                <?php
                // Get the form fieldsets.
                $fieldsets = $this->form->getFieldsets();
                foreach ($fieldsets as $name => $fieldset) :
                if (in_array($fieldset->name, array('basic', 'editorConfig', 'basic-limited', 'attribs'))) :
                // this set has already been displayed
                continue;
                endif;
                ?>
                    <li><a href="#extrafield-<?php echo $name; ?>" data-toggle="tab"><?php echo JText::_($fieldset->label);?></a></li>
                <?php endforeach;?>
</ul>
            <!-- End of Arkadiy huck -->

после 242 строки
Код
//Arkadiy huck
           // Get the form fieldsets.
           $fieldsets = $this->form->getFieldsets();
           foreach ($fieldsets as $name => $fieldset) :
                            if (in_array($fieldset->name, array('basic', 'editorConfig', 'basic-limited', 'attribs'))) :
                                // this set has already been displayed
                                continue;
                            endif;
                            ?>
                        <div class="tab-pane" id="extrafield-<?php echo $name;?>">

                            <?php if (isset($fieldSet->description) && trim($fieldSet->description)) : ?>
                            <p class="tip"><?php echo $this->escape(JText::_($fieldSet->description));?></p>
                            <?php endif;

                            foreach($this->form->getFieldset($fieldset->name) as $field): ?>
                                <?php if ($field->hidden): ?>
                                    <?php echo $field->input; ?>
                                    <?php else: ?>
                                        <div class="control-group">
                                            <div class="control-label">
                                                <?php echo $field->label; ?>
                                            </div>
                                            <div class="controls">
                                                <?php echo $field->input; ?>
                                            </div>
                                        </div>
                                    <?php endif; ?>
                                <?php endforeach; ?>


                        </div>
                        <?php endforeach;
                        //End of Arkadiy huck

На 3.1.1 не проверял, только сделал, скорее всего потребуется небольшая доработка там, где выводится HTML (форматирование панели управления изменилось).
Ну и поскольку плагин писался по мотивам статьи Adding custom fields to the article component Franz Korntner http://docs.joomla.org/Adding_custom_fields_to_the_article_component, возможно он сделан не оптимально и все можно улучшить или упростить, в частности это касается вывода HTML в панель управения, возможно достаточно будет вывести туда какое-либо дополнительное свойство, которое плагин будет заполнять готовым HTML.
« Последнее редактирование: 15.05.2013, 07:00:35 от Arkadiy »
*

smart

  • Администратор
  • 6485
  • 1317 / 15
  • Хочешь сделать хорошо — сделай!
Кстати интересно, а почему ContentModelForm наследовали от ContentModelArticle (JModelItem), когда логичнее было бы от JModelForm. Это позволило бы обойти как минимум одну модификацию - JModelForm есть событие onContentPrepareForm.
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Сам патч, проверенный, вид редактирования контента изменен т.к. табы теперь перешли в JHTML http://argens.ru/my-extension/skachat/minicck/minicck-1-0/patch-3-1-1-zip?format=raw
Кстати интересно, а почему ContentModelForm наследовали от ContentModelArticle (JModelItem), когда логичнее было бы от JModelForm. Это позволило бы обойти как минимум одну модификацию - JModelForm есть событие onContentPrepareForm.
Это я не знаю, возможно не подумали.
*

Arkadiy

  • Гуру
  • 5269
  • 461 / 2
  • Крепитесь, други.
Выпущена версия 1.1 плагина. С этой версии плагин не требует хака ядра. Совместим с Joomla 3.1.5.
Новые плюшки:
1. Вывод фронта сделан через шаблон. 
2 .В настройки добавлены опции выбора шаблона и места вывода плагина (сверху или снизу контента).
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поиск аналогичного конструктора контента

Автор TRIGUN

Ответов: 0
Просмотров: 660
Последний ответ 24.07.2017, 02:12:13
от TRIGUN
MiniCCK - вывод полей в модулях

Автор Nikolay Blinov

Ответов: 1
Просмотров: 884
Последний ответ 28.06.2016, 02:31:25
от Nikolay Blinov
Как сделать каталог в Joomla?

Автор tao2en

Ответов: 8
Просмотров: 1923
Последний ответ 11.03.2016, 11:14:22
от FitMe
Ребят кто сможет сделать модуль для Joomla 3 с функционалом описанным ниже

Автор foxkirov

Ответов: 4
Просмотров: 878
Последний ответ 14.01.2016, 21:39:41
от foxkirov
Joomla 3.x. Каталог предприятий с прикрепленными файлами

Автор andtorino

Ответов: 3
Просмотров: 3075
Последний ответ 06.01.2016, 03:23:11
от bato