За последние 24 часа нас посетили 22450 программистов и 1188 роботов. Сейчас ищут 745 программистов ...

создание сайта визитки

Тема в разделе "Решения, алгоритмы", создана пользователем mahmuzar, 24 фев 2014.

  1. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    вот как я наизвращался
    реализация страницы:
    Код (Text):
    1. <?php
    2.  
    3. /* объектная модель реализации страницы сайта визитки
    4.  *
    5.  *
    6.  */
    7. include 'css.php';
    8.  
    9. class Site {
    10.  
    11.     private $title = null;
    12.     private $header = null;
    13.     private $pageName = null;
    14.     private $style = null;
    15.     private $footer = null;
    16.     private $a = null;
    17.     private $contentH1 = null;
    18.     private $leftPanel = null;
    19.     private $box = null;
    20.     private $content = null;
    21.  
    22.     function __construct() {
    23.         $this->setContent("содержимое страницы");
    24.         $this->setContentH1("Hello friend");
    25.         $this->setLeftPanel("содержимое боковой панели");
    26.         $this->setTitle("Название страницы");
    27.         $this->setHeader("Установите header");
    28.         $this->setA("Home", "Portfolio", "Its`me", "Contact");
    29.         $this->setFooter("Подвал сайта");
    30.         $css = new Css();
    31.         $css->home();
    32.         $this->setStyle($css->getStyle());
    33.     }
    34.  
    35.     //Функция вывода главной страницы
    36.     public function hone() {
    37.         echo "<html>";
    38.         echo "<head><title>" . $this->getTitle() . "</title>";
    39.         echo "<style>";
    40.         echo $this->getStyle();
    41.         echo "</style>";
    42.         echo "</head>";
    43.         echo "<body>";
    44.         echo "<header>" . $this->getHeader() . "</header>";
    45.         echo "<div id='naviPanel'>";
    46.         echo $this->getA();
    47.         echo "</div>";
    48.         echo "<div id ='container'>";
    49.         echo "<div id='leftPanel'>" . $this->getLeftPanel() . "</div>"; //leftPanel
    50.         echo "<div id='box'>";
    51.         echo "<div id='content'>";
    52.         echo "<h1>";
    53.         echo $this->getContentH1();
    54.         echo "</h1>";
    55.         echo "<p>";
    56.         echo $this->getContent();
    57.         echo "</p>";
    58.         echo "</div>"; //content
    59.         echo "</div>";
    60.  
    61.         echo "</div>"; //container      
    62.         echo "<div id='footer'>";
    63.         echo "<footer>" . $this->getFooter() . "</footer>";
    64.         echo "</div>"; //footer
    65.         echo "</body>";
    66.         echo "</html>";
    67.     }
    68.  
    69.     //название страницы
    70.     public function setPageName($pageName) {
    71.         $this->$pageName = $pageName;
    72.     }
    73.  
    74.     //Функция установки заголовка страницы
    75.     public function setTitle($title) {
    76.         $this->title = $title;
    77.     }
    78.  
    79.     //вернуть $title
    80.     public function getTitle($title) {
    81.         $this->title = $title;
    82.     }
    83.  
    84.     //Установить ;$header
    85.     public function setHeader($header) {
    86.         $this->header = $header;
    87.     }
    88.  
    89.     //возврат $header
    90.     public function getHeader() {
    91.         return $this->header;
    92.     }
    93.  
    94.     //Установка подвала
    95.     public function setFooter($footer) {
    96.         $this->footer = $footer;
    97.     }
    98.  
    99.     //возврат $footer
    100.     public function getFooter() {
    101.         return $this->footer;
    102.     }
    103.  
    104. //Установка контента сайта
    105.  
    106.     public function setBox($box) {
    107.         $this->box = $box;
    108.     }
    109.  
    110.     //возвращает $content
    111.     public function getBox() {
    112.         return $this->box;
    113.     }
    114.  
    115.     //Установка контента сайта
    116.     public function setContentH1($contentH1) {
    117.         $this->contentH1 = $contentH1;
    118.     }
    119.  
    120.     //возвращает $content
    121.     public function getContentH1() {
    122.         return $this->contentH1;
    123.     }
    124.  
    125.     //Установка контента сайта
    126.     public function setContent($content) {
    127.         $this->content = $content;
    128.     }
    129.  
    130.     //возвращает $content
    131.     public function getContent() {
    132.         return $this->content;
    133.     }
    134.  
    135.     //initialize $htis->leftPanel
    136.     public function setLeftPanel($leftPanel) {
    137.         if (!empty($leftPanel)) {
    138.             $this->leftPanel = $leftPanel;
    139.         }
    140.     }
    141.  
    142.     //возвращает $this->leftPanel
    143.     public function getLeftPanel() {
    144.         return $this->leftPanel;
    145.     }
    146.  
    147.     //Установка css
    148.     public function setStyle($style) {
    149.         $this->style = $style;
    150.     }
    151.  
    152.     public function getStyle() {
    153.         return $this->style;
    154.     }
    155.  
    156.     //Для панели навигации, инициализирует массив ссылок
    157.     //локальные параметры это имена страниц.
    158.     //Укажите страницы которые вы хотите видеть видеть, остальные можно упустить
    159.     //
    160.     public function setA($a, $a1, $a2, $a3, $a4, $a5) {
    161.  
    162.         if (!empty($a)) {
    163.             $this->a[0] = "<a href=''>$a</a>";
    164.         }
    165.         if (!empty($a1)) {
    166.             $this->a[1] = "<a href=''>$a1 </a>";
    167.         }
    168.         if (!empty($a2)) {
    169.             $this->a[2] = "<a href=''>$a2 </a>";
    170.         }
    171.         if (!empty($a3)) {
    172.             $this->a[3] = "<a href=''>$a3 </a>";
    173.         }
    174.  
    175.         if (!empty($a4)) {
    176.             $this->a[4] = "<a href=''>$a4 </a>";
    177.         }
    178.         if (!empty($a5)) {
    179.             $this->a[5] = "<a href=''>$a5</a>";
    180.         }
    181.     }
    182.  
    183.     //возвращает $this->a
    184.     public function getA() {
    185.         $length = count($this->a);
    186.         $i = 0;
    187.         if ($length > 0) {
    188.             while ($i < $length) {
    189.                 echo $this->a[$i];
    190.                 $i++;
    191.             }
    192.         } else {
    193.             echo "not initialize \"$this->a\"";
    194.         }
    195.     }
    196.  
    197. }
    css
    Код (Text):
    1. <?php
    2.  
    3. /*
    4.  * Класс реализует стилевое оформление страницы
    5.  * предустановки параметров страницы
    6.  *
    7.  */
    8.  
    9. class Css {
    10.  
    11.     private $style = null;
    12.     private $body = null;
    13.     private $header = null;
    14.     private $leftPanel = null;
    15.     private $container = null;
    16.     private $content = null;
    17.     private $footer = null;
    18.     private $naviPanel = null;
    19.     private $naviPanelA = null;
    20.     private $contentH1 = null;
    21.  
    22.     //Конструктор по умолчанию вызывается если не задан никакой параметр
    23.     function __construct() {
    24.         $this->setBody("
    25.            
    26.                 text-align: center;            
    27.                 margin: 0;
    28.                
    29.                
    30.                 ");
    31.  
    32.         $this->setHeader("
    33.        
    34.         border: 1px solid black;
    35.         width: auto; height: 100px;
    36.         background-color: black;
    37.         color: white;
    38.         font-size: 40pt;
    39.         text-shadow: 0 0 5px white;
    40.         ");
    41.  
    42.         $this->setNaviPanel("
    43.             margin-bottom: 30px;
    44.             color: red;
    45.             background-color: #cadaba;
    46.             height: 42px;
    47.             padding: 5px;
    48.             clear: both;
    49.            
    50.                 ");
    51.         $this->setNaviPanelA("
    52.             display: block;
    53.             float: left;
    54.             width: 100px;
    55.             height: 30px;
    56.             padding: 3px;
    57.             margin: 3px;
    58.             font-size: 13pt;
    59.             background-color: orange; color: black;
    60.             text-decoration: none;
    61.             padding-top: 6px;
    62.             border-radius: 10px;
    63.                 ");
    64.         $this->setContainer("
    65.             clear: both;
    66.             text-align: center;
    67.             width: 80%;
    68.             margin-left: 10%;
    69.             ");
    70.         $this->setLeftPanel("
    71.             width: 300px; height: 500px;
    72.             border: 1px solid black;
    73.             float: left;
    74.             background-color: blue;
    75.             color: #cadaba;
    76.             text-shadow: 0 0 10px white;
    77.             font-size: 14pt;
    78.            
    79.                 ");
    80.  
    81.         $this->setContent("
    82.             margin-left: 330px;
    83.             border: 1px solid black;
    84.             width: auto; height: 500px;
    85.             background-color: brown;
    86.             color: white;
    87.             padding: 10px;
    88.             ");
    89.         $this->setContentH1("
    90.             text-align: center;
    91.             color: black;
    92.                 ");
    93.         $this->setFooter("
    94.             border-top: 1px dashed black;
    95.             margin-top: 50px;
    96.             width: auto; height: 50px;
    97.                 ");
    98.  
    99.        
    100.     }
    101.  
    102.     public function home(){
    103.         $this->setStyle("
    104.         body{" . $this->getBody() . "}
    105.         header{" . $this->getHeader() . "}
    106.         #naviPanel{" . $this->getNaviPanel() . "}
    107.         #naviPanel a{" . $this->getNaviPanelA() . "}
    108.         #container {" . $this->getContainer() . "}
    109.         #leftPanel{" . $this->getLeftPanel() . "}
    110.         #content{" . $this->getContent() . "}
    111.         #content h1{" . $this->getContentH1() . "}
    112.         #footer{" . $this->getFooter() . "} ");
    113.        
    114.     }
    115.  
    116.     //Инициализация $style
    117.     //В качестве параметра принимает файл css
    118.     public function setStyle($style) {
    119.         //Проверим переменную на наличие данных
    120.         if (!empty($style)) {
    121.             $this->style = $style;
    122.         }
    123.     }
    124.  
    125.     //Возвращает установки стилей
    126.     public function getStyle() {
    127.         return $this->style;
    128.     }
    129.  
    130.     //Конструктор для темы с позиционированием элементов
    131.     //шапка сайта
    132.     //функция иницилизации $this->body
    133.     public function setBody($body) {
    134.         //Проверим переменную на наличие данных
    135.         if (!empty($body)) {
    136.             $this->body = $body;
    137.         }
    138.     }
    139.  
    140.     //Функция возвращает значение $this->body
    141.     public function getBody() {
    142.         return $this->body;
    143.     }
    144.  
    145.     //функция иницилизации $this->header
    146.     public function setHeader($header) {
    147.         //Проверим переменную на наличие данных
    148.         if (!empty($header)) {
    149.             $this->header = $header;
    150.         }
    151.     }
    152.  
    153.     //Возвращает $this->header
    154.     public function getHeader() {
    155.         return $this->header;
    156.     }
    157.  
    158.     //функция иницилизации $this->naviPanel
    159.     public function setNaviPanel($naviPanel) {
    160.         //Проверим переменную на наличие данных
    161.         if (!empty($naviPanel)) {
    162.             $this->naviPanel = $naviPanel;
    163.         }
    164.     }
    165.  
    166.     //Возвращает $this->naviPanel
    167.     public function getNaviPanel() {
    168.         return $this->naviPanel;
    169.     }
    170.  
    171.     //функция иницилизации $this->naviPanelA
    172.     public function setNaviPanelA($naviPanelA) {
    173.         //Проверим переменную на наличие данных
    174.         if (!empty($naviPanelA)) {
    175.             $this->naviPanelA = $naviPanelA;
    176.         }
    177.     }
    178.  
    179.     //Возвращает $this->naviPanelA
    180.     public function getNaviPanelA() {
    181.         return $this->naviPanelA;
    182.     }
    183.  
    184.     //Устанавливаем параметры $this->container
    185.     public function setContainer($container) {
    186.         //Проверка на наличие данных
    187.         if (!empty($container)) {
    188.             $this->container = $container;
    189.         }
    190.     }
    191.  
    192.     //возвращаем $this->container
    193.     public function getContainer() {
    194.         return $this->container;
    195.     }
    196.  
    197.     //Устанавливаем параметры $this->leftPanel
    198.     public function setLeftPanel($leftPanel) {
    199.         //Проверка на наличие данных
    200.         if (!empty($leftPanel)) {
    201.             $this->leftPanel = $leftPanel;
    202.         }
    203.     }
    204.  
    205.     //возвращаем $this->leftPanel
    206.     public function getLeftPanel() {
    207.         return $this->leftPanel;
    208.     }
    209.  
    210.     //Устанавливаем параметры $this->content
    211.     public function setContent($content) {
    212.         //Проверка на наличие данных
    213.         if (!empty($content)) {
    214.             $this->content = $content;
    215.         }
    216.     }
    217.  
    218.     //возвращаем $this->content
    219.     public function getContent() {
    220.         return $this->content;
    221.     }
    222.  
    223.     //Устанавливаем параметры $this->content
    224.     public function setContentH1($contentH1) {
    225.         //Проверка на наличие данных
    226.         if (!empty($contentH1)) {
    227.             $this->contentH1 = $contentH1;
    228.         }
    229.     }
    230.  
    231.     //возвращаем $this->content
    232.     public function getContentH1() {
    233.         return $this->contentH1;
    234.     }
    235.  
    236.     //Устанавливаем параметры $this->content
    237.     public function setFooter($footer) {
    238.         //Проверка на наличие данных
    239.         if (!empty($footer)) {
    240.             $this->footer = $footer;
    241.         }
    242.     }
    243.  
    244.     //возвращаем $this->footer
    245.     public function getFooter() {
    246.         return $this->footer;
    247.     }
    248.  
    249. }
    и создание самой страницы

    Код (Text):
    1. $murka = new Site();
    2. $murka->hone();
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Извращение, особенно метод hone, вот если тебе надо будет добавить пару десятков блоков div и не только, ты представляешь сколько придется дописывать и как сложно это будет.
     
  3. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Это уже будет новый шаблон).
    И вообще это не делалось для применения где либо)

    Добавлено спустя 3 минуты 9 секунд:
    делалось чтобы использовать в своем cms- опят таки эксперемент.
    И еще, если нужно диписывать что либо или добавить какой то новый блок, нужно создавать метод) и вызывать его в home() задумка такова)

    Добавлено спустя 50 секунд:
    а метод можно реализовать так чтобы мог страницу вытягивать из бд или из другого файла
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Я бы рекомендовал и сам так делаю, разбить на 3 страницы, первая это шаблон / дизайн сайта, короче файл в котором код html и минимум кода PHP, только для вывода текста, примерно так:

    view.php
    Код (Text):
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title><?php $data->get_val('title'); ?></title>
    6. </head>
    7. <body>
    8. <div><?php $data->get_val('h1'); ?></div>
    9. <div><?php $data->get_val('content'); ?></div>
    10. </body>
    11. </html>
    где data это объект класса отвечающий за работу со страницами

    потом файл с классом для работы с шаблонами:
    tpl_class.php
    Код (Text):
    1. <?php
    2.  
    3. class tpl {
    4.  
    5. static function get_main_tpl($data) {
    6. include 'view.php';
    7. }
    8.  
    9. // еще несколько методов но о них потом
    10.  
    11. }
    12.  
    13. ?>
    теперь допустим сама страница:

    main_page.php
    Код (Text):
    1. <?php
    2.  
    3. $page = new page();
    4. // далее задаем title, h1, content и прочее
    5.  
    6. tpl::get_main_tpl($page);
    7.  
    8. ?>
    Несколько слов о классе page, отвечающим за работы со страницами, во первых надо использовать не кучу полей для каждой переменной, а всего одно поле (переменная / параметр) в виде ассоциативного массива, так проще удобнее и короче, не надо будет писать кучу get / set функций всего одна функция (в смысле 2, get_val и set_val):
    Код (Text):
    1. class page {
    2.  
    3. protected $data; // это ассоциативный массив
    4.  
    5. public function set_val($key, $value) {
    6. $this->data[$key] = $value;
    7. }
    8.  
    9. public function get_val($key) {
    10. return $this->data[$key];
    11. }
    12.  
    13. }
    Почему удобнее иметь один массив, а не кучу переменных, потому что ты из базы MySQL получаешь ответ в виде ассоциативного массива, и по этому на много проще будет перезаписать этот массив ($this->data = $data) чем каждое значение в отдельности, соответственно ключи массива должны соответствовать именам столбцов из БД.

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

    Теперь еще немного о tpl_class.php, тебе придется использовать часто повторяющиеся слова, "регистрация" "главная", тут желательно написать ассоциативный массив со всеми этими словами и не писать во view.php эти слова, а через эту функцию, примерно так же как и с выводом get_val в class page
     
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    хабр?)) я так тоже делаю, и много вариантов как делать) читал.
    А вот вариант который вы говорите,( видел на хабре) тоже не не особо хорошо, в любом случае надо доделывать)

    Добавлено спустя 30 секунд:
    короче говоря называется cms
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Нет, сам до этого дошел, после 4-5 переписей своего горе CMS, кстати, что то подобное тому что было в первом сообщение у меня было, не прижилось..
     
  7. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    но ваш вариант по другому.
    не всегда, может не захочу брать ассоциативный массив)

    Добавлено спустя 1 минуту 49 секунд:
    там доделывать и если разбивать на еще мелкие части , то можно большей функциональности достичь
     
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Может это высокомерно, но мой вариант вроде как получше, правильнее.

    а как по другому и самое главное зачем?
     
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    чтобы перебирать циклом например удобно
    $value = $result->fetch_row()
     
  10. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    И кстати, а можно ссылку на:
     
  11. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    тот чуть другой. Шас дам. не плох сам вариант, но стоит дорабатывать
    http://habrahabr.ru/post/150267/