Создаем структуру интернет-магазина часть II (Не актуально)

 

Доброго всем времени суток Улыбаюсь  Продолжаем цикл статей «Создать интернет — магазин». В прошлой статье мы начали создавать структуру нашего магазина. В приделах первой части заметки мы успели создать два раздела (точнее узла):

  • «О нас»
  • и «Обратная связь»

Очень надеюсь, что с данной задачей Вы справились на ура, ведь сегодня нам предстоит проделать аналогичный процесс и создать еще два раздела (точнее узла Улыбаюсь), это:

  • «Каталог»
  • и «Новости»

Эти два раздела являются каталогизированными страничками

 

Я уже пояснял, что это за странички, но как говорится: «Повторение — мать учение». Как известно, зайдя на страницу «Каталога услуг», в любом интернет — магазине, мы видим список с товарами. Обычно это имя товара, изображение и цена. В общем — то я бы сказал, что это краткое описание каждого товара который привязан к тому или иному разделу на сайте. Тем самым можно сделать вывод, что каталогизированные странички — это странички которые содержат список (как правило краткий) имеющихся в этом каталоге элементов.

Например на моем блоге вот эта страница является каталогизированной. На ней Вы можете видеть анонсы статей которые лежат в данном каталоге. Надеюсь понятно Улыбаюсь

Сейчас мы не будем создавать уже готовые разделы «Каталог» и «Новости», нам пока что необходимы лишь узлы. Но так как в будущем нам известно, что данные страницы («Каталог» и «Новости») не конечные, то для системы RS-SITE будет понятнее если мы поставим, для создания этих узлов, модуль который работает с каталогами (т.е. с не конечными страницами).

Весь этот разговор к тому, что бы Вы всегда придерживались одному самому главному правилу: Если Вам нужно получить конечную страницу, то используем модуль который работает с материалом, то есть модуль admin.content. Если же Вам нужна не конечная страница, то есть каталогизированная, то используйте модуль который работает с каталогами, а именно admin.catalog

Это правило позволит Вам избежать множеств ошибок с просчетом путей (прямых ссылок) до конечного материала, так как система RS-SITE автоматически просчитывает прямые ссылки до материала (ну в нашем случае товара). Я в общем — то отвлекся от темы, не забивайте пока себе этими нюансами голову. Просто запомните правило, после Вы поймете его значение.

Так, вернемся к нашей структуре. Нам необходимо создать еще два узла. Для того чтобы их создать необходимо на админку поставить редактор каталогов. Вот этим и займемся.

 

Ставим редактор каталогов

 

Заходим в раздел «Дерево» и щелкаем на плюсик напротив узла admin

Добавляем новый узел

В открывшимся редакторе вбиваем вот такие данные:

Данные нового узла

Если вы забыли, то псевдонимы мы создаем по шаблону название_модуля-псевдоним_узла. Жмем кнопку «Добавить ветку». Внизу дерева должен появится новый узел

Созданный узел

Щелкаем на него, для того что бы перейти к редактору модулей. Теперь нам необходимо поставить на данный узел, уже известный Вам, модуль admin.install

ставим модуль admin.install

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

Параметры модуля admin.install

Надеюсь Вы помните откуда берется значение параметра install. Вот что получил я:

Результат добавление модуля admin.install

Теперь необходимо перейти по ссылке, которую можно увидеть в самом верху редактора модулей. Внимание перейти по этой ссылке необходимо только один раз.

Ссылка на установку редактора каталогов

По данной ссылке Вы должны увидеть вот такое сообщение:

Сообщение о успешной установки модуля admin.catalog

Теперь необходимо вернуться в редактор модулей, и удалить модуль admin.install

Удаление admin.install

После проделанной операции, в центральном блоке редактора должен про грузится вот такой список установленных модулей:

Установелнные модули

А в узел catalog-sys должны вложится узлы редактора каталога:

Узлы редактора

Если это так, то можете себя поздравить с вторым удачно поставленным модулем для админ панели Улыбаюсь Теперь нам необходимо удалить модуль admin.fields, он нам тут тоже не нужен

Удаляем admin.fields

У меня остался лишь один модуль в центральном блоке

Результат удаления модуля admin.fields

Как видите у модуля admin.catalog тоже отсутствует значение параметра tree. Его необходимо вставить ручками. Какое значение данного параметра? Данный параметр отвечает за узел куда будут вкладываться пункты каталога. Так как нам необходимо видеть вот такие ссылки:

  • http://rssh.ru/catalog/
  • http://rssh.ru/news/

То можно сделать вывод, что пункты необходимо прицеплять к главному узлу. если помните то ID главного узла у нас единица. Стало быть параметр модуля admin.catalog должен выглядеть вот так:

Параметр tree модуля admin.catalog

Теперь перейдя вот по этой ссылке:

Ссылка на редактор

Мы попадаем на страницу редактора каталогов

Редактор каталогов

 

Добавляем необходимые нам узлы

 

Нам осталось воспользоваться данным редактором для того что бы создать два необходимых нам узла. Это узел «Каталог»

Создаем узел каталог

и узел «Новости»

Создаем узел новости

После проделанной работы мы видим в списке пунктов два новых каталога

Список новых каталогов

А в разделе «Дерево» мы видим два новых узла

Два новых узла

 

Заключение

 

Ну что же. Мы создали необходимые нам узлы, так что статьи по созданию главной структуры нашего интернет — магазина можно считать закрытыми. Далее нам нужно будет прицепить редактор с помощью которого мы будет создавать товары для нашего магазина, и редактор который позволит администратору публиковать новости. Наверное начнем с последнего, ибо это полегче, и мне не придется писать про функционал двух модулей (которые нам пригодятся) сразу.

Если у Вас возникли какие либо трудности, или просто есть что сказать, пишите комменты Улыбаюсь

На сегодня это все, до новых встреч!

update в связи с тем, что цикл был перезапущен в новом формате данная статья не актуальна

 

Возможно Вам будут интересны следующие заметки

Комментарии (10)

Ваше имя *
Сайт
Ваш E-mail *
Ваше сообщение *
 
dlegame, 26 Января 2014 г. 12:44 пишет:
Читатель
Занимательно создавать свой интернет магазин...но меня это не интересует к сожилению...
меня интересует одно...какой цикл уроков будет следущий после интернет магазина? =)
И можете подсказать новичку который начал только работать с классами...
как начать писать свое ядро?
Алексей, 26 Января 2014 г. 14:28 пишет:
Автор
но меня это не интересует к сожилению...
Ну создания интернет магазина лишь поможет понять как работает система RS-SITE. Другого назначения, для данного цикла, нет.
какой цикл уроков будет следущий после интернет магазина?
С начало бы этот цикл закончить. Что будет дальше я пока не знаю. Может даже вообще ничего. А может появится версия 2.0, на основе который в голову придет новый цикл статей.
как начать писать свое ядро?
На примере моей CMS ядром является лишь набор инструментов для упрощение разработки всего остального. В ядро вошло:
- Инструменты по работе с данными
- Инструменты по работе с базой данных
- Инструменты по работе с почтой
Я бы еще добавил в ядро механизм подключение модулей, но он у меня сделан в виде модуля который подключается к точки входа руками, что ни есть хорошо, и что я естественно буду исправлять в версии 2.0
Все эти инструменты помогли не только собрать админ панель для упрощение разработки сайтов, но и позволяют быстрее разрабатывать новые возможности для системы. Классы лишь помогли без особых заморочек перенести все эти инструменты в каждый файл программы (путем наследования)
Ответ для пользователя: dlegame
dlegame, 26 Января 2014 г. 17:03 пишет:
Читатель
На примере моей CMS ядром является лишь набор инструментов для упрощение разработки всего остального. В ядро вошло:
- Инструменты по работе с данными
- Инструменты по работе с базой данных
- Инструменты по работе с почтой
Я бы еще добавил в ядро механизм подключение модулей, но он у меня сделан в виде модуля который подключается к точки входа руками, что ни есть хорошо, и что я естественно буду исправлять в версии 2.0
Все эти инструменты помогли не только собрать админ панель для упрощение разработки сайтов, но и позволяют быстрее разрабатывать новые возможности для системы. Классы лишь помогли без особых заморочек перенести все эти инструменты в каждый файл программы (путем наследования)
я сейчас пытаюсь понять ООП и вот пока-что сделал дерево директорий:
- plugins //папка плагинов
- source //системная папка
-- components //компоненты
-- controllers //контроллеры
-- db //папка для файла подключение к бд
--- db.php //файл подключение к бд
-- library //классы
-- models //модели
-- public //функции
- tmp //корзина файлов
- views //файлы шаблонов
- widgets //виджеты
- index.php //индексной файл

типо так =) и вот написал небольшой класс:
if (! defined ( 'SAFE_UDISCUZ' )) {
	die ( "Hacking attempt!" );
}

use classes\SplClassLoader;
use classes\Registry;

class uDiscuzCore {

	private static $instance = false;
	
	public static function getInstance()
    {
        if(!self::$instance)
            self::$instance = new self;
        return self::$instance;
    }	

	public function __autoload(){
	
		header('Content-Type: text/html; charset=utf-8');
		require_once PATH . "/classes/SplClassLoader.php";
	
		$instance = new SplClassLoader();
		$instance->setIncludePath( __DIR__ . '/classes' );
		$instance->register();
		
	Registry::getInstance()->set('Param', new Param());	
	
	}

	public function safe_sql( $so ){
	
        return str_replace("'", "'", $so);
		
    }
	
	public function safe_xss( $var ){
		if(is_array($var)){
				 
				foreach($var as $k => $v){
					 
					if(is_array($k))
						$res[safe($k)] = str_replace("'","'",htmlspecialchars($v));
					elseif(is_array($v))    
						$res[str_replace("'","'",htmlspecialchars($k))] = safe($v);
					elseif(is_array($k) and is_array($v))   
						$res[safe($v)] = safe($k);
						else
							$res[str_replace("'","'",htmlspecialchars($k))] = str_replace("'","'",htmlspecialchars($v));
				}
				 
			}
			else $res = str_replace("'","'",htmlspecialchars($var));
			return $res;
	}

}
что думаете?
Ответ для пользователя: Алексей
Алексей, 26 Января 2014 г. 23:59 пишет:
Автор
Ну что я могу думать то? Вы разработчик, Вам и решать какую структуру движка создавать. Что по поводу класса, то меня смущает метод __autoload() (если это именно то что я думаю). Знаю про такую функцию, а Вот использование ее в классе, я первый раз вижу.
Вообще советую отказаться от нее, ее скорее всего в следующих версиях php выпилят. Смотрите в сторону неймспейсов и функции spl_autoload_register
Ответ для пользователя: dlegame
dlegame, 27 Января 2014 г. 06:39 пишет:
Читатель
с namespace работаю и так =)
Ответ для пользователя: Алексей
Алексей, 27 Января 2014 г. 10:18 пишет:
Автор
Я вижу. Но смысл функции spl_autoload_register в том что можно назначить функцию, или метод который будет по неймспейсу (если область имен совпадает с папкой в которой лежит класс) подключать и вызывать нужный класс. Т.е. не нужно будет, перед использованием каждого класса, писать require_once или include, все будет подключаться автоматически.
Ответ для пользователя: dlegame
Sa1nt, 20 Февраля 2014 г. 22:51 пишет:
Читатель
Можно последнюю версию RS BLOG на kacergei{пробежала собака}yandex{точка}ru
dlegame, 01 Марта 2014 г. 09:53 пишет:
Читатель
Уважаемый Алексей, скажите пожалуйста вот я написал так:
$sql = ""
	."SELECT"
		." users.id	AS	users_id,"
		." users.username AS	users_username,"
		." users.email	AS	users_email"
	." FROM"
		." users"
	." WHERE"
		." users.active	=	'1'"
	." ORDER BY"
		." users.id"
	." DESC LIMIT"
		." 9"
;
			
$new = mysqli_query($db, $sql);
это оптимизированный SQL запрос?
и скажите как запрос такого вида:
	$tmp = mysqli_fetch_row(mysqli_query($db, "SELECT COUNT(*) FROM `topics` WHERE `cats` = '".$row['cats_id']."'"));
	$q = $tmp[0];	
	
	$tml = mysqli_fetch_row(mysqli_query($db, "SELECT COUNT(*) FROM `posts` WHERE `topic` = '".$row['cats_id']."'"));
	$gp = $tml[0];
Сделать такого же варианта как написано вверху
Алексей, 02 Марта 2014 г. 21:56 пишет:
Автор
Тут вроде как нечего оптимизировать... Для удобства чтения выведите SQL запрос в отдельную переменную ($sql) и все...
Ответ для пользователя: dlegame
Rio-WordPress, 15 Декабря 2014 г. 20:28 пишет:
Гость
Познавательно и хорошо, если я понял то шаблон сайта тоже собирается с модулем?
только я так и не понял каким именно, можешь написать а я уж экспериментирующую.