Помощь Подскажите по структуре файла модуля

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.529
Реакции
121
Проблема не простоая. Мало того, что структуру DLE знаю очень плохо, дак еще и не профи в программировании. Мало практики. Взялся вроде за простое дело, а нужно знать от и до.
Поэтому, если кому не лень потратить время и вникнуть в суть дела, помочь, где-то разжевать, буду очень благодарен.

Пытаюсь разработать модуль для ДЛЕ. Хочу сделать модуль фирм. Проблема в создании структуры файлов модуля и структуры кода в файле.
Насколько я понял, в ДЛЕ предусмотрены отдельные файлы для категорий, новости, поиска.
Если бы это был простенький каталог, то проблем то и не было. По аналогии с новостями. А мне нужно сделать с городами (странами, регионами) + категории. Города и категории по одной таблице в БД, через вложения (parentid). И для этой работы сделать один файл, например, category.php.
На фирму планирую отдельный файл.

Нужно чтобы пользователь мог начать ходить с главной сайта по городам, а также и по категории. И самое главное, нужно сделать ЧПУ url, чтобы примерно такой: site.ru/city/category/sub_category/sub_sub_category/
А потом перенести города на субдомены, так: city.site.ru/category/sub_category/sub_sub_category/
Проблемы такие:
1. как лучше сделать структуру файлов. На категории и города один файл или разные?
2. не знаю как сделать, структуру внутри файла.
Например, через switch-case, но как завязать на город и категорию одновременно, не знаю.
Дублировать в каждом case еще одну сортировку по городу неправильно, мне кажется.
Как вариант, думаю, чтобы сделать через присутствие и отсутствии переменной $city. Она просто добавляется в запрос SELECT * WHERE city='$city'. Если ее нет, то просто без этого доп.условия WHERE, просто по выбранной категории.
3. Но тогда, если пользователь сначала выбирает категорию, а города нет. Как будет формироваться url в этом случае.
4. как формируется url с ЧПУ, например, index.php?do=firm&view=cat&cat=5. Переменная cat передается в переменную, а она преобразует, формируя url, используя рекурсию. Правильно? Или используются другие методы?
и какие url адреса без ЧПУ (с get параметрами) лучше сформировать для:
- сайт.ру/модуль/страна (либо регион, город)
- сайт.ру/модуль/категория/подкатегория/подподкатегория
- сайт.ру/модуль/город/категория/подкатегория
- сайт.ру/модуль/фирма (а потом: фирма.сайт.ру)

В общем, каша в голове...

Я это дело вижу так, хотя и не знаю, правильно ли это, и будет ли работать, будет ли возможность развития...
url такой: index.php?do=firm&city=5&cat=5
Параметры передаются в функцию города и категории. Город всегда один каталог /moscow/
А категория преобразуется функцией рекурсивно в /cat/sub_cat/sub_sub_cat/
Если $city не выбрано, то она равна "all": index.php?do=firm&view=cat&cityid=all&cat=5
Точно также с $cat: index.php?do=firm&city=5&cat=all
А структуру файла firm.php примерно такая:

switch($view){
case "cat":
-----
case "all":
-----
}
Но как учесть город, не знаю...
 
Ключевой вопрос - а зачем 1 ДЛЕ на всё это? Конечно, можно переписать ДЛЕ, но куда проще сделать на каждый поддомен свой ДЛЕ и объединить базы пользователей (1 строчка в конфиге БД). Если вариант подходит - велком в документацию.
 
Ключевой вопрос - а зачем 1 ДЛЕ на всё это? Конечно, можно переписать ДЛЕ, но куда проще сделать на каждый поддомен свой ДЛЕ и объединить базы пользователей (1 строчка в конфиге БД). Если вариант подходит - велком в документацию.
а почему нужно переписывать ДЛЕ? Я же про отдельный модуль... или я чего-то не знаю?
Ставить на поддомены ДЛЕ не вариант, поддомены должны быть виртуальными, через htaccess.
 
а почему нужно переписывать ДЛЕ?
Какой модуль? Из твоего описания, я понял, что требуется выводить новости только отдельного города - а это 99% функционала ДЛЕ.

То, что ты хочешь, называется мультисайтовый движок. Такое есть у WordPress, но у DLE такого нет. Чтобы это добавить - нужно прилично кода поправить. Здесь одним WHERE `city` = 'moscow' не обойтись. Надо разделять файлы настроек, вносить изменения в дизайн и ещё кучу всего делать.

Именно по этой причине и советую поставить несколько DLE и объединить БД - это самый быстрый и простой вариант.

Кроме того, вариант без поддомена - это должен быть город по-умолчанию, а не все сразу. Иначе штраф от поисковика за дубль контента гарантирован. И вообще сама идея с точки зрения оптимизации провальная.
 
Какой модуль? Из твоего описания, я понял, что требуется выводить новости только отдельного города - а это 99% функционала ДЛЕ.
текущий функционал ДЛЕ вывода новостей модернизировать не планировалось. Все хотел сделать на модуле. Каталог фирм все таки. Так разве нереально?

Кроме того, вариант без поддомена - это должен быть город по-умолчанию, а не все сразу. Иначе штраф от поисковика за дубль контента гарантирован. И вообще сама идея с точки зрения оптимизации провальная.
доски же не банятся. С основного домена на них стоят ссылки на поддомены.
 
доски же не банятся. С основного домена на них стоят ссылки на поддомены.
О бане никто не говорил. Речь идёт о понижении в выдаче за дублирования контента.
текущий функционал ДЛЕ вывода новостей модернизировать не планировалось. Все хотел сделать на модуле. Каталог фирм все таки. Так разве нереально?
Ну в таком случае, сам модуль подключается в engine/engine.php:
PHP:
	case "modul" :
		include ENGINE_DIR . '/modules/modul.php';
		break;
Всё остальное уже делается в самом modul.php..

Что касаемо поддержки нескольких поддоменов, это нужно писать правила для ЧПУ в .htaccess. Никакого case в самом модуле Вам не нужен, просто выводите объявления по модулю. Единственное что Вам придётся продумать - контроль существования города. Если такого города нет - делаете запрос без выборки по городу, но это дублирование контента.

Чем ещё подсказать тогда не знаю, в первом посту всё и так не плохо расписано.

1. как лучше сделать структуру файлов. На категории и города один файл или разные?
Как Вам удобно - других предложений нет =)
2. не знаю как сделать, структуру внутри файла.
Просто выборка по город + категория
3. Но тогда, если пользователь сначала выбирает категорию, а города нет. Как будет формироваться url в этом случае.
В качестве города подставлять all.
4. как формируется url с ЧПУ, например, index.php?do=firm&view=cat&cat=5. Переменная cat передается в переменную, а она преобразует, формируя url, используя рекурсию. Правильно? Или используются другие методы?
Посмотрите как сделано в ДЛЕ - делайте по аналогии. Функция не такая сложная на самом деле.
Сама ЧПУ простая:
/all/index.html - главная
/moscow/index.html - главная по Москве
/all/cat/cat/cat/index.html - категория
/moscow/cat/cat/cat/index.html - категория по Москве

Вот и всё.
 
Последнее редактирование:
Ах, да, забыл, что в ЧПУ должна быть точка входа... /modul/all/cat/index.html Т.е. ДЛЕ надо понять, что надо подключать модуль, а не просто выводить новости =)
 
Назад
Сверху