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

Тема в разделе "DLE", создана пользователем danneo, 8 ноя 2013.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.418
    Симпатии:
    109
    Проблема не простоая. Мало того, что структуру 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":
    -----
    }
    Но как учесть город, не знаю...
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.036
    Симпатии:
    2.039
    Ключевой вопрос - а зачем 1 ДЛЕ на всё это? Конечно, можно переписать ДЛЕ, но куда проще сделать на каждый поддомен свой ДЛЕ и объединить базы пользователей (1 строчка в конфиге БД). Если вариант подходит - велком в документацию.
     
  3. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.418
    Симпатии:
    109
    а почему нужно переписывать ДЛЕ? Я же про отдельный модуль... или я чего-то не знаю?
    Ставить на поддомены ДЛЕ не вариант, поддомены должны быть виртуальными, через htaccess.
     
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.036
    Симпатии:
    2.039
    Какой модуль? Из твоего описания, я понял, что требуется выводить новости только отдельного города - а это 99% функционала ДЛЕ.

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

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

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

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.418
    Симпатии:
    109
    текущий функционал ДЛЕ вывода новостей модернизировать не планировалось. Все хотел сделать на модуле. Каталог фирм все таки. Так разве нереально?

    доски же не банятся. С основного домена на них стоят ссылки на поддомены.
     
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.036
    Симпатии:
    2.039
    О бане никто не говорил. Речь идёт о понижении в выдаче за дублирования контента.
    Ну в таком случае, сам модуль подключается в engine/engine.php:
    PHP:
        case "modul" :
            include 
    ENGINE_DIR '/modules/modul.php';
            break;
    Всё остальное уже делается в самом modul.php..

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

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

    Как Вам удобно - других предложений нет =)
    Просто выборка по город + категория
    В качестве города подставлять all.
    Посмотрите как сделано в ДЛЕ - делайте по аналогии. Функция не такая сложная на самом деле.
    Сама ЧПУ простая:
    /all/index.html - главная
    /moscow/index.html - главная по Москве
    /all/cat/cat/cat/index.html - категория
    /moscow/cat/cat/cat/index.html - категория по Москве

    Вот и всё.
     
    Последнее редактирование: 10 ноя 2013
    danneo нравится это.
  7. Горбушка

    Горбушка Ищу её...

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