Перейти к публикации

Рекомендованные сообщения

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

Но с другой - если продолжать одну из основных идей API и Dle hack'a, затронутых в этой теме, а именно выработку более-менее общих стандартов при написании модулей, то, пожалуй, есть смысл предусмотреть в дистрибутиве специальную папку для модулей (пускай /engine/mymods или /snippets - не принципиально). Без такой папки каждый создатель модуля будет "пихать" свои файлы в совершенно разные части сайта, вплоть до создания своих собственных именных папок, типа "VasyaPupkinsMods" и в итоге (когда будет установлено 5-10 модов), придется помучиться, разбираясь, к чему какой файл относится. Это даже скорее мелочь, но от нее все равно может стать неприятно.

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

Ссылка на сообщение
Поделиться на других сайтах

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

мне нет, так как какой порядок должен быть решает сам владелец сервера, а не автор скрипта DLE. И гибкость как раз в том, что автор может объеденить свои модули в одну папку. Размещать внутри папки engine или расположить извне, решает сам автор модуля, а не разработчики DLE, в этом и есть гибкость, например глобальные моды, а не в один файл, можно огранизовать в отдельной папке, а для того чтобы антивирус вел ее учет, папку достаточно разместить в папке /engine/. Например в папке engine/mymods/. Только организацию решает автор мода, а не автор скрипта.

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

также вы сами себе противоречите здесь

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

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

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

честно не понимаю зачем это нужно на работе это ни как не скажется только усложнит жизнь пользователям

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах
модули должны лежать в отдельной папке, на одном уровне с папкой engine,
Золотые слова! :) Изменено пользователем Александр Медведев
Ссылка на сообщение
Поделиться на других сайтах

Насчёт стандартизации модулей - предлагаю в каждом модуле сделать мини-класс с тремя методами.

install, reinstall и unistall.

Смысл в том, чтобы модуль можно было как-раз устанавливать на автомате. Правда это будет работать только для модулей, которые не требуют изменения файлов DLE.

Далее можно сделать вот что...Сделать папку /engine/modules_src/ и туда складывать все библиотеки, которые могут понадобится модулям.

И делаем вот так:

//===============================================

// Include directory function

//===============================================

	function include_dir ($dir, $recursive = false)

		{

			$handle = scandir($dir);

			foreach ($handle as $file)

				{

					if ($file!='.' && $file!='..')

						{

							if (is_file($dir.$file))

								{

									include_once $dir.$file;

								}

							elseif (is_dir($dir.$file) && $recursive)

								{

									include_dir($dir.$file."/", true);

								}

						}

				}

		}

А потом просто include_dir(ENGINE_DIR."/modules_src/");

Главное, чтобы авторы модулей свои функции именовали с префиксом. Чтобы не было конфликта имён. Или же через классы. Это на выбор программиста.

Обсуждаем...

Ссылка на сообщение
Поделиться на других сайтах

Насчёт стандартизации модулей - предлагаю в каждом модуле сделать мини-класс с тремя методами.

install, reinstall и unistall.

это накладывает дополнительные условия для написания модулей не думаю что всем разработчикам это понравится прийдется ещё и FAQ писать как писать модули на DLE

Смысл в том, чтобы модуль можно было как-раз устанавливать на автомате. Правда это будет работать только для модулей, которые не требуют изменения файлов DLE.

модули не должны ни в коем случае изменять файлы DLE если какойто модуль нельзя установить не изменив файлов DLE то такие изменения необходимо вносить в дистрибутив. Хотя я думаю таких проблем не возникнет.

А вообще необходимо API развивать тоесть все низкоуровневые действия на уровне движка должно совершать API(это в идеале).

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

это накладывает дополнительные условия для написания модулей не думаю что всем разработчикам это понравится прийдется ещё и FAQ писать как писать модули на DLE

API и сниппеты тоже накладывают определённые условия.

Кто-то будет и хочет писать под стандарт, а кто-то нет.

Кстати, может сразу ещё реализуем события в DLE?

$dle->OnLogin();

$dle->OnLogout();

и т.п.

Ссылка на сообщение
Поделиться на других сайтах

Сделать папку /engine/modules_src/ и туда складывать все библиотеки, которые могут понадобится модулям
а нафик? :)

Кстати, может сразу ещё реализуем события в DLE?

$dle->OnLogin();

$dle->OnLogout();

нужная штука)
Ссылка на сообщение
Поделиться на других сайтах

Нафиг - чтобы при необходимости каких-то инклудов в модуле не нужно было редактировать исходники.

Ссылка на сообщение
Поделиться на других сайтах

Не понял - исходников чего? Движка? Так зачем инклудить целую папку с неизвестными "общими" компонентами? У каждого модуля свои функции и классы, их и используем :)

Изменено пользователем Александр Медведев
Ссылка на сообщение
Поделиться на других сайтах

также вы сами себе противоречите здесь

Цитата

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

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

И эта цитата из обсуждения другого вопроса. Не нужно применять мои цитаты и высказывания по поводу одних вопросах к другим вопросам. К тому же разработчик модуля это тоже конечный пользователь скрипта. Гибкость еще никогда и никому не вредила, DLE нигде и никогда никого не в чем не ограничивал, по крайней мере делал это настолько, насколько возможно. Такова политика скрипта, не ограничивать там где это возможно.

каждый разработчик будет писать так как ему захочется

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

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

Ссылка на сообщение
Поделиться на других сайтах

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

Кто вам это сказал, многие пользователи DLE выбрали его только потому что не знакомы с PHP а ваш движок можно полноценно использовать сразу после установки без доработок. По тойже причине так популярны сайты типа 4dle.ru(ни у одной другой CMS нет столько сайтов поддержки) потомо что многие пользователи сами не могут написать себе модули ктото даже написанные с первого раза установить не может, в вы их только больше запутаете.

Я не вижу практической необходимости ограничивать специальной папкой, а если нет необходимости, то и ограничения я лично тоже ставить не буду.
интересно зачем вы тогда создали в движке папку modules, inc, classes наверняка для удобства пользователей так чем этот случай такой особенный.
Ссылка на сообщение
Поделиться на других сайтах

Кто вам это сказал, многие пользователи DLE выбрали его только потому что не знакомы с PHP а ваш движок можно полноценно использовать сразу после установки без доработок. По тойже причине так популярны сайты типа 4dle.ru(ни у одной другой CMS нет столько сайтов поддержки) потомо что многие пользователи сами не могут написать себе модули ктото даже написанные с первого раза установить не может, в вы их только больше запутаете.

В чем путаница в инструкции по установке:

Скопируйте содержимое архива на сервер, а в шаблон такой то в нужном месте поставьте {include file="engine/mymod.php"} или любой другой путь.

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

Для себя, мне так удобно работать с кодом, я же пишу новые версии, а не кто-то.

Ссылка на сообщение
Поделиться на других сайтах

Для себя, мне так удобно работать с кодом, я же пишу новые версии, а не кто-то.

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

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

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

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

dlehack,

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

Ссылка на сообщение
Поделиться на других сайтах

Уважаемые коллеги!

Вы тут столкнулись с 2-мя казалось бы принципиальные позиции:

1-ая от Dlehack - о том, что нельзя устраивать мусорку на сайте, и все должно быть четко структурировано и лежать в одной специально отведенной папке.

С этим я согласен, когда есть структура и все лежит в одном месте - так гораздо удобнее + это создает стандарт, которому будут следовать разработчики.

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

Но 2 эти позиции не настолько принципиальны, чтобы зацикливаться на них. Решение ведь простое - создайте стандартную папку для модулей и в документации к этой новой функции движка укажите, что туда следует складывать модули. Но не ставьте ограничение по использованию модулей, лежащих в других папках. Если принципиально и очень нужно будет залить файлы модов в другую папку, он это сделает. Кому же не надо - пускай заливает в папку предусмотренную для этого по умолчанию. По-моему, это неплохой компромисс.

Давайте лучше обсудим (точнее вы обсудите ;) ), как сделать вывод параметров управления модами в админке. Ведь после реализации удобного подключения модов, придется решать и этот вопрос. Спасибо за внимание.

Ссылка на сообщение
Поделиться на других сайтах

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

привидите хотябы один пример где это может понадобиться.

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

Хотя идея подключать вот так {...="modules.php?p1=1&p2=2"} мне нравится но теги лучше разные использовать.

Ссылка на сообщение
Поделиться на других сайтах

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

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

привидите хотябы один пример где это может понадобиться.

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

Ссылка на сообщение
Поделиться на других сайтах

подключение скрипта не имеющего отношения к DLE, например интеграция с форумом, для вывода последних тем на форуме, подключение информеров других скриптов, поодключение отдельных скриптов мониторинга игровых серверов, продолжать ....?

не совсем понял вы считаете что такой модуль как вывод последних тем на форуме должен лежать в отдельной папке, он также будет функционировать если будет лежать в папке snippets(или modules) не вижу причины почему бы он там не работал.

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

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

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

у некоторых форумов есть свои готовые информеры, которые лежат уже в папках самого форума, зачем писать свой модуль для этого, когда можно воспользоваться готовым, просто подключив его. Также и по другим скриптам, есть уже готовые скрипты, в которых есть вывод. Зачем писать какой то мод для DLE, когда можно просто подключить. Помимо DLE существуют тысячи скриптов, которые осуществляют ту или иную функциональность, и выводять информацию простым echo в конце.

сотни людей пользуются хаком http://dle-news.ru/2006/06/15/ispolzovanie...shablonakh.html только для того чтобы в шаблоне подключить уже готовый скрипт, для вывода информации. Я это знаю абсолютно точно.

Ссылка на сообщение
Поделиться на других сайтах

понял о чем вы. ну хорошо вы потратите минуту на то чтобы написать модуль вида

<?php

include ROOT_DIR."/forum/informer/lasttheme.php"

?>

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

и вызывать так {include module="include.php?file=forum/informers/lasttheme.php"} както так

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

ну хорошо вы потратите минуту на то чтобы написать модуль вида

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

все зато с безопасностью проблем будет намного меньше.

их итак не будет, из папок доступных для записи с CHMOD 777 запускать файлы будет запрещено. Поэтому даже потеря доступа к админпанели и заливка шелла, не позволит его запустить

Хотя вообще потеря доступа к админпанели это уже взлом скрипта и полная потеря доступа к скрипту. Что само по себе уже серьезная проблема, и без подключений скриптов.

Ссылка на сообщение
Поделиться на других сайтах

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

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

выход написать специальный модуль для подключения сторонних скриптов (которые вы выше перечисляли) и запретить вызывать из папок с CHMOD 777 и все.

и этот модуль в дистрибутив положить

Изменено пользователем dlehack
Ссылка на сообщение
Поделиться на других сайтах

выход написать специальный модуль для подключения сторонних скриптов (которые вы выше перечисляли) и запретить вызывать из папок с CHMOD 777 и все.

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

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

кто не помнит, он также не будет и помнить. А с учетом того что такое подключение не может решить 100% всех аспектов, то также будут модули которые будут устанавливаться иным способом, а именно старым и проверенным "нашел, заменил, добавил" и модули также будут валятся по разным папкам.

Ссылка на сообщение
Поделиться на других сайтах

вы сторонник хаоса на сервере?

лично я хотелбы видеть порядок и все модули под контролем держать.

Кстати как насчет перевода всего движка на API не планируете?

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...