Меню

Мой первый плагин для Maxsite CMS - robots_txt

Создание сайтов2298
Мой первый плагин для Maxsite CMS - robots_txt

Здравствуйте. Вчера просматривал описание одной неизвестной, но умершей CMS, и заинтересовался функцией, позволяющей редактировать robots.txt через админку, и решил создать такой плагин для Maxsite CMS, заодно потренироваться в php.

Что я ещё решил добавить в плагин

Возможность редактирования файла .htaccess.

Пошёл искать готовое решение по отображению содержимого файла в текстовом поле с возможностью редактирования и сохранения

И нашёл. Скопировал в notepad++ (Подготовил к внедрению). Вот этот код:

$file='name.htm'; 
$temp=isset($_POST['temp'])?$_POST['temp']:''; 
$edit=isset($_POST['edit'])?$_POST['edit']:''; 
if ($edit=='Edit') 
{ file_put_contents($file,$temp); } 
$temp=file_get_contents($file); 
echo "<form method='post'>"; 
echo "<textarea name='temp' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
"; 
echo "<input type='submit' name='edit' value='Edit'>"; 
echo "</form>";

Начинаю разбираться

Сначала мне надо было заменить name.htm на robots.txt, что я успешно и сделал grin.

После чего снёс всё на фиг из admin.php, кроме первой строчки, а также вставил ?> в конце.

Прописал заголовок уровня 2 с названием плагина.

Ниже вставил:

<?php
$file='robots.txt'; 
$temp=isset($_POST['temp'])?$_POST['temp']:''; 
$edit=isset($_POST['edit'])?$_POST['edit']:''; 
if ($edit=='Edit') 
{ file_put_contents($file,$temp); } 
$temp=file_get_contents($file); 
echo "<form method='post'>"; 
echo "<textarea name='temp' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
"; 
echo "<input type='submit' name='edit' value='Edit'>"; 
echo "</form>";
?>

Но меня не устраивало то, что кнопка имеет текст "Edit", а не "Редактировать".

Я думал так: "Поскольку if - это "если", значит в строке:

if ($edit=='Edit')

указывается, что если выводится имя edit, выводить текст "Edit". То, что это именно текст кнопки, я понял по большой букве "E".

После этого заменил в кнопке слово "Edit" на "Редактировать", после чего она изменилась так, как мне надо:

echo "<input type='submit' name='edit' value='Редактировать'>";

Забыл сказать, что сначала я только значение атрибута "value" заменил, но кнопка как была Англоязычной, такой и оставалась.

Этап 2: Создание второй формы для файла .htaccess

Я просто ниже вставил код, заменив robots.txt на .htaccess:

<?php
$file='.htaccess'; 
$temp=isset($_POST['temp'])?$_POST['temp']:''; 
$edit=isset($_POST['edit'])?$_POST['edit']:''; 
if ($edit=='Редактировать') 
{ file_put_contents($file,$temp); } 
$temp=file_get_contents($file); 
echo "<form method='post'>"; 
echo "<textarea name='temp' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
"; 
echo "<input type='submit' name='edit' value='Редактировать'>"; 
echo "</form>";
?>

Но была проблема:

  • После формы редактирования каждого файла выводится кнопка "Редактировать", соответственно, если надо изменить оба файла, надо сначала изменить первый, нажать на кнопку, а затем проделать то же самое со вторым - это неудобно.

Которую я не мог решить в течение часа, а может и больше.

Этап 3: объединение двух форм в одну

Я не буду здесь описывать каждый этап подробно, так как не помню в точности, что я делал, но помню, что я код открытия формы перенёс в самое начало, а кнопку у файла robots.txt удалил, оставив только у .htaccess

<?php
echo "<form method='post'>"; 
$file='robots.txt'; 
$temp=isset($_POST['temp'])?$_POST['temp']:''; 
$edit=isset($_POST['edit'])?$_POST['edit']:''; 
if ($edit=='Редактировать') 
{ file_put_contents($file,$temp); } 
$temp=file_get_contents($file); 
echo "Файл robots.txt:";
echo "<textarea name='temp' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
"; 
$file='.htaccess'; 
$temp=isset($_POST['temp'])?$_POST['temp']:''; 
$edit=isset($_POST['edit'])?$_POST['edit']:''; 
if ($edit=='Редактировать') 
{ file_put_contents($file,$temp); } 
$temp=file_get_contents($file); 
echo "Файл .htaccess:";
echo "<textarea name='temp' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
"; 
echo "<input type='submit' name='edit' value='Редактировать'>"; 
echo "</form>";
?>

Я не стал выше говорить, что добавил строки, описывающие каждый файл: думаю, что вы это итак поняли.

Итогом этой работы было то, что в обеих формах стал отображаться файл .htaccess, что привело к уничтожению robots.txt (Вместо его содержимого показывался текст htaccess-файла).

Я не знаю, как это получилось, но это не важно. Самое прикольное то, что я, вместо того, чтобы скопировать текст роботса в буфер обмена, обновил страницу, на которой проверял действие изменений... Пришлось его создавать заново, благо у меня есть другие сайты, с которых можно взять пример, а также редактор в админке grin.

Решение: как я объединил формы

Поскольку я не изучал учебники по php, не знаю, как что называется, поэтому спросил у Яндекса, как обработать при помощи php атрибут name textarea. В ответе нашёл форум, на котором был пример, из которого я выяснил, что для обработки формы используется post, причём он повторяется со значением 2 раза (Также, как и у меня в скрипте), что являлось подсказкой: "Это то, что мне надо".

Я заменил в post значения так, чтобы получились следующие строки. Для robots.txt:

$temp=isset($_POST['robots'])?$_POST['robots']:'';

Для .htaccess:

$temp=isset($_POST['htaccess'])?$_POST['htaccess']:'';

После этого, в textarea заменил temp на эти значения:

echo "<textarea name='robots' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
";
echo "<textarea name='htaccess' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
";

Вот что получилось в итоге:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');?>
<h1>Редактирование robots.txt и .htaxcess</h1>
<?php
echo "<form method='post'>"; 
$file='robots.txt'; 
$temp=isset($_POST['robots'])?$_POST['robots']:''; 
$edit=isset($_POST['edit'])?$_POST['edit']:''; 
if ($edit=='Редактировать') 
{ file_put_contents($file,$temp); } 
$temp=file_get_contents($file); 
echo "Файл robots.txt:";
echo "<textarea name='robots' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
"; 
$file='.htaccess'; 
$temp=isset($_POST['htaccess'])?$_POST['htaccess']:''; 
$edit=isset($_POST['edit'])?$_POST['edit']:''; 
if ($edit=='Редактировать') 
{ file_put_contents($file,$temp); } 
$temp=file_get_contents($file); 
echo "Файл .htaccess:";
echo "<textarea name='htaccess' cols='100%' rows='35'>".htmlspecialchars($temp)."</textarea>
"; 
echo "<input type='submit' name='edit' value='Редактировать'>"; 
echo "</form>";
?>

Завершение создания плагина

Заменил существующие значения info.php одного из плагинов на свои, а также отредактировал index.php

Поскольку это лёгкая работа, описывать её здесь не буду.

Прошу обратить внимание (Для тех, кто хочет создавать плагины)

Те шаблоны плагинов, которые поставлялись раньше с Maxsite CMS, не работают. Во всяком случае я не смог активировать плагин с использованием файлов шаблона плагинов.


Скрины плагина

Отмеченный плагин в списке неактивных плагинов:

Robots_txt на странице списка плагинов

Страница плагина:

Страница плагина Robots_txt

Скачать

Жмите сюда

Заключение

Надеюсь, эта статья была интересной, полезной, а плагин вам нужен, в чём я очень сомневаюсь.

Благодарю за внимание. Извините за отсутствие картинок в основном: не знаю, что разместить.

P. S. Буду благодарен за лайки и комментарии

Текущая оценка Общий бал: 5 Проголосовало Проголосовало: 1

help_share

Данная публикация была вам полезна?

Помоги автору сайта, расскажи друзьям...

Комментариев: 2
  •  Илья Земсков 25 марта 2015 в 23:17:44
    img

    Денис, спасибо, что делитесь опытом освоения MaxSite CMS! Это очень важно, давать заинтересованным людям описание своего опыта. Это развивает нас всех.

    •  Денис Скрипник | 25 марта 2015 в 23:33:00
      img

      Пожалуйста. Благодарю за комментарий.

Буду благодарен за каждый оставленный вами комментарий

Добавить Комментарий

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Похожие публикации