За последние 24 часа нас посетили 71610 программистов и 2962 робота. Сейчас ищут 1324 программиста ...

Организация разделов на сайте

Тема в разделе "Вопросы от блондинок", создана пользователем Kreker, 6 янв 2010.

  1. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Окей.
    PHP:
    1.  
    2. <?php
    3. public function LoadModule ($Module){
    4.         if (empty ($Module) || is_numeric ($Module)){
    5.             $Module = 'articles-list';
    6.         }
    7.        
    8.         $Path = MODULES_PATH . '/' . $Module . '/index.php';
    9.                 # Динамический модуль
    10.         if (is_file ($Path)){
    11.             $this->Template = 'content.html';
    12.             include_once ($Path);
    13.         } else {
    14.                         # Статичная информация
    15.             $this->Db->query('SELECT * FROM `' . TABLE_PAGES . '` WHERE `system` = ? LIMIT 1', array ($Module));
    16.             $Row = $this->Db->fetchOne();
    17.    
    18.             if (count ($Row) > 0){
    19.                 $Row['date'] = date('d.m.Y H:i:s', $Row['date']);
    20.                 $this->TPush ('GLOBAL_TITLE', $Row['name']);
    21.                 $this->TPush ('page_content', $Row);
    22.                 $this->Template = 'page.html';
    23.                 $this->OneMoreView($Row['id']);
    24.                 return;
    25.             }
    26.    
    27.             $this->Template = '404.html';
    28.         }
    29.     }
    30.  
    31.         public function Controller(){
    32.         $URI = explode('/', $_SERVER['REQUEST_URI']);
    33.         return $URI[BASE_URI];
    34.     }
    35.  
    Вот как это запускается:
    PHP:
    1.  
    2. <?php
    3. $Kate = new Kate;
    4. $Kate->Template = 'content.html';
    5. $Kate->LoadModule ($Kate->Controller());
    6. $Kate->DrawHTML();
    7.  
    8.  
     
  2. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Elkaz
    при верблюжьей записи 1я буква метода - маленькая.

    Тогда нахрен геморрой с базой?
    Заходишь и правишь файл ручками каждый раз.

    Можешь сделать небольшой редактор-формочку. Куда ты просто вводишь список слов, а потом скриптом вырезаешь блок и вставляешь с новыми словами.
     
  3. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    пусть контроллер модуля пихает их в главный шаблон, если нужно
    Статичные страницы, тоже динамический модуль
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?php
    2.         public function run($controller = null)
    3.         {
    4.                 $this -> getController($file, $module, $controller, $action, $args);
    5.                 if (!is_readable($file))
    6.                 {
    7.                         die('404: File not found');
    8.                 }
    9.                 include $file;
    10.                 if ($controller == 'index')
    11.                 {
    12.                         $index = true;
    13.                 }
    14.                 $controller = $module . '_' . $controller;
    15.                 $controller = new $controller;
    16.                 if (isset($index))
    17.                 {
    18.                         $this -> registry['modules'][modules::getIdByDir($module)]['object'] = $controller;
    19.                 }
    20.                 if (!is_callable(array($controller, $action)))
    21.                 {
    22.                         die('404: Action not found');
    23.                 }
    24.                 else
    25.                 {
    26.                         $controller -> $action($args);
    27.                 }
    28.         }
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Ага, это я так хочу на бизнесс-уровень выйти :)
    У каждой страницы в браузере должны быть свои метатеги. Данные для каждой страницы берутся из базы, значит и теги в базе. Вот как грамотнее их хранить?
     
  6. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Kreker
    Я бы хранил сериализованный массив
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    А что, если генерить метатеги будет шаблонизатор? Он же и так весь контент парсит - пускай и генерит наиболее актуальные метатеги. Если результат будет кешироваться - то вообще супер.
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Это будет похоже на парсер сообщений SMF: каждое сообщение на выводе обрабатывается функцией в 2 тысячи строк. Тут, конечно, не 2000 тысячи строк, но не любитель я на выводе что-то считать.
     
  9. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Если я правильно помню, то Lenta.ru до сих пор вообще plain-html.
    неприкольно ни разу.

    У тебя метатеги привязаны к даным. вот и храни их вместе с данными.
    можешь в соседнем поле, а можешь прямо там же.
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Почему не прикольно? Что я делаю сверхестественного? Метатеги - такая же составная часть страницы, как и остальной текст. Вот я и думаю, где их лучше размещать - в таблицах с контентом для конкретно этого раздела или сделать общую таблицу для всех разделов и там хранить разные параметры страниц, такие как метатеги.
     
  11. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Сам задаешь вопрос
    и сам отвечаешь
    Поэтому и не прикольно.

    Где ты хранишь текст? Вот ВМЕСТЕ с текстом и храни.
     
  12. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    я тоже за этот подход.
     
  13. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    а если страница список ... и притом постраничный ?
     
  14. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    nimistar
    Страница - список чего?
    И что значит "постраничная страница"?

    Насколько я понимаю метатеги должны соответствовать контенту. Т.е. каждый отдельный кусок текста может иметь теги не совпадающие с любым другим.

    Если это куски объединенные чем-то, то у них будет 1-2-3 общих метатега или же все они будут иметь абсолютно одинаковые метатеги.

    Например. Статья о бытовой технике.
    1я страница взагали и ссылки на конкретную технику - теги "бытовая техника" "утюги" "пылесосы" "миксеры"
    2я страница (утюгов) - теги "бытовая техника" "утюги"
    3я страница (пылесосов) - теги "бытовая техника" "пылесосы"
    4я страница (миксеров) - теги "бытовая техника" "миксеры.

    При этом вполне возможен вариант, когда все 4ре страницы имеют абсолютно одинаковые теги как у 1й страницы без исключений.
     
  15. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    Simpliest - я имел ввиду что есть страници которая например срдержет список ссылок на эти самые статьи ... то есть по сути страница не имеет единого прямого аналога в базе ... собирать теги по статьям ? ну ладно кейворд мы соберем а описание (description)?
     
  16. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Почему она не имеет аналога в базе?
    А как ты на нее попал?

    Каждая страница однозначно должна определятся ее URI к которому отлично привязывается description.

    Но страница агрегатор вряд ли будет обрабатываться тем же скриптом что и статичная :)
    Поэтому либо ты ее генерируешь динамикой, либо при построении sitemap - в любом случае получить теги/описание нет проблем.