Аппараттық және бағдарламалық қамтамасыз етуді орнату

§2. Php-де тік ашылмалы мәзірді қалай жасауға болады

Өйткені ол menu.php модулінің мазмұнын ашады. Төменде PHP-де блокнотта нөлден бастап жазылған менің жеке мәзір әзірлеуім берілген.

Бұл код әсіресе өздігінен жазылған қозғалтқыштары бар динамикалық сайттар үшін пайдалы болады. Мен кодтың шамалы айырмашылықтары бар екі нұсқасын ұсынамын (бұл айырмашылық кейінірек түсіндіріледі).

Бастау үшін мен осы мәзір қолайлы сайттың шамамен құрылымын беремін. Сайт құрылымы келесідей болуы керек (классикалық көрініс):

/index.html /section_1/ /razdel_1/articles_1.html /razdel_1/articles_2.html ... /razdel_2/ /razdel_2/articles_1.html /razdel_2/articles_2.html ... ... ... /razdel_N/articles_2 .html

Сайтта бөлімдерге арналған бөлімдер де болуы мүмкін:

/section_1/podzaderl_1/ /section_1/podzaderl_1/articles_1.html /section_1/podzaderl_1/articles_2.html ... /section_1/podzaderl_2/articles_1.html /section_1/podzaderl_2/articles_2.html

Бұл құрылым аз ғана айырмашылықтары бар біздің мәзір үшін де жұмыс істейді.

Мен php-де мәзір үшін бөлек файл жасауды ұсынамын. Мысалы, menu.php мұндай файл үшін тамаша атау болар еді. Мәзірді іске асыру үшін CSS мәзірін сәндеу оны бірден азды-көпті әдемі ету үшін енгізілген. Әрине, бұл стиль тек анықтама үшін берілген, өйткені сайттардың дизайны өте әртүрлі.

CSS мәзір стилінің коды:

.menu ( биіктігі: 42 пиксель; толтыру: 0 0 0 16 пиксель; фон: url(суреттер/spacer.png) қайталау; ) .menu li (дисплей:блок; қалқыма:сол; ) .menu li.active (фон: #000011 ; ) .menu a (түс:#FFF; дисплей:блок; сызық биіктігі:42px; мәтінді безендіру:жоқ; толтыру:0 14px; ) .menu a:hover (фон:url(images/spacer.png) қайталау ;)

Енді PHP-де бірінші мәзірді іске асыруды қарастырайық, бұл біршама жеңілдетілген.

РНР тіліндегі мәзір кодының бірінші нұсқасы

\n"; үшін ($i=0;$i ": "
  • "; жаңғырық " ".$array_menu[$i]["name"]."
  • \n"; ) echo ""; ?>

    Мәзірді екі бөлікке бөлуге болады. Біріншісінде бөлімдерге сілтемелері бар бөлімдеріміздің атаулары бар $array_menu ақпараттық массиві бар. Бұл деректерді дерекқорға қосудың жолы бар ма? mySQL деректері, бірақ бұл жерде ерекше мәселе жоқ, өйткені үлгі өте аз, сондықтан бұл жұмыс жылдамдығына әсер етпейді.

    Екінші бөлімде арқылы мәзір шығысы бар цикл үшін. Цикл веб-сайт мекенжайын $array_menu массивіндегі мекенжаймен салыстырады. Сәйкестік болса, мәзірдің келесі бөлімін белсенді арнайы класспен көрсетеміз:

  • , әйтпесе жай
  • . Бұл мәзірдің пайдаланушы орналасқан бөлігін қандай да бір түспен бөлектеуге мүмкіндік береді. Менің ойымша, бұл пайдаланушы қай бөлімде екенін түсінуі үшін кез келген сайтқа қажет нәрсе.

    Массивтегі реттілік сайтта мәзірді көрсету кезінде сақталады. Яғни, массив мәзірді көрсеткіңіз келетін ретпен толтырылуы керек.

    Ескерту:
    Бөлімдердің тақырыбының URL мекенжайлары (мекенжайлары) келесідей болған жағдайда:
    /бөлім_1
    немесе осындай
    /section_1/name_razdela.html
    содан кейін array_menu ішінде дәл сәйкестікті жазу керек:
    $array_menu[$i]["url"]="/section_1"
    немесе екінші жағдай үшін:
    $array_menu[$i]["url"]="/section_1/nazvanie_razdela.html";

    Бірінші мәзір опциясы қалай жұмыс істейді?
    Бөлім тақырыбының мекенжайында болсаңыз ғана ол мәзірді бөлектейді. Мысалы, егер бет мекенжайы /section_1/articles_1.html болса, мәзір ешқандай жолмен бөлектелмейді.

    Кодтың екінші нұсқасы біріншінің өзгертілген нұсқасы болып табылады және тіпті бөлімдердегі мақалаларда мәзірді бөлектеу мүмкіндігін қарастырады.

    РНР тіліндегі мәзір кодының екінші нұсқасы

    "; үшін ($i=0;$i ": "
  • "; echo "".$array_menu[$i]["title"]."
  • "; ) else ( echo ($URL) == ($array_menu[$i]["url"]) ? "
  • ": "
  • "; echo "".$array_menu[$i]["title"]."
  • ";))) жаңғырық ""; ?>

    Бірде-бір сайт шарлаусыз аяқталмайды немесе «сайт мәзірі» деп те аталады. Сонымен, сайт мәзірі ағаш түрінде бір деңгейлі және көп деңгейлі болуы мүмкін. Егер бір деңгейлі мәзірді іске асыруда ерекше қиындықтар болмаса, онда көп деңгейлі мәзірді жасау кезінде мұқият ойлану керек.

    Бұл тапсырмадағы ең маңызды нәрсе - біздің көп деңгейлі мәзіріміз үшін дерекқорды жобалау. Үш өрістен тұратын Санаттар кестесін құрайық идентификатор, тақырып, ата-анамұнда:

    • ID- идентификатор
    • Тақырып- Мәзір атауы
    • ата-ана- Әдепкі санат ата-анасы 0

    Өріс мәзірді тармақтауға жауапты ата-анаегер ата-ана = 0, онда бұл санат негізгі санат болып табылады. Ата-ана санатына балаларды қосу үшін ата-аналық өрісте көрсету керек IDқалаған ата-ана. Мысалға:

    Категориялары бар кестелер

    Кестеден көрініп тұрғандай, ата-аналық категория Көліктерекі ұрпағы бар Маздажәне Хондаөрісімен байланысты ата-ана. Және категория Мотоциклдерекі ұрпақ кавасакижәне Харли. Сонымен қатар, қайықтар санатының ұрпақтары жоқ. Сіз санаттарды қалай байланыстыру керектігін түсінесіз деп үміттенемін.

    Әрі қарай сөзден тәжірибеге көшеміз. Санаттар кестесін құрайық.

    'санаттар БАР БОЛМАСА, КЕСТЕНІ ЖАСАУ (`id` int(10) таңбасыз NULL ЕМЕС AUTO_INCREMENT, `тақырып` varchar(255) NULL ЕМЕС, `ата-ана` int(10) таңбаланбаған NULL ЕМЕС, БАСТАУЫШ КҮЙСЕ (`id`)) ENGINE=MyISAM Әдепкі ТАҒАМ =utf8 AUTO_INCREMENT=20 ; -- -- "Санаттардың" кесте деректерін тастаңыз -- INSERT INTO "санаттар" ('id', 'атауы', 'ата-анасы') VALUES (1, "Автомобильдер", 0), (2, "Мотоциклдер", 0) , (3, Mazda, 1), (4, Honda, 1), (5, Kawasaki, 2), (6, Harley, 2), (7, Mazda 3, 3 ), (8, "Mazda 6", 3), (9, «Седан», 7), (10, «Хэтчбек», 7), (11, «Қайық», 0), (12, «Лифтбек», 8), (13, «Кроссовер», 8), (14, «Ақ», 13), (15, «Қызыл», 13), (16, «Қара», 13), (17, «Жасыл», 13), (18, Mazda CX, 3) ), (19, Mazda MX, 3);

    Жұмыс алгоритмі мыналардан тұрады:

    Дерекқорға қосылуды құру

    query("АТТАРДЫ ОРНАТУ "utf8""); /* * Бұл мұны істеудің «ресми» нысанға бағытталған жолы * дегенмен $connect_error PHP 5.2.9 және 5.3.0 дейін жұмыс істемеді. */ if ($mysqli->connect_error) ( die("Қосылым сәтсіз аяқталды (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Егер нұсқалармен үйлесімділікке сенімді болғыңыз келсе 5.2 .9 дейін, * осындай жақсырақ код */ if (mysqli_connect_error()) ( die("Байланыс сәтсіз аяқталды (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); )

    Санаттар кестесінен мәліметтер алу функциясын жазу

    //Мәзір массивін дерекқордан массив функциясы ретінде алыңыз getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Массивті жасаңыз, мұнда массив пернесі мәзір идентификаторы болып табылады $cat = array(); while($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; )

    Біз осындай массив аламыз, онда массив кілті санат идентификаторы болып табылады.

    Томми Лакруастың массив ағашының функциясы

    //Tommy Lacroix массивінен ағаш құру функциясы getTree($dataset) ( $tree = array(); foreach ($id => &$түйін) ( //Егер тіркемелер болмаса, (!$түйін[" ата-ана"])( $tree[$id] = &$түйін; )else( //Егер балалар болса, $dataset[$node["parent"]][" массивін айналдырыңыз." childs"][$id] = &$ түйін; ) ) қайтару $tree; )

    Ағаш түріндегі массив алу

    Бүкіл сценарий

    query("АТТАРДЫ ОРНАТУ "utf8""); /* * Бұл мұны істеудің «ресми» нысанға бағытталған жолы * дегенмен $connect_error PHP 5.2.9 және 5.3.0 дейін жұмыс істемеді. */ if ($mysqli->connect_error) ( die("Қосылым сәтсіз аяқталды (" . $mysqli->connect_errno . ") " . $mysqli->connect_error); ) /* * Егер нұсқалармен үйлесімділікке сенімді болғыңыз келсе 5.2 .9 дейін, * бұл кодты қолданған дұрыс */ if (mysqli_connect_error()) ( die("Байланыс қатесі (" . mysqli_connect_errno() . ") " . mysqli_connect_error()); ) //Біздің мәзірді алу массив дерекқордан массив функциясы ретінде getCat($mysqli)( $sql = "SELECT * FROM `categories`"; $res = $mysqli->query($sql); //Массив кілті болатын массив жасаңыз мәзір идентификаторы $cat = array(); while ($row = $res->fetch_assoc())( $cat[$row["id"]] = $row; ) return $cat; ) //құру функциясы Tommy Lacroix функциясының массивінен ағаш getTree($dataset) ( $tree = array(); foreach ($id => &$түйін ретінде $dataset) ( //Егер (!$түйін["parent) тіркемелер болмаса "])( $tree[$id] = &$node; )else( //Егер балалар болса, $dataset[$node["parent"]]["childs"][$id] массиві арқылы қайталаңыз. = &$түйін; ) ) $tree; қайтарады; ) //Дайын болыңыз $cat = getCat($mysqli) деректері бар массив; //Ағаш мәзірін жасау $tree = getTree($cat); //Мәзірді ағаш функциясы түрінде көрсетуге арналған үлгі tplMenu($category)( $menu = "
  • ".$category["title"].""; if(isset($category["childs"]))( $menu .= "
      ".showCat($категория["балалар"]) ."
    "; ) $меню .= "
  • "; return $menu; ) /** * Үлгімізді рекурсивті түрде оқыңыз **/ function showCat($data)( $string = ""; foreach($data as $item)( $string .= tplMenu($item); ) return $string; ) //HTML белгілеуін алу $cat_menu = showCat($tree); //Эхоны көрсету "
      ". $cat_menu ."
    "; ?>

    Жұмыстың нәтижесі

    Әкімшіге арналған PHP + MySQL тіліндегі көп деңгейлі мәзір

    Бұл мәзірді сайтыңыздың басқару панелінде пайдаланғыңыз келсе, бірнеше функцияларды қайта жазуыңыз керек. tplMenu(), showCat().

    ".$категория["тақырып"].""; )else( $menu = " "; ) if(isset($category["childs"]))( $i = 1; for($j = 0; $j)< $i; $j++){ $str .= "→"; } $i++; $menu .= showCat($category["childs"], $str); } return $menu; } /** * Рекурсивно считываем наш шаблон **/ function showCat($data, $str){ $string = ""; $str = $str; foreach($data as $item){ $string .= tplMenu($item, $str); } return $string; } //Получаем HTML разметку $cat_menu = showCat($tree, ""); //Выводим на экран echo ""; ?>

    Жұмыстың нәтижесі

    Автомобильдер → Mazda →→ Mazda 3 →→→ Седан →→→ Хэтчбек →→ Mazda 6 →→→ Лифтбек →→→ Кроссовер →→→→ Ақ →→→ Қызыл →→→→ Қара →→→ Жасыл →→ Mazda CX →→ Mazda MX → Honda мотоциклдері → Kawasaki → Harley Boats

    Жалпы, мәзір құру міндетіне мыналар кіреді:

    • мәзір құру үшін HTML элементтерін таңдау;
    • мәзір үлгісін жасау (компонент үлгісін жасау Мәзір);
    • мәзірді көрсету функциясын қосу (компонентті шақыру Мәзір) ортақ үлгіде («пролог» және «эпилог»);
    • сайт құрылымына сәйкес мәзірді толтыру.

    Мәзір құрылымы

    Сайттағы кез келген мәзір екі компонент негізінде құрастырылған:

    • мәзір құрамын анықтайтын $aMenuLinks деректер массиві барлық мәзір элементтері үшін атаулар мен сілтемелерді орнатады. Деректер массиві әкімшілік интерфейс арқылы басқарылады;
    • мәзірдің сыртқы көрсетілім үлгісі. Мәзір үлгісі - бұл анықтайтын PHP коды сыртқы түрімәзір (компонент үлгісі Мәзір). Мәзір үлгісі шығыс ретінде HTML кодын шығаратын деректер жиымын өңдейді.

    Мәзір деректер массиві

    Әрбір мәзір түріне арналған деректер аты келесі пішімге ие бөлек файлда сақталады: .<тип меню>.menu.php. Мысалы, мәзір деректерін сақтау үшін солфайл пайдаланылады .left.menu.php, және деректер мәзір түрін сақтау үшін жоғарғы- файл .top.menu.php.

    Мәзір иерархиялық түрде мұраланған. Мәзір файлдары сайттың сәйкес мәзір түрлерін көрсету қажет бөлімдерінің қалталарында орналасқан. Егер үшін осы бөлімсәйкес мәзір файлы жасалмаса, жүйе файлды бір деңгей жоғары каталогтан іздейді.

    Мысалы, өйткені негізгі мәзір (өнімнің демо нұсқасында бұл мәзір сияқты жоғарғы) барлық бөлімдерде, содан кейін файлда көрсетілуі керек осы мәзірсайттың түбірлік каталогында ғана орналастырылады.

    Тиісінше, екінші деңгей мәзірі (өнімнің демо нұсқасында осы мәзір сол) сайттың әрбір бөлімі үшін бөлек көрсетіледі. Сондықтан әр бөлімнің қалтасында бөлек файл жасалады осы түрдегімәзір.

    Тағы бір мысал: Келуші /en/company/about/ бөлімінде. Сол жақтағы мәзірді көрсету үшін мәзір файлын жүйе келесі ретпен іздейді:

    1. /en/company/about/.left.menu.php
    2. /en/company/.left.menu.php
    3. /en/.left.menu.php
    4. /.left.menu.php

    Егер каталогтардың бірінде мәзір табылса, іздеу тоқтатылады және ол келесі каталогтарда енді ізделмейді.

    Bitrix Framework жүйесі де жасауға мүмкіндік береді мәзір динамикалық түрі Ол үшін Мәзір компонентінде опцияны қосыңыз .menu_type.menu_ext.php сияқты аттары бар файлдарды қосыңыз(«USE_EXT» => «Y»), ол әдепкі бойынша өшірілген.. Анау. мұндай мәзірлердің деректер массиві бағдарлама кодының көмегімен алынған кейбір деректер негізінде автоматты түрде жасалады. Берілген кодаталған файлда сайттың сәйкес бөлімінің қалтасында сақталуы керек .<тип меню>.menu_ext.php.

    Мұндай файлдардың негізгі міндеті $aMenuLinks массивін өңдеу болып табылады. Бұл файлдар модульде көрнекі түрде өңделмейді Құрылымды басқару, сондықтан мәзірді көрнекі өңдеу кезінде оларды кездейсоқ өңдеу мүмкін емес. Бұл файлды жасаған кезде компонентті пайдаланыңыз Мәзір элементтері (bitrix:menu.sections).

    Ескерту: Жоғарыдағы абзацта біз тек инфоблоктар бөлімдерінің атауларымен құрылған мәзірді толықтыру туралы айтып отырмыз. Мысалы, бұл опция мәзірді форумдардың атауларымен толықтыруға жарамайды.

    Назар аударыңыз!Егер NC емес каталог бөлімдері мәзір элементтері ретінде пайдаланылса, айнымалы мәндер мағыналы сұрау айнымалы мәндерінде көрсетілуі керек.

    Мұндай мәзірдің мысалы сол жақ мәзірбөлім Кітап каталогыөнімнің демо нұсқасында ұсынылған. Міне, мәзірдің алғашқы екі элементі Авторларжәне Пікірлерқұрылды әдеттегідей, ал қалғандары ( іскерлік әдебиет, Балалар әдебиетіт.б.) динамикалық түрде қалыптасады.

    Бұл жағдайда каталог топтарының атаулары мәзір элементтері ретінде пайдаланылады. Кітаптар, ақпараттық блоктар негізінде құрылған. Бағдарлама коды, оның негізінде мәзір құрылады, файлда сақталады .left.menu_ext.php/e-store/books/ қалтасында.


    Файлдарда .<тип меню>.menu.phpкелесі стандартты айнымалыларды қолдануға болады:

    • $sMenuTemplate – мәзір үлгісіне абсолютті жол (бұл айнымалы сирек пайдаланылады);
    • $aMenuLinks – әрбір элементі келесі мәзір пунктін сипаттайтын массив.

      Бұл массивтің құрылымы:

      Массив ( => мәзір элементі 1 Массив ( => мәзір элементінің тақырыбы => мәзір элементіне сілтеме => мәзір элементін бөлектеу үшін қосымша сілтемелер массиві: Массив ( => 1 сілтеме => 2 сілтеме) => массив мәзір үлгісіне жіберілген қосымша айнымалы мәндердің саны: Массив ([айнымалының аты 1] => айнымалының 1 мәні [айнымалының аты 2] => айнымалының мәні 2 ...) => мәзір элементі пайда болатын шарт - бұл PHP өрнегі "true" мәнін қайтару керек) => мәзір элементі 2 => мәзір элементі 3 ...)

    Мәзір файлының мысалдары

    IsAuthorized()"), Array("Оқу кітабы", "gradebook.php", Array(), Массив(), "\$GLOBALS["USER"]->IsAuthorized()"), Массив("Маман сауалнамасы" , "profile.php", Array(), Array(), "\$GLOBALS["ПАЙДАЛАНУШЫ"]->IsAuthorized()")), ?>IncludeComponent("bitrix:menu.sections", "", Массив("ID" => $_REQUEST["ELEMENT_ID"], "IBLOCK_TYPE" => "кітаптар", "IBLOCK_ID" => "30", "SECTION_URL" = > "/e-store/books/index.php?SECTION_ID=#ID#", "CACHE_TIME" => "3600")); $aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt); ?>

    Мәзірді көрсетуді ұйымдастыру

    Сайт беттеріндегі мәзірді көрсету компонентті қолдану арқылы орындалады Мәзір (битриц:мәзір). Мысалы, демонстрациялық сайттағы жоғарғы мәзірді шақыру келесідей көрінеді.

    php сценарийлерімен басқарылатын php тіліндегі сайт мәзірінің өзіндік сипаттамалары бар. Бұл абсолютті немесе салыстырмалы сілтемелер ғана емес, бірақ бұл дұрыс болуы мүмкін, бірақ, әдетте, бөлімдер мен бөлімшелері бар динамикалық түрде жасалған бүйірлік тақта сілтеме блоктары және өздерінен сілтеме блоктары ішкі беттерсайт. Динамикалық түрде жасалған мәзір өте ыңғайлы, өйткені оны сайттың кез келген жеріне және ең бастысы, дұрыс уақыт. Яғни, әртүрлі бөлімдер мен бөлімшелерге көшкен кезде сіз динамикалық түрде кеңейте аласыз және әртүрлі блоктармәзір. Оның үстіне олар тек мазмұны бойынша ғана емес, формасы мен дизайны бойынша да әртүрлі болуы мүмкін. Статикалық сайтта мұндай финттерді жасауға әбден болады, бірақ ол қымбатқа түседі қосымша файлдаршаблондар және басқа да көптеген амалдар. Ал php тілінде жазылған сайт мұның ешқайсысын қажет етпейді. Үлгі бұрынғы қалпында қалады. Барлығы бір немесе бірнеше қарапайым PHP сценарийлерімен басқарылады.

    Мұны тексеру үшін мәзірді, мысалы, бірінші тақырыпты динамикалық түрде генерациялау үшін PHP сценарийін жазу және оны бұрын жазылған сценарий арқылы осы тақырыптың мәзірін кеңейтуге мәжбүрлеу жеткілікті. Қалған айдарларды да осыған ұқсас етіп құруға болады. Оның үстіне сценарийдің коды да көп өзгермейді. Тек мәтіндік файл өзгереді, ол сілтемелердің атын және сілтемелердің өзін анықтайды. Мұндай сценарийдің коды төменде келтірілген.

    // Мәзір құрастырушы
    $меню = @file($rubric1_menu);
    $сызықтар = санау($мәзір);
    үшін ($i = 0; $i< $lines; $i++)
    {
    list($menu_link,$menu_name,$menu_title)=жарылу("::", $меню[$i]);
    if($page == rub1_part1 және $i == 0) ($refcolor = "style="color:#cc0000"";)
    elseif($page == rub1_part2 және $i == 1) ($refcolor = "style="color:#cc0000"";)
    elseif($page == rub1_part3 және $i == 2) ($refcolor = "style="color:#cc0000"";)
    басқа ($refcolor = "";)
    $rubric1.="

  • ".$menu_name."
  • ";
    }
    ?>

    Мұндай сценарий жұмыс істеуі үшін мәзір сілтемелерінің атаулары, сілтемелердің өздері және олардың тақырыбы сақталатын мәтіндік файл қажет. Мұндай файлды жасау қиын емес, Dreamweaver негізгі мәзірінен Файл -> Жаңа пәрменін орындау жеткілікті, жаңа файлды жасау html құжаты, бұрын сипатталғандай, тексеріп, қажет болса, жаңа файлдың кодтауын UTF-8 түріне өзгертіңіз, содан кейін оны бұрын ол үшін жасалған деректер қалтасында rubric1.dat атауымен сақтаңыз. Бұл файлдың толық жолы D:/Mysitephp/data/rubric1.dat болады. Төмендегі файлдың мазмұны сілтемелердің өздері, олардың атаулары және тақырыптары (кеңестер). Бұған қоса, бұл сценарийді жұмысқа қосу үшін оны функция арқылы қосу керек қосу() main.php үлгі қозғалтқышында.

    Rub1_part1::1-бөлім::1-бөлімнің 1-бөлімі::
    rub1_part2::2-бөлім::2-бөлім 1-бөлім::
    rub1_part3::3-бөлім::3-бөлім 1-бөлім::

    Сонымен қатар, сіз сайттың толық мекенжайын, беттердің қалталарына апаратын жолдарды және сайттың мета сипаттамаларын, сайт мәзірінің файлдарына жолдарды сақтайтын және оны пайдаланып қосылатын параметрлері бар шағын сценарийді жасауыңыз керек. функциясы қосу() main.php үлгі қозғалтқышында. Ол үшін жаңа PHP файлын жасап, оны php қалтасында settings.php сияқты атаумен сақтау керек. Файлдың толық жолы D:/Mysitephp/php/setings.php болады және оның мазмұны төменде көрсетілген.

    html құжаттары бар # қалта
    $doctemplates = "үлгілер";
    # сценарий каталогына толық жол
    $turl="http://mysitephp.ru";
    # деректері бар дерекқор
    $rubric1_menu = "data/rubric1.dat";
    ?>

    Мәзірді құруға арналған PHP сценарийі қалай жұмыс істейді? Алдымен функцияны пайдаланып $ мәзір айнымалысына өтіңіз файл() rubric1.dat мәтіндік файлының мазмұны орналастырылады. Содан кейін функция санау()жолдар санын есептейді мәтіндік файлжәне функциялары тізім()және жарылу()циклде мәзірдің өзі ашылады, мұнда сызықтарды желімдеу әдісімен (нүкте операциясы . ) олардың аттары мен тақырыптары бар сілтемелер жолдары қалыптасады, олар кейін $rubric1 айнымалысына орналастырылады. Әрі қарай, мәзір сценарийі функция арқылы қосылған шаблондық сценарий қосу(), $rubric1 айнымалысының мазмұнын бұрын сипатталған функцияны пайдаланып сайттағы дұрыс орынға жылжытады repl().

    Мұндай мәзір әлі жұмыс істемейді, өйткені ол барлық қажетті атрибуттары бар сілтемелерді ғана қамтиды, бірақ бұл сілтемелерге өтуді және осы сілтемелерге сәйкес келетін сайт беттерін ашуды қамтамасыз ететін сценарий жоқ. Бұл php сценарийіәрі қарай жалғастырамыз.

    Әрі қарай жоба мәзірді қалыптастыру сценарийімен жаңартылуы мүмкін. Сондай-ақ, жаңартылған жобаны тіркеу және белсендіруден кейін ашылатын бетте жүктеп алуға болады тегін жазылуоң жақтағы панельде. Бет мекенжайы сақталуы керек. Дәл осы бетте әртүрлі жоба жаңартуларын жүктеуге сілтемелер бар пайдалы сценарийлер, схемалар, бағдарламалау және сайт құру бойынша бағдарламалар, сабақтар және бейне оқулықтар жаңадан бастаушылар үшін.

    Жаңа сценарийлермен жаңартылған жүктеп алынған сайттың PHP жобасын енді жоғарыда аталған әрекеттердің нәтижесінде болған оқиғамен салыстыруға болады. Әрі қарай, сәйкессіздіктерді жою үшін жобаны жүктелгенмен толығымен ауыстыру, операцияны орындау, Denwer серверін іске қосу, браузер терезесінде mysitephp.ru деп теріп, одан не шыққанын көру пайдалы болады. Үлгінің сол жақ жоғарғы бөлігінде төмендегі суретте көрсетілгендей бірінші бөлімнің мәзірі кеңеюі керек.

    Барыңыз және сүйікті әлеуметтік желіге кіріңіз

    Егер сізді веб-сайт мәзірін қалай жасауға болады деген сұраққа жауап қызықтырса, сіз дұрыс жерге келдіңіз.

    Біз php-де динамикалық мәзір құруды қарастырамыз, ол бағдарламалаудағы манекендерге, сондай-ақ әлі де резервуарда тұрғандарға арналған.

    3-сабақ

    Сайтымыздың болашақ макетін жасайық. Мұны істеу үшін Photoshop бағдарламасында өте әдемі веб-сайтты сызыңыз және оны бөліктерге кесіңіз. Үстіңгі деректеме, логотип, мәзір және төменгі колонтитулдар сияқты сөзбен жазылмағанын елестетіп көріңіз бұл мысал, және бұл сайттың талғампаз және түрлі-түсті безендірілген элементтері.

    Мысалы, үш бет жасап, оларды 1-бөлім, 2-бөлім, 3-бөлім деп атаймыз

    Бұл мәтін әртүрлі беттербасқаша болады, бірақ біз онымен алаңдамаймыз және оны барлық беттердегідей қалдырамыз.

    php тілінде веб-сайт құруды бастайық.

    1. Үстіңгі деректемені, логотипті, мәзірді, төменгі деректеме блоктарын php немесе html кеңейтімі бар бөлек файлдарға бөліңіз

    header.html

    logo.html

    menu.html

    footer.html

    Оны барлық беттерде көру үшін осы мәтіні бар файлды қосамыз. Оны шақырайық text.html

    Ескерту. Бұдан былай мен қосымша жазбаларды тікелей файлда сақтаймын text.html

    2. Сайтымыздың шаблонын php тілінде жасайық.

    Мұны істеу үшін мұны жай ғана орындайық - нақты файлды сақтаңыз, бірақ php кеңейтімімен және барлық мәтін мазмұнын өшіріңіз. Бұл кәсіби болмасын, бірақ бұл түсінікті, және біз бәрін кейінірек қиындата береміз. Енді ең бастысы - орналасу принципін түсіну.

    3. Енді template.html файлы бізге қажет емес.

    Оның арқасында бізде сайттың қалай көрінетіні туралы түсінік бар.

    4. Біздің шаблон template.php файлы болып табылады

    Енді оған қосу пәрмені арқылы сайттың барлық элементтерін кірістіреміз.

    5. Бастапқыда ойлағанымыздай үш бет жасайық.

    1-бөлім, қоңырау шалайық 1.php

    2-бөлім, қоңырау шалайық 2.php

    3-бөлім, қоңырау шалайық 3.php

    Ол үшін ең қарапайым пәрменді қолдануға болады ретінде сақтау...

    Ең кішкентайы үшін мен түсіндіремін: файлды ашыңыз template.php, содан кейін түймесін басыңыз ретінде сақтау...және атымен сақтаңыз 1.php, процедураны қайталаңыз және сайттың беттерін дәйекті түрде сақтаңыз 2.php, 3.php

    Біз бірдей дизайнмен 3 бет алдық. Файлдың орнына кірістіру жеткілікті text.htmlбасқа, әртүрлі суреттермен немесе кез келгенімен толықтырыңыз html кодтары, сценарийлер мен әрбір беттің мазмұны бірегей болады.

    Назар аударыңыз!

    Егер файл жасалмаса index.phpнегізгі бет үшін, содан кейін браузерде сайт мекенжайын теру арқылы біз сайттың өзін емес, тек каталог құрылымын (қалталар тізімі) көреміз.

    Сіз Денверге қарап, өзіңіз көре аласыз. Жағдайды түзетейік - файл жасаңыз index.phpжәне ұзақ уақыт бойы ілгерілетпей қоңырау шалыңыз үй. Файл жасайық text-home.htmlжәне пәрменімен қамтидыжаңадан жасалғанға қойыңыз басты бетсайт.

    6. php-де сайтты қалай көруге болады?

    Не болды - сондықтан жай көрмеңіз. Бұл енді html кеңейтімі бар үлгі емес.

    Бірақ проблема да емес. Бізге өзіміз керек, яғни. жергілікті серверкомпьютерде. Ол үшін біз Денверді орнатамыз және интернетке шықпай-ақ браузерде жұмысымыздың нәтижесін қараймыз.

    Енді міне тапсырыс. Мен сайттың мекен-жайын теріп, дизайнымен қалыпты түрде жасалғанның бәрін көрдім.

    Енді PHP сайтының мәзірін алайық.

    1. menu.html файлын ашып, 1, 2 және 3 бөлімдерін сайт сілтемелеріне айналдырыңыз. php-дегі сілтемелер әртүрлі тәсілдермен жасалады.

    Біздің міндетіміз php-де жасалған сайтты қалай сезінуді үйрену. Сондықтан біз тұрақты статикалық сайттағы 1-бөлімдегідей сілтемелер жасаймыз және т.б.

    Маған Macromedia Dreamweaver бағдарламасында сілтеме жасау процедурасы өте ұнайды. Орақ алуға уақыт беріңіз ЖАРАЙДЫ МАжәне кофе ішіңіз.

    2. Келуші осы бетте болса, мәзірдегі сілтемені қалай белсенді емес етуге болады.

    Келушіге қай бетте екенін біле отырып, сайтты шарлау ыңғайлы болады.

    Егер сіз барлық қадамдарды нақты нүкте бойынша орындасаңыз, мәзірдегі барлық сілтемелер бізбен үнемі белсенді екенін көре аласыз. Оны қалай түзетуге болады?

    Ненің анықтамасынан бастайық Шартты сөйлемдер

    - бұл жағдайға байланысты қандай да бір әрекеттің орындалатын немесе орындалмағаны.

    Келесі әрекеттерді орындайық:

    • Бізге керек болады айнымалыларжәне біреуі шартты оператор:

    егер ($мастер == «Мастер»)// бұл шарт. Егер ол орындалса, мәзірдің осы жерінде echo пәрменін қолдана отырып, «Үй» жазуын көрсететін қарапайым HTML тегтері енгізіледі.

    жаңғырық»

    үй

    ";

    басқа//"әйтпесе" дегенді білдіреді - шарт орындалмаса не болады. Бұл жағдайда, егер шарт орындалмаса, «Негізгі» жазуы негізгі бетке апаратын сілтеме болады.

    жаңғырық»

    үй

    ";

    • Біз бір шарт қойдық, бірақ орындау үшін айнымалыны тексеруоны сұрау керек.

    Ол үшін барлық беттерге келесі код блоктарын орналастырыңыз:

    $master = "Мастер";

    $master ="1-бөлім";

    $master = "2-бөлім";

    $master ="3-бөлім";

    Көріп отырғаныңыздай, әр беттің өз коды бар.

    Сонымен, PHP мәзірін құрудың практикалық қадамдары келесідей болады:

    1) Файлды ашу index.php

    және кодты қойыңыз

    $master = "Мастер";

    торап мәзірінің өзін көрсететін кодтың кірістіру нүктесіне "menu.html" қосу;
    ?>

    2) Файлды ашу menu.htmlжәне негізгі бетке қарапайым html сілтемесінің орнына шарты бар кодты енгізіңіз.

    Біз браузерге қарап, таңданамыз! Басты бетке өтсек, сілтеме енді белсенді емес!

    3) 1 және 2-қадамдарды беттермен қайталаңыз 1.php, 2.php, 3.php

    1-қайталау:

    1) 1.php файлын ашып, мәзірді көрсететін кодтың алдына берілген айнымалысы бар блокты қойыңыз

    $master ="1-бөлім";

    2) menu.html файлын ашып, жай сілтеменің орнына шарты бар кодты қойыңыз 1-бөлімкелесі өзгерістерді енгізу арқылы:

    егер ($master == «1-бөлім»)// бұл шарт. Егер ол орындалса, онда мәзірдің осы жерінде echo пәрмені арқылы «1-бөлім» жазуын көрсететін қарапайым HTML тегтері енгізіледі.

    жаңғырық»

    1-бөлім

    ";

    басқа//"әйтпесе" дегенді білдіреді - шарт орындалмаса не болады. Бұл жағдайда, егер шарт орындалмаса, «1-бөлім» деген жазу басты бетке апаратын сілтеме болады.

    жаңғырық»

    1-бөлім

    ";

    Ғажайып қайталанды! Енді біз бетте болсақ 1-бөлім, мәзірдегі сілтеме белсенді емес.

    Қайталау – білімнің анасы! Немесе танктегілер үшін! Тағы бір рет

    қайталау 2

    1) Ашық файл 2.phpжәне кодты қойыңыз.

    $master = "2-бөлім";

    2) menu.html файлын қайта ашып, шарты бар кодты қойыңыз

    егер ($master == «2-бөлім»)// бұл шарт. Егер ол орындалса, онда мәзірдің осы жерінде echo пәрмені арқылы «2-бөлім» жазуын көрсететін қарапайым HTML тегтері енгізіледі.

    жаңғырық»

    2-бөлім

    ";

    басқа//"әйтпесе" дегенді білдіреді - шарт орындалмаса не болады. Бұл жағдайда, егер шарт орындалмаса, «2-бөлім» деген жазу басты бетке апаратын сілтеме болады.

    жаңғырық»

    2-бөлім

    ";

    Қайталау 3

    1) ашамыз файл 3.phpжәне айнымалы мәнді орнатыңыз.

    $master ="3-бөлім";

    2) menu.html файлында сілтеменің орнына шарты бар кодты енгізіңіз 3-бөлім, өзгерістер мыналар:

    егер ($master == «3-бөлім»)// бұл шарт. Егер ол орындалса, онда мәзірдің осы жерінде echo командасының көмегімен «3-бөлім» жазуын көрсететін қарапайым HTML тегтері енгізіледі.

    жаңғырық»

    3-бөлім

    ";

    басқа//"әйтпесе" дегенді білдіреді - шарт орындалмаса не болады. Бұл жағдайда, егер шарт орындалмаса, «3-бөлім» деген жазу басты бетке апаратын сілтеме болады.

    жаңғырық»

    3-бөлім

    ";

    Нәтиже: біз осы түрдегі мәзірдегі сілтемелердің орнына

    үй


    1-бөлім

    2-бөлім


    3-бөлім

    Бұл PHP оқулығы сайтқа кірушілердің сұранысы бойынша жазылған және PHP сайты үшін динамикалық мәзірді құруды үйренуге арналған практикалық нұсқаулық болып табылады.

    Келесі веб-шебердің хит парағы php-дегі әрбір бет үшін бірегей тақырыптарды, сипаттамаларды және кілт сөздерді қалай жасауға болатынын айтып береді.

    Мұрағатты барлық сайт үлгісімен және PHP мәзір файлдарымен жүктеп алуға болады. Бағдарламалауды жаңадан бастаушыларға ұсынылады.

    Егер сіз php тілін байыпты зерттеуге дайын болсаңыз, Поповтың жақсырақ бейне курсын табу қиын. Оның тәжірибесі мол, стилі жақсы.

    ]]> ]]>

    Мақала ұнады ма? Достарыңызбен бөлісіңіз!
    Бұл мақала пайдалы болды ма?
    Иә
    Жоқ
    Пікіріңізге рахмет!
    Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
    Рақмет сізге. Сіздің хабарламаңыз жіберілді
    Мәтіннен қате таптыңыз ба?
    Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!