თუმცა, Modx არის მენიუს ახალი ელემენტები პროდუქტებისთვის. Bagatory MODX მენიუ Bootstrap ვიკიებით. როგორ დავაყენოთ მენიუს დინამიური სტრუქტურა

ვაი, ეს ჩვენთვის არ არის ;).

ყველაფერი ნულიდან გავაკეთეთ. ჩვენ (მე) გვჭირდებოდა რაღაც და არის თუ არა მზად რაიმე ვარიანტი? იმიტომ რომ ეს უფრო მაწყობს. რადგან ასეთ მიდგომას ყველაზე ერთგულად ვცემ პატივს. იმის გამო, რომ ჩვენი საკუთარი შემუშავების შემდეგ, ჩვენ შეგვიძლია მარტივად ვიმუშაოთ სხვის კოდზე, შევცვალოთ იგი, გამოვასწოროთ ცვლილებები ან დავამატოთ კონკრეტული სიტუაციისთვის საჭირო ფუნქციონალებით. დიახ, დროა გამოიმუშაოთ საკუთარი ფული - მაგრამ ყველაზე ხშირად ეს ძალიან სასიამოვნოა!

გარდა ამისა, გთხოვთ გაითვალისწინოთ, რომ მკითხველს აქვს მინიმალური ცოდნა PHP პროგრამირების შესახებ. თეორიულად, იმ ადამიანებს, რომლებსაც საერთოდ არ ესმით კოდი, შეუძლიათ დააკოპირონ კოდი და გააკეთონ ქვემოთ აღწერილი ყველაფერი. თუმცა, ალბათ, მათთვის უკეთესი იქნება მზა ფრაგმენტები a la Ditto-ს ვიკორისტოვუვათ, სუნის ფრაგმენტები უამრავ შესაძლებლობას მოგცემთ ახალი კონფიგურაციისთვის, მთავარ კოდზე დაბრუნების გარეშე.

არ მინდა ვიმსჯელო იმაზე, თუ რა ჯობია კორისტუვაჩს - ძმები მზად არიან დაშალონ თავიანთი... ამ და სხვა შემთხვევაშიც აქვს თავისი დადებითი და უარყოფითი მხარეები. განსაკუთრებით ჩემთვის, სხვა ვარიანტს მეტი უპირატესობა აქვს. ანალოგიურად, თავად მკითხველები გამოჩნდებიან.

აბა, მოდით შევხედოთ ჩვენს. ჩვენს საიტზე არის სხვადასხვა პროგრამული ნაწილების უამრავი ფრაგმენტი და დავიწყებთ იმით, რაც საჭიროა...

ზედა მენიუ

ტერმინი "ზედა მენიუ" მე ვგულისხმობ შეტყობინების აკრეფას საიტის ზედა გვერდზე (Malyunok div. ქვემოთ):

ფრაგმენტის შექმნის პირველ მაგალითს ძალიან ნათლად აღვწერ, მომავალში ძირითადად ყველაზე დეტალურ დეტალებზე გავამახვილებ ყურადღებას.

ჩვენ ვაახლებთ ჩვენს ხეს საიტზე მენეჯმენტის სისტემაში, რომლის შესახებაც ადრე ვთქვით:

როგორც პატარა სურათიდან ხედავთ, საიტის ხეზე შეგიძლიათ იხილოთ რამდენიმე დოკუმენტი (და „ბლოგი“, „ავტორების შესახებ“, „ფოტოები“ და „ კარიბჭის ბმული"), როგორ შევქმნა ეს ზედა მენიუში.

მე ასევე ვხვდები, რომ ჩვენ დავმალეთ დოკუმენტები, რომელთა ჩვენება მენიუში არ გვინდოდა. მაგალითად, დოკუმენტის პარამეტრებში, სახელწოდებით „საიტის ძებნა“, წაიშალა ოფცია „მენიუში ჩვენება“ და დაიკარგა ორი დოკუმენტი „გამოქვეყნება“ და „კატეგორიები“; „დოკუმენტის პარამეტრებში“.

ამ გზით, ჩვენ ადრე მოვამზადეთ ზედა მენიუ საკონტროლო სისტემაში.

მოდით ახლა გადავიდეთ ჩვენი საქმიანობის კვების პრეზენტაციაზე პირდაპირ საიტზე.

საიტზე განთავსებული პროგრამების უმეტესობა მონიშნულია როგორც "", PHP-ში კოდის გარშემო (ისინი ასევე შეიძლება გავიგოთ, როგორც ფუნქციები ან ქვეპროგრამები). MODx-ში ახალი ზედა მენიუს განსახორციელებლად, თქვენ ასევე უნდა შექმნათ ახალი სნიპეტი, დაპროგრამოთ და დაამატოთ დაწკაპუნების ფრაგმენტი შაბლონში საჭირო ადგილას.

მოდით გადავიდეთ მართვის სისტემაში, გადადით "რესურსების" ჩანართზე -> "რესურსების მენეჯმენტი" -> "Snippets" ჩანართზე და დააჭირეთ შეტყობინებას "New Snippet". ველში „ნაწყვეტის სახელი“ შეიყვანეთ „TopMenu“ ყოველგვარი ჩანართების გარეშე და ახლა უბრალოდ შეინახეთ ცარიელი ფრაგმენტი კოდის გარეშე. შენახვის შემდეგ დავასახელოთ ჩვენი ფრაგმენტი "Snippets" ჩანართზე.

შეგახსენებთ, რომ ჩვენს შაბლონში ზედა მენიუს "TOPMENU" განყოფილებაში ვათავსებთ. მოდით გადავიდეთ "Chunks" ჩანართზე და გავხსნათ "chunk". ამ ნაწილის ნაცვლად გვაქვს შემდეგი კოდი:


  • ბლოგი

  • ავტორების შესახებ

  • ფოტოები

  • კარიბჭის ბმული

ეს კოდი ქმნის ჩვენს მენიუს. მოდით გავაკეთოთ კომენტარი და დავამატოთ ფრაგმენტის "TopMenu" დაწკაპუნება ნაწილზე:


[]

აქ კიდევ უნდა წავიდეთ ცოტა უფრო შორს, რათა ავხსნათ ამ მშენებლობის ადგილი []. მარჯვნივ, ანალოგიურად, ფორმის დამატებითი კონსტრუქციის უკან [] ან [! SnippetName!] ჩვენ შეგვიძლია გავატაროთ სნიპტის დაწკაპუნებები ჩვენი შაბლონების ნებისმიერ ადგილას და უბრალოდ გავაგზავნოთ შეტყობინებები საიტის ნებისმიერ სხვა საიტზე.

ამ შემთხვევაში კონსტრუქცია [] ნიშნავს დაწკაპუნებას კეშუვალნიფრაგმენტი, შემდეგ დააწკაპუნებს დინამიური ქვეპროგრამა, ძიების შედეგი იქნება მხარდაჭერილი და მოჰყვება ერთხელ, შემდეგ კი, როდესაც საიტს დააწკაპუნებთ, ამ ფრაგმენტზე დააწკაპუნეთ, შედეგი უცვლელი იქნება, ფრაგმენტის განმეორებითი დაწკაპუნების შემდეგ აღარ გამოჩნდება დიახ. ამ გზით, თქვენ დაზოგავთ თქვენი ვებ სერვერის რესურსებს (და ეს ახლა კიდევ უფრო მნიშვნელოვანია, როდესაც რესურსების გამოყენება მაღალია).

თუმცა, არის სიტუაცია, როდესაც საჭიროა სნიპეტის კოდის ხელახლა შედგენა მთელი საათის განმავლობაში და შეუძლებელია შედეგების ქეშირება. ასეთ სიტუაციებში მშენებლობა [! SnippetName!]. ანალოგიით, ამ კონსტრუქციას დაწკაპუნება ეწოდება შეუმჩნეველიფრაგმენტი.

მოდით, შევინახოთ „TOPMENU“ ნაწილი და განაახლოთ საიტის მხარე. ჰმ, გასაკვირი არ არის, მაგრამ ზედა მენიუ გაქრა. მართლა ასე მშვენიერია? მენიუს HTML კოდის ნაწილებად კომენტირებისას, ჩვენ დავაფიქსირეთ მისი გარეგნობა ბრაუზერში (გადაატრიალეთ იგი შიგ დათვალიერებით გამომავალი კოდი HTML გვერდები). და ჩვენი ფრაგმენტი "TopMenu" არაფერს ავნებს, ფრაგმენტებს ჯერ არაფერი დაუმატებია. ცოტა გამოვასწოროთ :).

მოდით დავუბრუნდეთ "Snippets" ჩანართს, გადავხედოთ "TopMenu" სნიპეტის შექმნას და შევეცადოთ გავაპროტესტოთ მისი მიზანშეწონილობა... მოთმინება, ჩემო მკითხველო, ყველამ არ იცის ეს დეტალები.

დასაწყებად, მოდით დავწეროთ უმარტივესი კოდი (პირველადი PHP კოდი):

ექო "ტესტირება...";
?>

შენახვამდე აირჩიეთ “Continue editing”, ასე რომ მოგვიწევს სნიპეტის არაერთხელ შეცვლა და შემდეგ შენახვა. ჩვენ ვაახლებთ საიტის გვერდს და ვცვლით ზედა მენიუს... კარგი, სიმართლე რომ გითხრათ, ერთი შეხედვით, მენიუს ლურჯი ფონის ოდნავ გაფართოების გარდა, შესაძლოა სხვა ცვლილებები არ იყოს. ჩვენ ვაჭერთ „CRTL + A“-ს, რომ ნახოთ მთელი ტექსტი საიტის გვერდზე და ასევე მნიშვნელოვანია, რომ ჩვენმა ნაწყვეტმა მენიუს ადგილას გამოაჩინოს ტექსტი „ტესტირება...“, უბრალოდ ტექსტის ფერი ემთხვევა ფონის ფერი.

შეცვალეთ სნიპეტის კოდი შეურაცხმყოფელი კოდით:

ექო" ტესტირება...";
?>

ახლა ჩვენთვის ნათელია, რომ ჩვენი ფრაგმენტი მუშაობს და გვეუბნება (!) შეიყვანეთ სწორი ტექსტი. კარგია, მაგრამ ეს არ არის საკმარისი ჩვენი ამოცანისთვის, ჩვენ შევძელით ჩვენი ფრაგმენტი, რათა გამოეტანა შეტყობინება საკონტროლო სისტემიდან და ზუსტად იმავე HTML კოდით, რაც ჩვენ გავაკეთეთ კომენტარი "TOPMENU" ნაწილზე.

და ისევ პატარა ვნებათაღელვა...

ურთიერთდაკავშირებული დოკუმენტების მთელი სისტემა MODx-ში შთაგონებულია პრინციპით: ყოველი „მამის დოკუმენტი“ შეიძლება ნულიდან შემცირდეს „ბავშვის დოკუმენტების“ უპიროვნებამდე („მშობელი“ -> „შვილები“).

MODx მონაცემთა ბაზაში თითოეულ დოკუმენტს აქვს საკუთარი უნიკალური იდენტიფიკატორი "ID" - ეს არის რიცხვი, რომელიც გვხვდება საიტის ხეში თითოეული დოკუმენტის მინიჭებისთვის.

როგორც ჩანს, ამ უნიკალურ იდენტიფიკატორს აქვს მხოლოდ ერთი მნიშვნელობა - ის ნათლად განსაზღვრავს კონკრეტულ დოკუმენტს მართვის სისტემაში. და მეტი არაფერი! კონკრეტულად აღვნიშნავ ამ ფაქტს, არაერთი მცდელობა ყოფილა იდენტიფიკატორების შეცვლა ზოგადი მიზნებისთვის... სასწრაფოდ უნდა დაიმახსოვროთ, თუ უბრალოდ სისულელეა, ნუ შეწუხდებით ვატი ცი ნომრების შეცვლაზე. მათ დიდ პატივს სცემენ, როგორც წესი, ეს მაჩვენებლები შედგენილია უბრალოდ მომღერლებისთვის გაგზავნილი დოკუმენტების გენერირებისთვის.

MODx მონაცემთა ბაზას ასევე აქვს სპეციალური „მშობელი“ ველი კანის დოკუმენტისთვის. ამ ველის მნიშვნელობა არის რიცხვი, რომელიც მიუთითებს ან მამის დოკუმენტის უნიკალურ იდენტიფიკატორზე, ან, ვინაიდან დოკუმენტი მდებარეობს ხის ფესვზე, ნულს. ამგვარად, ახლა უკვე შესაძლებელია ნათლად განისაზღვროს, თუ რომელი საბუთია თავად ამ მამისთვის.

იმის გასაგებად, თუ რაზე ვსაუბრობდით, გახსენით phpMyAdmin, აირჩიეთ თქვენი მონაცემთა ბაზა და იპოვეთ ცხრილი (PREFIX) site_content, სადაც (PREFIX) არის თქვენი პრეფიქსი, რომელიც შეიყვანეთ ინსტალაციის დროს. თქვენ ნახავთ უამრავ ველს, რომლებშიც ინახება დოკუმენტის მონაცემები, მათ შორის „ID“ - უნიკალური იდენტიფიკატორი, „მშობელი“ - მშობლის დოკუმენტის ნომერი, „pagetitle“ - გვერდის სათაური და სხვა.

ასევე, MODx-ში დოკუმენტების შენახვისა და დაკავშირების პრინციპის შესახებ ინფორმაციის მიცემის შემდეგ, ჩვენ შეგვიძლია გავიგოთ, თუ როგორ ავირჩიოთ საჭირო მონაცემები ზედა მენიუს საჩვენებლად: ჩვენ უნდა ვიპოვოთ მონაცემთა ბაზაში ყველა დოკუმენტი, რომელიც მდებარეობს ფესვსა და ხეში. საიტი, რათა მათი გადატანა შესაძლებელია ველში "მშობელი" არის null.

ვიკორისტუჩი SQL ენამსგავსი შეკითხვა აღწერილია დაახლოებით ასე (შეგიძლიათ სცადოთ შეიყვანოთ ეს მოთხოვნა SQL შეყვანის ველში phpMyAdmin-ში, ჯერ შეცვალოთ "modx_" თქვენი პრეფიქსით):

აირჩიეთ *
`modx_site_content`-დან
WHERE `მშობელი` = 0;

თუმცა, ასეთი მოთხოვნა მოგვცემს აბსოლუტურად ყველა დოკუმენტს საიტის ძირიდან, რაც მთლად სწორი არ არის, მთავარი ამოცანიდან გამომდინარე - შეტყობინების ჩვენება მხოლოდ იმ დოკუმენტებზე, რომლებიც:

  • პუბლიკაციის სტატუსი (ამ პუნქტის მონაცემთა ბაზაში მითითებულია ველი "გამოქვეყნებული", სადაც მნიშვნელობა = 1 ნიშნავს, რომ დოკუმენტი გამოქვეყნებულია და მნიშვნელობა = 0 - გამოუქვეყნებელი).
  • უხილავი ("წაშლილი" ველი, სადაც 1 ნიშნავს წაშლილს და 0 ნიშნავს არ ჩანს),
  • და რომლებშიც დაინსტალირებულია "Show in menu" (ველი "hidemenu", სადაც 1 ნიშნავს ჩვენებას, ხოლო 0 ნიშნავს მენიუში ჩვენებას).

გარდა ამისა, ცოტა წინ გადახტომით, ჩვენ დაუყოვნებლივ ვახარისხებთ დოკუმენტებს "პოზიცია მენიუში" პარამეტრის მიხედვით, რაც მიუთითებს კანის მოვლის პოზიციაზე ჩვენს მენიუში.

ისე, SQL პერსპექტივიდან, ეს საკმაოდ რთულია და ასე გამოიყურება:

აირჩიეთ *
`modx_site_content`-დან
WHERE `გამოქვეყნებული` = 1
და `მშობელი` = 0
და `წაშლილი` = 0
და `hidemenu` = 0
შეკვეთა `მენიუ ინდექსით` ASC;

თეორიულად, ყველა SQL შეიძლება ჩაიწეროს სნიპეტში ყოველგვარი შუალედის გარეშე გთხოვთ დაეხმაროთ PHP-სსკრიპტები, ყოველ ჯერზე მონაცემთა ბაზის ხელახლა დაკავშირება და სხვა რუტინული ოპერაციების აღმოფხვრა, მათი განმეორება... მაგრამ, მოიცადეთ, არ ღირდა გამარჯვებული ჩარჩოს გაგება, რომელიც გიჟურად არის ჩვენი კონტროლის სისტემა, რადგან MODx ასევე მათი უდიდესი ღირსებები, უზრუნველყოფს პროგრამული ინტერფეისის ფუნქციების მზა კომპლექტს (API, აპლიკაციის პროგრამირების ინტერფეისი). API არის პროგრამული უზრუნველყოფის ფუნქციების ერთობლიობა, რომელიც აერთიანებს და ამარტივებს მონაცემთა დამუშავების მრავალფეროვან პროცესებს.

ჩვენ ვუყურებთ ერთ-ერთ API ფუნქციას "getDocumentChildren" ჩვენს სნიპტში. "getDocumentChildren" ფუნქცია ამოიღებს მონაცემთა მიმდინარე პარამეტრებს ხედიდან:

  • $ ID - მამის საბუთის ნომერი,
  • $ აქტიური - აირჩიეთ მხოლოდ გამოქვეყნებული ან გამოუქვეყნებელი დოკუმენტები (1 ან 0 პასუხი),
  • $ წაშლილი - აირჩიეთ მხოლოდ წაშლილი ან უხილავი დოკუმენტები (1 | 0),
  • $ ველები - ველები, რომლებიც არჩეულია მონაცემთა ბაზიდან,
  • $ Where - სპეციალური მნიშვნელობები, ასე რომ WHERE გონება SQL განცხადებებში,
  • $ Sort - ველი, რომლითაც ხდება შედეგების დახარისხება
  • $ მიმართულება - პირდაპირი დახარისხება, შეგიძლიათ მიიღოთ მნიშვნელობები ASC ან DESC, ისე რომ დახარისხება იყოს ყველაზე პატარადან უფრო დიდი მნიშვნელობაჩი ნავპაკი
  • $ Limit - შეზღუდეთ მოთხოვნა, ასე რომ თქვენ შეგიძლიათ გამოიყენოთ LIMIT SQL მოთხოვნაში

$Results = $modx->getDocumentChildren(
$Id = 0,
$აქტიური = 1,
$წაშლილი = 0,
$Where = "hidemenu = 0",
$Sort = "მენიუიდექსი",
$Dir = "ASC",
$ ლიმიტი
);

ბეჭდვა ("

Foreach ($results როგორც $key => $value) (
print_r ($value);
}

ბეჭდვა ("");
?>

შეინახეთ ფრაგმენტი და განაახლეთ გვერდი. ახალი სნიპეტის "TopMenu"-ს შედეგად ნახავთ მასივების სიას და მათ მნიშვნელობებს, დალაგებულია "მენიუ ინდექსის" ველის მნიშვნელობების მიხედვით უმცირესი მნიშვნელობიდან ყველაზე დიდამდე. სცადეთ შეცვალოთ პარამეტრი $ dir = "ASC" $ dir = "DESC" - შედეგად, მასივები გადაიტვირთება და პირველი დოკუმენტი იქნება ყველაზე მაღალი მნიშვნელობების მქონე დოკუმენტი "მენიუიდექსის" ველში.

გამოცდილ პროგრამისტებს ესმით, რომ შედეგები უკვე იძლევა ყველაფერს, რაც საჭიროა მენიუს მოსამზადებლად. აბა, სულ ესაა. რაც არ უნდა იყოს, მე ასე გავაგრძელებ: ჩვენ გადავწერთ PHP კოდს, რათა მაქსიმალურად მივუახლოვდეთ სასურველ შედეგს.

$Results = $modx->getDocumentChildren(
$Id = 0,
$აქტიური = 1,
$წაშლილი = 0,
"ID, გვერდის სათაური, გამოქვეყნებული, მენიუს ინდექსი, წაშლილი, დამალული მენიუ, მენიუს სათაური",
$Where = "hidemenu = 0",
$Sort = "მენიუიდექსი",
$Dir = "ASC",
$ ლიმიტი
);

$Items = "";
$output = "";

Foreach ($results როგორც $key => $value) (
$Items. = "


  • ".$Value["pagetitle"]."
  • \n";
    }

    თუ ($items! = "") (
    $output = "

      \n";
      $ გამომავალი. = $Items;
      $ გამომავალი. = "
    \n";
    }

    $output-ის დაბრუნება;

    ჩვენ არ გავაანალიზებთ კოდს დეტალურად, რადგან ეს არის მხოლოდ ძირითადი PHP კოდი, მეტი არაფერი. თუ ვინმეს აქვს რაიმე კონსტრუქციის საღი აზრი, გთხოვთ დატოვოთ კომენტარი, ან, უფრო სწორად, წახალისება სხვა ფორუმებზე.

    შეინახეთ ახალი სნიპეტის კოდი და განაახლეთ გვერდი. შედეგად, ჩვენ მიერ შექმნილი კოდი ძალიან პრაქტიკული იყო მათთვის, ვისაც სურდა წაშლა:

    ამ შემთხვევაში ავტომატურად იქმნებოდა შეტყობინებები, რომელთა სტრუქტურა მთლიანად იმეორებს დოკუმენტების სტრუქტურას MODx ხეში. ამის შესამოწმებლად, შეეცადეთ შექმნათ რაიმე სახის სატესტო დოკუმენტი საიტის ძირში და განაახლოთ გვერდი.

    თუმცა, ეს ყველაფერი არ არის. უკვე სასიმღეროდ აღნიშნეს, რომ მესიჯი არის, მაგრამ მესიჯი არ არის... პარადოქსი :). გევედრები, რომ მენიუში საბუთების სახელები რომც იყოს გამოსახული, არ გამოიჩინო პროტესტი მათ მიმართ. ლოგიკურია, რომ ამ დროისთვის კოდი რეალური ბილიკების ნაცვლად აჩვენებს "#".

    სიმართლის დასადგენად საჭიროა კიდევ ერთი ზღვარის გარკვევა ქერქი MODx: საიტის ნებისმიერი შიდა გვერდის მისამართები შეიძლება გამოიყოს დამატებითი კონსტრუქციის გამოყენებით [~ id ~], სადაც id არის უნიკალური ნომერი საჭირო დოკუმენტი, ასე რომ, იგივე ნომერი, მკლავებში მითითებები ენიჭება კანის დოკუმენტის სახელს საიტის ხეზე. ამ გზით, გვერდის ნაცვლად შაბლონში / Ankara / ასეთი დიზაინის [~ 1 ~] დამატების შემდეგ,

      • ინდექსი - დოკუმენტის მეტსახელი "ბლოგი", თუ ჩვენ შევიყვანეთ "ინდექსი", როგორც დოკუმენტის მეტსახელი, ან
      • 1.html, რადგან ჩვენ არაფერი შევიყვანეთ ველში "Name of Koristuvach" დოკუმენტისთვის "ბლოგი"
    • თუ ჩვენმა მეგობრებმა გამოგიგზავნეს შეტყობინება, მაშინ რაც შეეხება index.php-ის ტექსტს? id = 1

    მოდით გადავიწეროთ ფრაგმენტი ამ ინფორმაციით:

    $Results = $modx->getDocumentChildren(
    $Id = 0,
    $აქტიური = 1,
    $წაშლილი = 0,
    "ID, გვერდის სათაური, გამოქვეყნებული, მენიუს ინდექსი, წაშლილი, დამალული მენიუ, მენიუს სათაური",
    $Where = "hidemenu = 0",
    $Sort = "მენიუიდექსი",
    $Dir = "ASC",
    $ ლიმიტი
    );

    $Items = "";
    $output = "";

    Foreach ($results როგორც $key => $value) (
    $Items. = "


  • ".$Value["pagetitle"]."
  • \n";
    }

    თუ ($items! = "") (
    $output = "

      \n";
      $ გამომავალი. = $Items;
      $ გამომავალი. = "
    \n";
    }

    $output-ის დაბრუნება;

    ამრიგად, ჩვენ შევცვალეთ # [~ ". $ Value [" id "]." ~], სინამდვილეში კანის დოკუმენტისთვის მასივი წარმოდგენილია თავისი უნიკალური ID-ით [~ id ~] სტრუქტურის შუაში. შედეგად, ჩვენ შეგვიძლია შევარჩიოთ მენიუ პრაქტიკული ვარიანტებით.

    ჩვენ პრაქტიკულად მივედით იდეალამდე... თუმცა, ახლა გვაკლია ერთი დეტალი, რომელიც გულდასმით უნდა დამუშავდეს: დიზაინერმა აღნიშნა, რომ ჩვენთვის გაგზავნილი ნივთი უნდა იყოს მონიშნული თეთრი ფონით და ნივთის ფერი აშკარად პასუხისმგებელია. ფორთოხლისთვის ცვლილებებისთვის.

    ამის მისაღწევად, ჩვენ გავამჟღავნებთ MODx CMS-ის საიდუმლოებებს :). API შეიცავს ფუნქციას $ modx-> documentIdentifier, რომელიც აბრუნებს ნაკადის გვერდის უნიკალური იდენტიფიკატორის მნიშვნელობებს. ეს გვჭირდება აქტიური გვერდის დასანიშნად და მენიუში სანახავად:

    $Results = $modx->getDocumentChildren(
    $Id = 0,
    $აქტიური = 1,
    $წაშლილი = 0,
    "ID, გვერდის სათაური, გამოქვეყნებული, მენიუს ინდექსი, წაშლილი, დამალული მენიუ, მენიუს სათაური",
    $Where = "hidemenu = 0",
    $Sort = "მენიუიდექსი",
    $Dir = "ASC",
    $ ლიმიტი
    );

    $Cid = $modx->documentIdentifier;

    $Items = "";
    $output = "";

    Foreach ($results როგორც $key => $value) (
    თუ ($value["id"] == $cid) (
    $active="id=\"აქტიური\"";
    }
    სხვა (
    $active = "";
    }
    $Items. = "
    ".$Value["pagetitle"]."
    \n";
    }

    თუ ($items! = "") (
    $output = "

      \n";
      $ გამომავალი. = $Items;
      $ გამომავალი. = "
    \n";
    }

    $output-ის დაბრუნება;

    Კარგი? Ვაუ!

    ალე ვი არ ფიქრობდა, რომ ამით ყველაფერი დამთავრდებოდა? და ეს მართალია. ჩვენ ვაყენებთ საკუთარ თავს ყველაზე მაღალ ზოლს, გვინდა გამოვიყენოთ MODx-ის მაქსიმალური შესაძლებლობები. და არის კიდევ ერთი პატარა დეტალი, რომელიც დავკარგეთ.

    ყურადღება მიაქციეთ ველების სახელებს, რომლებსაც ვითხოვთ დამატებით ფუნქციაში getDocumentChildren: "id, pagetitle, published, menuindex, deleted, hidemenu, menutitle". მათ შორის არის ისეთი ველი, როგორიცაა "menutitle". როგორც სახელი გულისხმობს, შეგიძლიათ დაზოგოთ ფული ამ სფეროში მენიუს სათაური. საკონტროლო სისტემაში ასევე არის შეყვანის ველი "მენიუ ელემენტი". ეს ველი უნდა დაიფაროს ძალიან მარტივი გზით. თუმცა, ლოგიკაა, რომ თუ ეს ველი შევსებულია, მაშინ ჩვენი პასუხისმგებლობაა მენიუში გაგზავნილი ტექსტის ჩანაცვლება შეყვანილი ტექსტით. ისე, უბრალოდ ვთქვათ:

    /********************************
    დასახელება: TopMenu
    მეტა: ზედა მენიუს ხატულა
    პროექტი: MODx Demosite
    ********************************/

    $Results = $modx->getDocumentChildren(
    $ Id = 0, // სამშობლოს დოკუმენტის ID
    $ Active = 1, // ირჩევს მხოლოდ გამოქვეყნებულ დოკუმენტებს
    $ წაშლილი = 0, // აირჩიეთ მხოლოდ უხილავი დოკუმენტები
    "ID, pagetitle, published, menuindex, deleted, hidemenu, menutitle", // აირჩიეთ ველები მონაცემთა ბაზიდან
    $ Where = "hidemenu = 0", // აირჩიეთ მხოლოდ ის დოკუმენტები, რომლებიც უნდა გამოქვეყნდეს მენიუში
    $ Sort = "menuindex", // დაალაგეთ დოკუმენტები მენიუს ველის მიხედვით
    $ Dir = "ASC", // დოკუმენტების დახარისხება ასაკის მიხედვით
    $ Limit = "" // ლიმიტის დაყენება შეუძლებელია (LIMIT პარამეტრი SQL განცხადებაში)
    );

    $Cid = $modx->documentIdentifier; //გამოვლენადი ნაკადის გვერდის ID

    $Items = "";
    $output = "";

    Foreach ($results როგორც $key => $value) (
    თუ ($value["id"] == $cid) (
    $active="id=\"აქტიური\"";
    }
    სხვა (
    $active = "";
    }
    if ($value["menutitle"]!="") (
    $title = $value["menutitle"];
    }
    სხვა (
    $title = $value["pagetitle"];
    }
    $Items. = "
    ".$Title."
    \ N "; // აირჩიეთ მენიუს ელემენტები
    }

    // მინდოდა გამეგო, მინდოდა თუ არა მენიუს ელემენტი,
    // შექმენით HTML მენიუს კოდი
    თუ ($items! = "") (
    $output = "

      \n";
      $ გამომავალი. = $Items;
      $ გამომავალი. = "
    \n";
    }

    // რობოტული ფრაგმენტის შედეგის როტაცია
    დაბრუნება $გამომავალი;

    ახლა სცადეთ ტექსტის შეყვანა ნებისმიერი დოკუმენტის „მენიუ ელემენტის“ შეყვანის ველში... ყველაფერი მუშაობს? სასწაული!

    P.S.: შესაძლოა, თქვენს მკითხველს გაუკვირდეს, რომ როდესაც ჩვენი მენიუს ინსტრუქციებზე გადადიხართ, გვერდების ნაცვლად, გვერდები არ იცვლება, თუმცა, ბრაუზერის მისამართის დონის მიხედვით ვიმსჯელებთ, ახალ გვერდებზე გადავდივართ.. მერწმუნეთ, ეს აბსოლუტურად ნორმალურია, რადგან აბსოლუტურად ყველაფერი i გვერდებზე ამჟამად გამოიყენება იგივე შაბლონი. ამ შაბლონში, ფაქტობრივად, მხოლოდ ზედა მენიუ გახდა დინამიური, ყველა სხვა დეტალი უცვლელი რჩება. ამას მოგვიანებით აუცილებლად გავუმკლავდებით, მაგრამ ამასობაში პანიკაში ნუ ჩავარდებით ;).

    visnovok:

    კიდევ ერთი სტატია თავის ლოგიკურ დასკვნამდე მივიდა.

    ჯერ ჩანთები:

    • ჩვენ ვცადეთ ნავიგაცია MODx დოკუმენტების შესაყვანად შესაბამის ველებში და დავაკვირდით, როგორ შეინახებოდა ეს ინფორმაცია მონაცემთა ბაზაში;
    • ჩვენ გავიგეთ ახალი სპეციალური MODx დიზაინის შესახებ: [], [! SnippetName!], [~Id~];
    • გავიგეთ სპეციალური API-ს არსებობის შესახებ და გავიგეთ API-ის ზოგიერთი ფუნქციის შესახებ;
    • და ამ ცოდნის საფუძველზე, ჩვენ შევქმენით ჩვენი ახალი სნიპეტი MODx-ში!

    მენიუს თაობის ნაწყვეტი. თქვენ შეგიძლიათ შეცვალოთ Wayfinder და ის საშუალებას გაძლევთ უფრო ინდივიდუალურად მიუთითოთ პარამეტრები.

    მაგალითად, იქნება მენიუები რამდენიმე მენიუთი, რომლებიც აჩვენებს მათ ერთდროულად ან გვერდიგვერდ.

    სიჩქარის ყველაზე დიდი ზრდა ხდება მხოლოდ პირველი გაშვებისას, მაგრამ Wayfinder ბევრს არ სწირავს, მაგრამ კარგად ასრულებს ქეშირებას.

    პარამეტრები

    კულისებში pdoMenu იღებს pdoTools-ის ფარულ პარამეტრებს და მის მოქმედებებს:

    სახელი Დასასვენებლად აღწერე
    & მშობლები In-line რესურსი ძიების შედეგების მამების სია, რომელთა მეშვეობითაც. რა დააყენოს & მშობლები = `0`- შერჩევა არ არის გამოყოფილი. თუ მამის id იწყება დეფისით, მისი საიტი გამოირიცხება შერჩევისგან.
    & დონე 0 (მოხაზული) Rhubarb მენიუ გენერირებულია.
    & რესურსები შედეგებში ასახული რესურსების სია, ვისი მეშვეობით. თუ რესურსის ID იწყება დეფისით, ეს რესურსი შედის შერჩევაში.
    & შაბლონები შედეგების ფილტრაციის შაბლონების სია, ვისი მეშვეობით. ვინაიდან შაბლონის ID იწყება დეფისით, მასში არსებული რესურსები გამორიცხულია შერჩევისგან.
    & სად მასივი დამატებითი პარამეტრებიარჩევანი, დაშიფვრა JSON-ში.
    &ჩვენებადაწყება 0 Cob კვანძების მენიუს ჩვენების ჩართვა. კორისნო ერთზე მეტი „მშობლის“ მითითებისას.
    & კონტექსტი ნიმუშის აღება რესურსის კონტექსტის მიხედვით.
    & აჩვენე დამალული 0 მენიუში დამატებული რესურსების ჩვენება.
    & აჩვენე გამოუქვეყნებელი 0 გამოუქვეყნებელი რესურსების ჩვენება.
    & გადახედვა გამოუქვეყნებელი 0 ჩართეთ გამოუქვეყნებელი რესურსების ჩვენება, თუ ეს დაუშვა ანგარიშის მენეჯერმა.
    & დამალე ქვემენიუ 0 მენიუს არააქტიური პარამეტრების დამალვა.
    &აირჩიეთ შესარჩევი ველების სია, ვისი მეშვეობით. თქვენ შეგიძლიათ გამოიყენოთ JSON მწკრივი მასივით, მაგალითად & აირჩიეთ = `(" modResource ":" ID, გვერდის სათაური, შინაარსი ")`
    &დალაგება მენიუს ინდექსი ნებისმიერი რესურსის ველი დახარისხებისთვის, ტელევიზორის პარამეტრის ჩათვლით, პარამეტრში მოცემული მნიშვნელობების მიხედვით და მოიცავს ტელევიზორებს, მაგალითად &Sortby = `("tvname":"ASC", "გვერდის სათაური":"DESC")`. შეგიძლიათ მიუთითოთ JSON მწკრივი მრავალი ველის მასივით. შემთხვევითი დახარისხებისთვის შეიყვანეთ & Sortby = `RAND()`
    &დალაგება A.S.C. პირდაპირი დახარისხება: სპადანნიამისთვის ან ზრდის მიხედვით. თუ პარამეტრებს & sortby-ს და & sortdir-ს ცარიელი დატოვებთ, მაშინ დახარისხება განხორციელდება რესურსების თანმიმდევრობით & რესურსები.
    & ზღვარი 0 შეცვალეთ შერჩევის შედეგების რაოდენობა.
    &ოფსეტი 0 ჯერ გამოტოვეთ შედეგები. აუცილებელია ვიკორისტი ერთდროულად აშკარად მნიშვნელოვანი & ზღვარი
    & შეამოწმეთ ნებართვები მიუთითეთ, გაქვთ თუ არა უფლება მომხმარებელთან შემოწმება, როდესაც რესურსები ხელმისაწვდომია, მაგალითად & CheckPermissions = `სია`.
    და დაითვალეთ ბავშვები 0 კანის კატეგორიის ბავშვთა რესურსების ზუსტი არჩევა და მათი ჩვენება [[+ ბავშვები]] ჩანაცვლების ველში. ჩაწერეთ დამატებითი ჩანაწერები მონაცემთა ბაზაში, ასე რომ თქვენ შეგიძლიათ დაამყაროთ კავშირები.
    &ადგილის მფლობელი იმის გამო, რომ ის ცარიელი არ არის, ფრაგმენტი ინახავს ყველა მონაცემს ჩანაცვლების ველში ამ სახელებით ეკრანზე გამოსახვის ნაცვლად.
    &plპრეფიქსი wf. პრეფიქსი ჩანაცვლების ველების განთავსებისთვის.
    & აჩვენე ჟურნალი 0 აჩვენეთ დამატებითი ინფორმაცია იმის შესახებ, თუ როგორ მუშაობს ფრაგმენტი. მხოლოდ ავტორიზებული მომხმარებლებისთვის "mgr"-ის კონტექსტში.
    &სწრაფი რეჟიმი 0 ნაჭრის დამუშავების სწრაფი რეჟიმი. ყველა განუსაზღვრელი ტეგი (გონება, სნაიპები და ა.შ.) წაიშლება.
    & ქეში 0 რობოტის ფრაგმენტის შედეგების ქეშირება.
    & cacheTime 3600 ქეშის შესაბამისობის საათი, წამებში.
    & სქემა -1 url-ის ფორმირების სქემა გადაეცემა modX::makeUrl(), ასე რომ შესაძლო ვარიანტებისაჭირო სპეციალური uri ტიპი ავლენს uri მნიშვნელობას რესურსზე, ფუნქციის გაშვების გარეშე.
    & გამოიყენეთWeblinkUrl 1 Generuvati posilannya s urahuvannyam klasa რესურსი.
    &rowIdPrefix პრეფიქსი id = "" იდენტიფიკატორის ნაწილში ჩასართავად.
    & აქ ID ნაკადის რესურსის ID გენერირებული მენიუსთვის. აუცილებელია მიუთითოთ მხოლოდ იმ შემთხვევაში, თუ თავად სკრიპტი არასწორ ინტერპრეტაციას ახდენს, მაგალითად, როდესაც მენიუ გამოჩნდება სხვა ფრაგმენტის ნაწილიდან.
    და მოიცავს ტელევიზორებს ტუბერკულოზის პარამეტრების სია სინჯის აღებისთვის, ვისი მეშვეობით. მაგალითად & IncludeTVs = `მოქმედება, დრო`მიეცით ჩანაცვლების ადგილები [[+ მოქმედება]] და [[+ დრო]].
    & მოამზადე ტელევიზორები ტუბერკულოზის პარამეტრების სია, მედიის ფაილებით, რისთვისაც გჭირდებათ ახალი მარშრუტების გენერირება. რა დააინსტალიროთ & PrepareTVs = `1`, ყველა ტელევიზია მინიჭებული და მოიცავს ტელევიზორებს.
    & პროცესორი ტელევიზორები ტუბერკულოზის პარამეტრების სია, რომლებიც უნდა დამუშავდეს და სათანადოდ დარეგულირდეს სისტემის მენეჯერში. რა დააინსტალიროთ &ProcessTVs = `1`, მინიჭებული ყველა ტელევიზორი და მოიცავს ტელევიზორებს. სამუშაოს განახლება.
    &tvPrefix პრეფიქსი ტელევიზორის პარამეტრებისთვის.

    შაბლონის პარამეტრები

    ეს პარამეტრები ადგენს ნაწილებს მენიუს გენერირებისთვის შაბლონების შესაქმნელად.

    სახელი აღწერე
    &tplOuter დიზაინის ნაწილი მთელი მენიუს ბლოკისთვის. ინსტრუქციებისთვის: @INLINE
      [[+შეფუთვა]]
    & tpl მენიუს ელემენტის დიზაინის ნაწილი. თუ არ არის მითითებული, რესურსი ეკრანზე გამოჩნდება ველების ნაცვლად. ინსტრუქციებისთვის: @INLINE
  • [[+ მენიუს სათაური]] [[+ შეფუთვა]]
  • &tpl აქ მენიუს ერთეულის დიზაინის ნაწილი.
    &tplდაწყება ძირეული აბზაცის ნაჭერი დიზაინი, გონებისთვის, რა ჩანართებით &ჩვენებადაწყება. ინსტრუქციებისთვის: @INLINE

    [[+ მენიუს სათაური]]

    [[+შეფუთვა]]
    &tplParentRow ნაჭერი დიზაინის მამა ბალიშებით, რომელიც არ ექვემდებარება გონებას და tplCategoryFolder. მაგალითად: @INLINE
    &tplParentRowHere ნაკადის დოკუმენტის რეგისტრაციის ნაწილი, რადგან შეუძლებელია ელემენტების არასწორად განთავსება.
    &tplParentRowActive მამების დიზაინის ნაწილი ბალიშებით აქტიურ მენიუში.
    &tplCategoryFolder სპეციალური ნაწილი კატეგორიის დიზაინისთვის. კატეგორია მნიშვნელოვანია ველში, რომელსაც აქვს ცარიელი შაბლონი ან rel = "კატეგორია" link_attributes ველში.
    &tplInner მენიუს ქვეპუნქტების მთელი ბლოკის დიზაინის ნაწილი. თუ ცარიელია - გამარჯვებული იქნებით &tplOuter. მაგალითად: @INLINE
    &tplInnerRow დიზაინის ნაწილი მენიუს ქვეპუნქტისთვის. მაგალითად: @INLINE
    &tplInnerHere აქტიური მენიუს ქვეპუნქტის დიზაინის ნაწილი.

    CSS კლასის პარამეტრები

    ეს პარამეტრები ადგენს ჩანაცვლების [[+ კლასის სახელები]] და [[+ კლასები]] მნიშვნელობებს მენიუს სხვადასხვა ელემენტებისთვის. Placeholder [[+ classnames]] აჩვენებს მხოლოდ კლასის სახელებს ატრიბუტის გარეშე კლასი = "", ანგარიშზე ჩანაცვლების ადგილის ქვეშ [[+ კლასები]].

    გამოიყენეთ იგი

    მენიუს საწყისი მონახაზი საიტის ძირიდან ერთ ადგილას:

    []

    დადგენილება მომღერალ მამების გამორიცხვით და კორისტუვაჩის ნებართვების გადასინჯვით:

    []

    მენიუ ნაჩვენებია ორ განყოფილებად, სადაც ნაჩვენებია ძირითადი წერტილები:

    []

    ორი თანაბარი რესურსის აღდგენა რიგი შენატანებით:

    [] `&TplParentRow =` @INLINE

  • [[+ მენიუს დასახელება]] ([[+ ბავშვები]])
  • [[+ შეფუთვა]] `& დაითვალეთ ბავშვები =` 1`]]

    პატივს გცემთ, ძვირფასო მკითხველებო. გასულ კვირას ჩვენ შევავსეთ საიტი შინაარსით (), ახლა დროა ჩადეთ ყველაფერი მენიუშირათა კორისტუვაჩები მათზე გადაერთონ.

    შექმნა უფრო დინამიურად მენიუ MODX-შიჩვენ აქ ვიქნებით დახმარებისთვის ფრაგმენტთან დაკავშირებით PdoMenu 3 პაკეტი pdoTools. სანამ დაიწყებთ, გთხოვთ გაეცნოთ ძირითად დოკუმენტაციას.

    დოკუმენტაცია pdoMenu-სთვის

    პარამეტრები

    შაბლონის პარამეტრები

    CSS კლასის პარამეტრები

    ოფიციალური აქციები


    ოფიციალური დოკუმენტაცია შეგიძლიათ წაიკითხოთ აქ. ახლა მოდით შევხედოთ თავად მენიუს ტიპურ დაწკაპუნებებს.

    wiklik PdoMenu

    ვარიანტი 1. ამ სტატიკური მენიუს საიტზე ვიკიმოს ფრაგმენტი pdoMenu, რისთვისაც რესურსების ხეში, ჩანართზე " ელემენტები„სნაიპის მონაკვეთში აანთეთ ნაპერწკალი pdoTools, შემდეგ დააწკაპუნეთ pdoMenuმაუსის მარცხენა ღილაკი (დააჭირეთ ღილაკს) და გადაიტანეთ ეს ფრაგმენტი იმ ადგილას, სადაც გსურთ მენიუს დაწკაპუნება, შემდეგ ბოლოს შეავსეთ საჭირო პარამეტრები და დააწკაპუნეთ “ გადარჩენა«.

    ვარიანტი 2. მე უბრალოდ ხელით დავწერ ვიკლიკს.

    ტიპიური დუნდულები

    ძირითადი ერთ დონის მენიუ

    მაგალითად, ჩვენ გვაქვს ახალი მენიუ, გაფართოებული html განლაგებით.

    Wixov ღერძი არის შემდეგი კოდი wiklik მენიუთი:

    • & Parents = `0` - მშობლების სია (ჩემს შერჩევისას არ გამოვყოფ არჩევანს, რადგან მაინც გამოვაჩენ მხოლოდ სიუჟეტის სიმღერებს);
    • & დონე = `1` - წვლილის დონე (ამ შემთხვევაში არ არსებობს);
    • & რესურსები = `2,3,4,5` - რესურსების სია, რომლებიც უნდა იყოს ნაჩვენები მენიუში;
    • & FirstClass = `0` - კლასი მენიუს პირველი ელემენტისთვის (არაფერი);
    • & LastClass = `0` - მენიუს ბოლო ელემენტის კლასი (არაფერი);
    • & OuterClass = `top-menu` - მენიუს ზედა კლასი (შედის ul-ში);
    • & HereClass = `current-menu-item` - კლასი მენიუს აქტიური ელემენტისთვის (მოწოდებულია li);
    • & RowClass = `menu-item` - მენიუს ერთი მწკრივის კლასი (შეყვანილია li-ში).

    Dvorinneve პერსონალური ჩატვირთვის მენიუ

    სტატიკური html კოდიასე გამოიყურება:

    ამ ვიდეოს კოდი იქნება ასეთი:

    ასე რომ, მომავალ გაკვეთილზე, მე მოგცემთ კიდევ რამდენიმე ჩამოსაშლელ მენიუს ჩატვირთვის საფუძველზე (და მათთვის, ვინც ვერ ხვდება აზრს. მოდით, გადავიდეთ.

    ერთი შეხედვით, როგორც ჩანს, ყველაფერი კარგად მიდის, მაგრამ თუ ეს ასე არ არის, წაიკითხეთ ანგარიში და დოკუმენტაცია, დასვით თქვენი შეკითხვები კომენტარებში, მე აუცილებლად დაგეხმარებით.

    თქვენ შეგიძლიათ შეცვალოთ MODX მენიუს პანელის ზედა მენიუ ან ელემენტების გავლის თანმიმდევრობის შეცვლით, ან მათგან მოქმედებების არჩევით. თქვენ ასევე შეგიძლიათ დაამატოთ ახალი ელემენტები თქვენს მიერ შექმნილ არსებულ ან პირად ქმედებებში. შემდეგი, ჩვენ ჯერ გადავხედავთ ზედა მენიუს შესაცვლელად გამოყენებულ მეთოდებს და შემდეგ პრაქტიკულ აპლიკაციებს.

    ზედა მენიუს კონცეფციები

    რევოლუციის მენიუს სისტემას აქვს სრულიად ახალი არქიტექტურა. შესაძლოა არაფერი იყოს საერთო Evolution მენიუს სისტემასთან ზოგიერთი ელემენტის სახელების გარდა. არ არის საჭირო იმის გაგება, თუ როგორ უნდა დააყენოთ მენიუ. ახალი სისტემასხვა სიტყვებით რომ ვთქვათ, მენიუ გეხმარებათ მუშაობაში, განსაკუთრებით იმ შემთხვევაში, თუ თქვენ აპირებთ შექმნათ პანელის პერსონალური გვერდები, რომლებზედაც წვდომა შეიტანება მენიუს საშუალებით.

    ზედა მენიუს ხე

    გადადით ზედა მენიუს განყოფილებაში სისტემა -> Diiთქვენ შეისწავლით მენიუს სისტემის საფუძვლებს. ხე მარჯვენა ხელით (ზედა მენიუ) ასახავს მენიუს აქტიურ ელემენტებს და ქვემენიუებს. მას შემდეგ რაც გახსნით სხვადასხვა განყოფილებებს, ნახავთ, რომ ეს არის ზედა მენიუს ზუსტი ასლი. ელემენტები ზედა დონე- ეს არის ის, რასაც ხედავთ მართვის პანელის ზედა ნაწილში. წვეთების უმეტესობას აქვს შესანახი კონტეინერი. ხეში კანის ცვლილებები შეესაბამება მართვის პანელში არსებულ მოქმედებებს. როდესაც დააწკაპუნებთ ქვემენიუზე, შეგიძლიათ რაიმე გააკეთოთ სერვერის პანელში (მაგალითად, საიტის ქეშის გასუფთავება ან წვდომის მართვის პანელზე გადასვლა). სინამდვილეში, ზედა მენიუს ელემენტები შეიძლება იყოს მოქმედებები, მაგრამ ზედა მენიუს ელემენტები არ არის კონფიგურირებული ამ გზით.

    ისინი, რომლებიც გამოჩნდება მენიუს პუნქტზე დაწკაპუნებისას, რეალურად ჩამოთვლილია აქ. როგორც კი ისწავლით, მარტივად შეგიძლიათ ხელახლა აირჩიოთ ის, რაც გამოჩნდება მენიუს ერთეულზე დაწკაპუნებისას და ასევე შეგიძლიათ გადარქმევა, გადაიწეროთ ან წაშალოთ ელემენტები მენიუს სიიდან. თქვენ ასევე შეგიძლიათ დაამატოთ ელემენტები მენიუში და ამოცანები, რომლებიც გამოჩნდება მათზე დაწკაპუნებისას. ფაქტობრივად, თქვენ შეგიძლიათ შექმნათ ახალი მენიუს სისტემა საკონტროლო პანელისთვის არსებულის შესაცვლელად და სხვადასხვა მომხმარებელს შეიძლება ჰქონდეს განსხვავებული მენიუ. ყველაფერი შეიძლება იმუშაოს MODX ბირთვის შეცვლის გარეშე.

    აქ ასევე მითითებულია მენიუს ფიზიკური ჩვენება. აღსანიშნავია, რომ მენიუს ყველა ელემენტი განლაგებულია იმავე თანმიმდევრობით, როგორც ჩანს ზედა მენიუში. თუ მათ ხეზე გადაიტანთ, ზედა მენიუც შეიცვლება გვერდის ხელახლა ჩართვისას.

    მოდით, გადავხედოთ მართვის პანელის მოქმედებებს, მაგრამ ფრთხილად იყავით, რომ არ შეცვალოთ ისინი - დააჭირეთ ღილაკს "Select" მათი დათვალიერების შემდეგ.

    გაფართოებულ მარჯვენა ხეზე (ზედა მენიუ) დააწკაპუნეთ მარჯვენა ღილაკი"საიტის" პუნქტზე და ჩამოსაშლელი მენიუდან აირჩიეთ პუნქტი "რედაქტირება". რედაქტირების დიალოგური ფანჯარა გამოჩნდება ველებით, რომლებიც მიუთითებენ მენიუს:

    მე ვარ- მენიუს ელემენტის სახელი

    აღწერე- მენიუს ელემენტის აღწერა

    დია- PHP ფაილის სპეციფიკაცია, რომელიც დაიწერება

    ხატი - დამატებითი ხატიმენიუს ელემენტისთვის

    პარამეტრები- არჩევითი ენის პარამეტრები $_GET URL-ისთვის

    ობრობლუვაჩ- JS კოდი, რომელიც იქნება Viconany

    წვდომის უფლებები- საჭირო წვდომის უფლებების ცალკე სია

    მნიშვნელოვანია, რომ "საიტის" პუნქტში ველების უმეტესობა ცარიელია. ეს იმიტომ ხდება, რომ ეს არის შესანახი კონტეინერი, რომელიც მდებარეობს ახალში. თუ ზედა მენიუში "საიტის" მენიუს დააკლიკეთ, არაფერი გამოჩნდება.

    მოდით გადავხედოთ მენიუს, რომლის ცდაც ღირს. დააწკაპუნეთ ღილაკზე „არჩევა“ დიალოგის დასასრულებლად, გახსენით ხის განყოფილება „საიტი“ მარჯვენა პანელში, დააწკაპუნეთ მარჯვენა ღილაკით „საიტის განახლება“ ქვემენიუზე და აირჩიეთ „რედაქტირება“.

    მნიშვნელოვანია, რომ დიალოგურ ფანჯარაში არის ველები "ოპერატორი" და "წვდომის უფლებები". ველი „წვდომის უფლებები“ გვეუბნება, რომ მომხმარებელს არ შეუძლია მენიუს ამ ელემენტის არჩევა, რადგან მას არ აქვს ცარიელი_ქეში წვდომის უფლება. „კოლექტორის“ ველი შეიცავს ფაქტობრივ JS კოდს, რომელიც ემატება ამ ქვეპუნქტის არჩევისას. ყველა ელემენტი, რომლებშიც შესაძლებელია ყველა მოქმედების არჩევა, უნდა იყოს შევსებული ან "მოქმედება" ან "ობრობლიუვაჩი". თუ ველი "კოლექტორი" არის შევსებული, გამოჩნდება ამ ველში ცვლილებების კოდი და "მოქმედების" ველი იგნორირებულია. თუ ველი „ობლიუვაჩი“ არ არის შევსებული, მაშინ მოქმედება ემატება „მოქმედების“ ველს. ველი "მოქმედება" მითითებულია როგორც ფაილის კონტროლერი, ან როგორც ერთ-ერთი მოქმედება "მოქმედების" ხეში, რომელიც გაფართოებულია (რომელიც შეიძლება გამოყენებულ იქნას სხვადასხვა კონტროლერის ფაილების მითითებისთვის). დახურეთ დიალოგი ღილაკზე "შენახვა" დაწკაპუნებით.

    მოდით შევხედოთ მენიუს ელემენტის ვარიანტს მოქმედებით. ჩამოტვირთეთ და დააინსტალირეთ დამატებითი Batcher პაკეტის მენეჯმენტის საშუალებით, ხელახლა შეიმუშავეთ გვერდი და ხელახლა შედით განყოფილებაში სისტემა -> Dii. მარჯვენა ხის განყოფილებაში "კომპონენტები" (საჭიროების შემთხვევაში გახსენით), დააწკაპუნეთ მარჯვენა ღილაკით Batcher-ზე და აირჩიეთ "რედაქტირება". ახლა ჩვენ შევავსეთ ველი „იმოქმედე და არა „ობრობლიუვაჩი“: batcher - ინდექსი. დაასრულეთ რედაქტირების დიალოგი ღილაკზე „შენახვა“ დაჭერით.

    მარცხენა პანელში ზედა დონის ყველა ელემენტს აქვს სახელების სივრცეები. ბოროტების "დიას" ხეზე გახსენით სახელების სივრცე "ბატჩერი". თქვენ ხართ პასუხისმგებელი ინდექსის განახლებაზე. ასე გამოჩნდება Batcher მენიუ, როგორც ნაჩვენებია მარჯვენა პანელში.

    მოდით შევხედოთ რა შეგვიძლია გავაკეთოთ "Top Menu" ხესთან. "Top Menu" ხეში ელემენტები შეიძლება ხელახლა დაიყოს მათი გადაზიდვის ბილიკებით. თუ შეცვლით მენიუს ელემენტის მდებარეობას ხეზე, ფაქტობრივი ზედა მენიუც შეიცვლება, მაგრამ ამისათვის თქვენ მოგიწევთ ხელახლა ჩართოთ მართვის პანელის გვერდი.

    ზედა მენიუში ელემენტის დასამატებლად, შეგიძლიათ დააწკაპუნოთ მაუსის მარჯვენა ღილაკით სადმე ხის არეში და აირჩიეთ "მენიუ ელემენტის დამატება". ელემენტის ზედა დონის მენიუში დასამატებლად, ასევე შეგიძლიათ დააწკაპუნოთ ღილაკზე „საგნის დამატება“.

    მენიუს ელემენტების წვდომა შესაძლებელია მათზე მარჯვენა ღილაკით დაწკაპუნებით და პუნქტის „ნახვა“ არჩევით. თუ მენიუს ერთეულს წაშლით, ყველა ველის დახარჯვის ნაცვლად, წაიშლება ნებისმიერი შვილობილი ელემენტი. ეს ქმედება შეუქცევადია.

    თუ გსურთ მენიუს ელემენტის დალაგება მისი წაშლის გარეშე მოკლე ვარიანტიწვრილმანი), შეგიძლიათ აიღოთ ის „წვდომის უფლებების“ ველში რაღაცის განთავსებით. თუ ეს ველი უკვე არის ამ ველში, დაამატეთ წვდომის ახალი უფლებები ვისაც აქვს. სანამ თქვენი წვდომის უფლება არის წვდომის უფლება, რომელიც არავის აქვს, მენიუს ელემენტი უხილავი იქნება. თქვენ შეძლებთ მიიღოთ თქვენი ზოდიაქოს ნიშანი, გზა, რომ ნახოთ წვდომის მოცემული უფლება. თუ გსურთ მენიუს არჩეული ელემენტის ჩვენება არსებულ მომხმარებლებს (ან არა ყველას), უბრალოდ შექმენით ახალი პოლიტიკის შაბლონი, რომელიც მოიცავს მხოლოდ მომხმარებლისთვის მინიჭებულ წვდომის უფლებებს, შექმენით ახალი პოლიტიკა ამ შაბლონზე დაყრდნობით და შექმენით ჩანაწერი კონტექსტში სიაში წვდომის კონტროლი, როგორიცაა ის სტაგნაციას გაუწევს ამ კორისტუვაჩებს და მისცემს ამ პოლიტიკას.

    ზედა მენიუს სათაურის შესაცვლელად, მიუთითეთ მისი აღწერა. შემდეგ გადადით მენიუს განყოფილებაში სისტემა-> ლექსიკონის მართვა.აირჩიეთ სახელის სივრცე "core" და თემა "topmenu". თუ სია შეიცავს ერთზე მეტ გვერდს, შესაძლოა დაგჭირდეთ სხვა გვერდზე გადასვლა „ტოპ მენიუს“ თემის საპოვნელად. იპოვეთ სტრიქონი მენიუს საჭირო ელემენტისთვის, ორჯერ დააწკაპუნეთ მის მნიშვნელობებზე და შეცვალეთ ისინი. ნებისმიერი ცვლილება, რომელსაც აქ ნახავთ, გავრცელდება როგორც MODX-ის ვერსიის განახლების შემდეგ, ასევე მესამე მხარის კომპონენტების განახლების შემდეგ.

    ამ მეთოდის აღწერილობები გამოყენებული იქნება მხოლოდ მენიუს ელემენტების ბირთვში ჩასართავად. მესამე მხარის მენიუს ელემენტებისთვის, თქვენ უნდა აირჩიოთ შესაბამისი სახელის ადგილი. მაგალითად, თუ გსურთ შეცვალოთ ნაგულისხმევი მენიუს ელემენტი Batcher-ისთვის, თქვენ უნდა შეცვალოთ ლექსიკონის საკონტროლო მწკრივის მნიშვნელობები batcher-ის სახელის სივრცისთვის.

    ხე "Dii"

    გადაუხვიეთ განყოფილებას სისტემა -> Dii, იაკშჩო ვიზ ნიოგო ვიიშლი. მარცხენა პანელში დააწკაპუნეთ "ინდექსის" ჩანაწერზე "batcher" სახელის ქვემოთ და აირჩიეთ "რედაქტირება" ჩამოსაშლელი სიიდან. ჩვენ შეგვიძლია გამოვიცნოთ რა არის ეს, როგორც ეს მითითებულია Batcher მენიუს პუნქტით მარჯვენა პანელზე. თქვენ შეამჩნევთ, რომ ამ აქტივობის კონტროლერი იქნება ინდექსი, ხოლო სახელების სივრცე იქნება batcher. ახლავე გადავიდეთ განყოფილებაში System->Name Space, ჩვენ ვაფასებთ, რომ ბილიკი სივრცისთვის დასახელებული batcher იქნება:

    (Core_path) კომპონენტები/batterer

    კონტროლერთან დაკავშირებით, რომელიც გამოჩნდება მენიუს ამ პუნქტზე დაწკაპუნებისას, MODX ქმნის ამის მსგავს ახალ გზას:

    namespace_path + controller_name + .php

    სხვა სიტყვებით რომ ვთქვათ, იმ ფაქტის გათვალისწინებით, რომ ბირთვი არის შესრულების ადგილზე, MODX იწყებს კონტროლერის ფაილის ვიკინაციას მისამართზე:

    core/components/batterer/index.php

    თუ დააკვირდებით ამ ფაილს, დაინახავთ, რომ შეგიძლიათ უბრალოდ მოათავსოთ index.php ფაილი core / components / batcher / controllers დირექტორიაში, რომელიც დაამატებს Batcher კლასს და ინიციალიზდება Batcher-ის საკონტროლო პანელში გაშვებით. ჩვენ შევქმნით მენიუს ახალ ელემენტს "კომპონენტების" განყოფილებაში ცოტა მოგვიანებით, როდესაც შევქმნით საბაჟო მართვის პანელებს.

    მენიუს მრავალი ელემენტი მარჯვენა პანელში არ იძლევა მოქმედების იგივე თავისუფლებას, როგორც მარცხენა პანელზე ნაჩვენები. ეს უზრუნველყოფს, რომ მათი კონტროლერის ფაილების ბილიკები ინახება MODX მონაცემთა ბაზაში და არ არის საჭირო მათი რედაქტირება (დადასტურება რთული სისტემის შესაქმნელად). ეს მოქმედებები ინახება modx_actions ცხრილში. თითოეულ მოქმედებას აქვს საკუთარი საიდენტიფიკაციო ნომერი (ID) და მიდის კონტროლერთან. მოქმედება ასევე შეიცავს დამატებით URL-ს კონტექსტზე მგრძნობიარე დახმარებისთვის, როდესაც კონტროლერი აქტიურია და რამდენიმე სხვა ველს. ამ გვერდის "აქტივობების" პანელში ნაჩვენები აქტივობებისთვის, შეგიძლიათ დაამატოთ ID სამოქმედო ჯგუფში.

    მენიუს ელემენტის ხეზე დამატება მენიუს პანელში ნებისმიერი მოქმედებისთვის შეიძლება განხორციელდეს მენიუს ელემენტის შექმნით მარჯვენა პანელში და დაქვემდებარებული მოქმედების შექმნით (კონტროლერი) ან სემპლერის დამატებით. თუ კონტროლერი უკვე აქტიურია, შეგიძლიათ უბრალოდ აირჩიოთ ის "ჩვენება" ჩამოსაშლელი მენიუდან. თუ ეს ასე არ არის, მაშინ ეს უნდა გააკეთოთ მარცხენა პანელში, როგორც ეს მიუთითებს კონტროლერზე. მაგალითად, არ არის მენიუს ელემენტი ახალი ანგარიშის შესაქმნელად, მაგრამ არის ფაილის კონტროლერი, რომლისთვისაც ეს ელემენტი შეიძლება ადვილად დაემატოს ზედა მენიუში. ამ შემთხვევაში, თქვენ მხოლოდ უნდა შექმნათ მენიუს პუნქტი მარჯვენა ხელით და "ძირითადი" სახელების სივრცისთვის დააყენეთ უსაფრთხოების / მომხმარებლის / შექმნის ვარიანტი. როგორც თქვენ წარმოიდგინეთ, მენიუს ზედა პუნქტს, რომელიც შეიცავს სემპლერს, არ აქვს შესაბამისი მოქმედება (მსგავსი მენიუს ელემენტის "განახლების საიტის") "მოქმედების" ხეში. თქვენ არ გჭირდებათ "მოქმედების" ელემენტი, ამიტომ წიგნი შეიცავს მის კოდს. კონტროლერის გაშვების ნაცვლად, MODX უბრალოდ ათავსებს კოდს დეტექტორის ველში.

    მენიუში დაწკაპუნების დამუშავება

    დაბრუნდით მარცხენა პანელში Batcher-ის სახელების ინდექსურ სივრცეში. ძვირფასო Yogo ID. როდესაც დააწკაპუნებთ პუნქტზე ზედა მენიუში, MODX ამოიღებს ID-ს. შემდეგ ამ გვერდის URL გენერირებულია მართვის პანელში და მომხმარებელი მიმართავს მას. ჩვენს საიტზე ეს ID არის 79-მდე. თუ ზედა მენიუში დავაწკაპუნებთ Batcher-ზე, შემდეგ ბრაუზერის მისამართის ზოლში:

    http://site/manager/index.php? a = 79

    როდესაც დააწკაპუნებთ Batcher მენიუს პუნქტზე, უნდა შეიყვანოთ მსგავსი URL, რომელშიც დაამატეთ თქვენი Batcher ინდექსის ID. როდესაც მოთხოვნის მაინერი პოულობს ამ URL-ს, ის ამოწმებს ამ მენიუს ობიექტის არსებობას მონაცემთა ბაზაში, მომხმარებლისგან წვდომის უფლებების არსებობას მისი მომხმარებლის სახელისთვის, აყენებს URL-ს დახმარებისთვის და ქმნის ფაილის კონტროლერს ამ აქტივობისთვის (როგორიცაა є კოლექციონერი, შემდეგ ემატება კოლექციონერის JS კოდი).

    მუშაობა ზედა მენიუდან

    ახლა, როდესაც ჩვენ ვიცით, როგორ აწყობს MODX მენიუს ელემენტებს და მათთან დაკავშირებულ მოქმედებებს, მოდით შევცვალოთ ფაქტობრივი ზედა მენიუ საკონტროლო პანელში. შემდეგი მეთოდები მარტივია და არ დაგჭირდებათ MODX მენიუს/მოქმედების სისტემის შიდა მუშაობის გაგება, რომ მათ იმუშაოთ.

    აქ ფრთხილად იყავით, რადგან ყველა თქვენი ცვლილება ძალაში იქნება როგორც ადრე და განახლებული საიტით და არა მარტივი გზაგადადით მენიუში დეტალებისთვის. მოქმედებების უმეტესობა, რომელსაც ჩვენ აქ გავაკეთებთ, მარტივია, მაგრამ სჯობს ჩაწეროთ მენიუს ძირითადი სტრუქტურა ცვლილებების შეტანამდე. უმჯობესია დაუყოვნებლივ ივარჯიშოთ MODX ინსტალაცია, არ იქნება Vikoristan ამ საიტისთვის.

    მენიუს ელემენტების თანმიმდევრობის შეცვლა

    თქვენ შეგიძლიათ შეცვალოთ ელემენტების თანმიმდევრობა ზედა მენიუში საკონტროლო პანელში ან ნებისმიერი ელემენტი მათ ქვემენიუში. გადადით განყოფილებაში სისტემა->Diiგახსენით მარჯვენა მენიუს ხე (სათაურით "ზედა მენიუ").

    როგორც ადრე ავხსენით, ეს ხე არის მართვის პანელის ზედა მენიუს საფუძველი. თქვენ შეგიძლიათ შეცვალოთ ელემენტების თანმიმდევრობა ზედა მენიუში მათი გადატანით. უბრალოდ დააწკაპუნეთ მენიუს პუნქტზე, რომლის გადატანა გსურთ და მაუსის ღილაკზე დაჭერისას გადადით იქ, სადაც გსურთ და გაათავისუფლეთ მაუსის ღილაკი. ამ გზით თქვენ შეგიძლიათ შეცვალოთ ელემენტების თანმიმდევრობა ზედა მენიუში ან ნებისმიერ სხვა ქვემენიუში. თქვენ შეგიძლიათ გადაიტანოთ ელემენტები ერთი ქვემენიუდან მეორეში. თქვენ ასევე შეგიძლიათ გადაიტანოთ ქვემენიუს ელემენტები ზედა მენიუში მათი ზედა მენიუს საქაღალდეში გადატანით. ცვლილებების შესატანად საჭიროა ხელახლა ჩართოთ მართვის პანელის მხარე.

    მენიუს ელემენტების დამატება და წაშლა

    მენიუს ახალი ელემენტის დამატება მარტივია. გადადით განყოფილებაში სისტემა->Diiგახსენით მარჯვენა მენიუს ხე (სათაურით "ზედა მენიუ"). აირჩიეთ მენიუს ის ნაწილი, რომელშიც გსურთ დაამატოთ ელემენტი და დააწკაპუნეთ ღილაკზე „მენიუს დამატება“ (ან დააჭირეთ მარჯვენა ღილაკს და აირჩიეთ „მენიუ ელემენტის დამატება“). შეიყვანეთ მენიუს ელემენტის სახელი, რომელიც გჭირდებათ და დააჭირეთ ღილაკს "შენახვა". წაახალისეთ MODX მომხმარებლები შეიყვანონ ახალი ელემენტები კომპონენტების მენიუში, ან შეგიძლიათ დაამატოთ ისინი ნებისმიერ დროს. მენიუს ელემენტის წასაშლელად, შეგიძლიათ დააწკაპუნოთ მაუსის მარჯვენა ღილაკით ახალზე და აირჩიეთ "მენიუ ელემენტის წაშლა".

    თუ დაამატებთ მენიუს ახალ ელემენტს და შემდეგ ხელახლა აირჩევთ გვერდს თქვენს ბრაუზერში, შესაძლოა თქვენი ახალი ელემენტი არ დაემატოს ზედა მენიუში. ზედა მენიუს ელემენტები შვილობილი ელემენტების გარეშე და მოქმედების ან ხელმოწერის ჩასმის გარეშე არ არის ნაჩვენები მენიუში. ამიტომ მენიუში „კომპონენტები“, რომელსაც ხეზე ხედავთ, MODX Revolution-ის პირველად ინსტალაციისას მენიუში არ გამოჩნდება – სანამ კომპონენტები არ დაინსტალირდება.

    იაკოსტში მარტივი კონდახიმოდით შევქმნათ მომხმარებლისთვის შექმნილი ახალი მენიუ, რომელიც გაგიძღვებათ მართვის პანელის ყველაზე ხშირად გამოყენებულ სექციებზე. დავუშვათ, რომ თქვენი სამუშაო საჭიროებს გარკვეულ ვიზიტებს სისტემის დაყენების, დოკუმენტის შექმნის/რედაქტირების და წვდომის კონტროლზე. ჩვენ ვქმნით მენიუს ზედა პუნქტს სახელწოდებით "ჩემი მენიუ", რომელშიც მინიჭებულია ელემენტები. მნიშვნელოვანია, რომ ჩვენ შევარჩევთ მთლიან რობოტს მარჯვენა პანელში (ზედა მენიუ).

    გადადით განყოფილებაში სისტემა->Diiდა (ზედა მენიუს ხეში) დააწკაპუნეთ ღილაკზე "მენიუს დამატება". შეიყვანეთ სახელი "ჩემი მენიუ" ველში "სახელი" და დააჭირეთ ღილაკს "შენახვა".

    მე ვარ- ახალი დოკუმენტი

    დია-ძირითადი რესურსი/შექმნა

    მე ვარ- სისტემის დაყენება

    დია- ძირითადი სისტემა/პარამეტრები

    მე ვარ- წვდომის კონტროლი

    დია- ძირითადი უსაფრთხოება/ნებართვა

    ნავიგაცია, რათა იპოვოთ თქვენი სამი ახალი მენიუ, როგორც ქვეპუნქტები My Menu მენიუში. თუ ეს ასე არ არის, მიიყვანეთ ისინი სწორ ადგილას სამიზნით. თქვენ ასევე შეგიძლიათ შეცვალოთ მენიუების და ქვემენიუების გავლის თანმიმდევრობა.

    მას შემდეგ რაც დაასრულებთ მენიუს საჭირო გაფართოებას, ხელახლა ეწვიეთ ბრაუზერის პანელის გვერდს თქვენს ბრაუზერში. თქვენ უნდა დაამატოთ ახალი "ჩემი მენიუ" პუნქტი ზედა მენიუში, რათა შექმნათ სამი ქვემენიუ, რომელიც მიგვიყვანს მართვის პანელის სხვადასხვა განყოფილებაში.

    თუ გსურთ ნახოთ მენიუს რომელიმე ელემენტი, რომელიც თქვენ შექმენით, უბრალოდ გადადით განყოფილებაში სისტემა->Dii, დააწკაპუნეთ მათზე მარჯვენა ღილაკით და აირჩიეთ „ნახვა“. კარგი იქნებოდა, წაშალოთ ყველა ცვლილება მთავარ მენიუში, რათა არ დაიკარგოს მონაცემთა ბაზაში.

    როგორ ავიღოთ მენიუს ელემენტები

    თუ შეცვლით მენიუს ელემენტების გამოჩენის თანმიმდევრობას, ასევე შეგიძლიათ აიღოთ ისინი მენიუს ელემენტზე მიმაგრებული წვდომის უფლებების გამოყენებით. გადადით განყოფილებაში სისტემა->Diiდა გახსენით მენიუს ხე მარჯვენა მხარე(სათაურით "ზედა მენიუ").

    დააწკაპუნეთ მაუსის მარჯვენა ღილაკით მენიუს ნებისმიერ პუნქტზე ან ქვეპუნქტზე და აირჩიეთ "რედაქტირება". გამოჩნდება დიალოგური ფანჯარა ქვედა ველთან "წვდომის უფლებები". ფრთხილად იყავით, რომ სხვა ველი არ შეცვალოთ.

    თუ ცდილობთ მენიუს სხვა ელემენტების ხელში ჩაგდებას, აღმოაჩენთ, რომ "წვდომის უფლებები" ველი შევსებულია ზოგიერთი მათგანისთვის და არა სხვებისთვის. რა სახის საქმეები უნდა გაკეთდეს იმისათვის, რომ მინდორს დაიპყრო, დაწექი, რომ ველი გაივსო, რაც არ უნდა იყოს.

    თუ ველი „წვდომის უფლებები“ შეიცავს წვდომის უფლებების ჩამონათვალს, შეგიძლიათ შექმნათ წვდომის ახალი პოლიტიკა (ან შეცვალოთ არსებული) ამ წვდომის უფლების დასაბლოკად და საჭირო იქნება მენიუს ელემენტი. ამ ოპერაციას შეიძლება ჰქონდეს გვერდითი ეფექტები, რადგან საკონტროლო პანელში მენიუს სხვა ელემენტები შეიძლება ექვემდებარებოდეს იმავე წვდომის უფლებებს. მალსახმობის მეთოდითამ ველში შეიძლება დაემატოს წვდომის უფლებების დამატებითი სპეციფიკაციები.

    ველი "წვდომის უფლებები" შეიძლება შეიცავდეს წვდომის უფლებების სიას, გამოყოფილი ჯგუფების მიხედვით. მენიუს ეს ელემენტი ხელმისაწვდომია მხოლოდ იმ მომხმარებლებისთვის, რომლებსაც შეუძლიათ წვდომის ყველა უფლების უგულებელყოფა.

    გავაოცოთ კონდახი. შესაძლებელია, რომ მოგიწიოთ კონტროლი ყველა თქვენს ბუღალტერზე, მაგრამ თუ გაქვთ დაურეგისტრირებელი სუპერ მომხმარებლის უფლებები, გადადით ქვემენიუში „თქვენი ბუღალტერების მართვა“ „უსაფრთხოების“ მენიუში.

    გადადით განყოფილებაში სისტემა->Diiგახსენით მენიუს ხე, შემდეგ დააწკაპუნეთ მაუსის მარჯვენა ღილაკით "ანგარიშის მართვა" ქვეპუნქტზე და აირჩიეთ "რედაქტირება". ველი "წვდომის უფლებები" დამნაშავეა view_user შეცდომაში შეყვანისთვის. ჩვენ ვირჩევთ წვდომის სხვა უფლებების დამატებას სახელით my_view_user_menu. რატომ შეცვალოთ ეს ველი view_user, my_view_user_menu-ის ჩასანაცვლებლად. შეამოწმეთ, რომ არ არის გასუფთავებული ამ ჩანაწერებისთვის. ახლა, იმისათვის, რომ მოვაჭრეებმა წვდომა მიიღონ ქვეპუნქტზე „ვაჭრების მართვა“, მათ უნდა ჰქონდეთ წვდომის უფლება და, რადგან სხვა წვდომის უფლება არავის აქვს (ეს მხოლოდ რამდენიმე ჩვენგანმა მოიფიქრა), ვერავინ გაზრდის. ეს ქვეპუნქტი.

    მენიუს ელემენტებისთვის, რომლებსაც არ აქვთ წვდომის უფლება, პროცედურა მსგავსია. თქვენ უბრალოდ ამატებთ მომხმარებლისთვის წვდომის ახალ უფლებებს ცარიელ ველში „წვდომის უფლებები“.

    მნიშვნელოვანია, რომ მას შემდეგ რაც ჩვენ მივანიჭებთ ჩვენს ხელისუფლებას წვდომის უფლებებს, კლიენტებს, რომლებსაც არ აქვთ გაზიარებული სუპერ მომხმარებლის უფლებები, ასევე არ ჰქონდეთ წვდომა "ანგარიშის მართვა" ქვემენიუზე. ამის გამოსწორების მიზნით, თქვენ უნდა მიანიჭოთ თქვენი წვდომის უფლება. თუ თქვენ აპირებთ ამ ოპერაციების გაუქმებას რეალურ საიტზე, სანამ ანგარიშის მენეჯერს წვდომის უფლებას მიაკუთვნებთ, ჯერ მიეცით ადმინისტრატორს წვდომის უფლება გაუზიარებელი უფლებებით.

    ვინაიდან მართვის პანელში სტანდარტული ადმინისტრატორის ჯგუფი მოიპარეს, თქვენ უნდა შექმნათ წვდომის პოლიტიკის ახალი შაბლონი, რათა შეცვალოთ თქვენი არსებული წვდომის უფლებები და მათზე დაფუძნებული წვდომის ახალი პოლიტიკა. თქვენ შეგიძლიათ განათავსოთ ყველა თქვენი პირადი წვდომის უფლება ამ წვდომის პოლიტიკის შაბლონში. ცალკე უსაფრთხოება-> წვდომის კონტროლიდააწკაპუნეთ "შექმენით წვდომის პოლიტიკის შაბლონი". დიალოგისთვის გამოიყენეთ შემდეგი პარამეტრები:

    მე ვარ : CustomPermissionTemplate

    შაბლონების ჯგუფი : ადმინ

    აღწერე :

    შემდეგ დააწკაპუნეთ მაუსის მარჯვენა ღილაკზე "დაშვების დამატება" ღილაკზე. დიალოგში აირჩიეთ შემდეგი პარამეტრები:

    მე ვარ : my_view_user_menu

    აღწერე : წვდომის უფლებები koristuvach მენიუზე

    შემდეგ დააწკაპუნეთ ჩანართზე „წვდომის პოლიტიკა“, შემდეგ ღილაკზე „წვდომის პოლიტიკის შექმნა“. დიალოგში აირჩიეთ შემდეგი პარამეტრები:

    მე ვარ : მომხმარებლის ნებართვები

    წვდომა პოლიტიკის შაბლონზე : CustomPermissionTemplate

    აღწერე : ჩემი წვდომის უფლებები

    დააწკაპუნეთ წვდომის პოლიტიკაზე "მორგებული ნებართვები" და აირჩიეთ "რედაქტირება". გადაახვიეთ სიაში my_view_user_menu-ზე წვდომის მარჯვნივ და ჩასვით ხატულა მოსანიშნი ველში. დააჭირეთ ღილაკს "შენახვა" ზედა მარჯვენა მხარეს.

    ახლა ჩვენ უნდა მივცეთ მომხმარებელს Super User-ის გამოუყოფელი უფლებები, რაც ნიშნავს წვდომას წვდომის კონტროლის სიაში ახალი ელემენტის შექმნით. გადადით განყოფილებაში Bezpeka->Access Control->Koristuvach group". დააწკაპუნეთ მარჯვენა ღილაკით "ადმინისტრატორი" ჯგუფზე და აირჩიეთ "მომხმარებელთა ჯგუფის რედაქტირება", დააწკაპუნეთ ჩანართზე "კონტექსტური წვდომა" და შემდეგ ღილაკზე "კონტექსტის დამატება". დიალოგისთვის აირჩიეთ შემდეგი პარამეტრები:

    კონტექსტი : მგრ

    მინიმალური როლი : სუპერ მომხმარებელი - 0

    წვდომის პოლიტიკა : მომხმარებლის ნებართვები

    აირჩიეთ ზედა მენიუდან უსაფრთხოება-> წვდომის კონტროლი. ვერავინ შეძლებს ამ მენიუს ელემენტზე წვდომას იმის გამო, რომ მომხმარებელს აქვს სუპერ მომხმარებლის უფლებები შეუცვლელი (და ასევე მომხმარებელს აქვს იგივე წვდომის პოლიტიკა). თუ თქვენ მიდიხართ საკონტროლო პანელზე, როგორც საიტის ერთ-ერთი რედაქტორი, ქვეპუნქტი „ანგარიშების მართვა“ პასუხისმგებელია დღისთვის.

    უკან წინ