Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Есть блог, на него выводится та информация, которая указывается в blog.tpl.
Как реализовать такую же штуку, только например с названием gallery, что бы можно было вывести страницу через код? В общем подобие страницы блога.

Ссылка на сообщение
Поделиться на другие сайты

Продублировать все, что связано с Блогом. Начиная от таблицы в базе до шаблона и админки.

Только с другим именем.

Ссылка на сообщение
Поделиться на другие сайты

дублировать таблицу s_blog

файлы:

api/Blog.php

view/BlogView.php

design/theme/blog.tpl

design/theme/post.tpl

simpla/BlogAdmin.php

simpla/PostAdmin.php

simpla/design/html/blog.tpl

simpla/design/html/post.tpl

 

дублировать

в api/Simpla.php клас блога

в api/Managers.php права блога

в .htacces запись для копии блога.

Ссылка на сообщение
Поделиться на другие сайты

Kosjak76 и mishanya! 

Ребята, и не стыдно Вам такие советы давать?

 

Дублировать кучу кода на каждый чих - это же и нерационально и  непрофессионально...

 

Куда проще так:

1. В админ на странице поста блога завести новое поле - Группа блога.

2. А дальше как обычно по адресу /blog выводить одну группу, по адресу /gallery - вторую. Потребуются маленькие изменения в .htaccess, view/BlogView.php, api/Blog.php.

Причем так легко можно и третью группу завести, и четвертую...

 

А у Вас - на третью группу опять дублировать горы кода?

Ссылка на сообщение
Поделиться на другие сайты

Да, согласен, так действительно рациональнее.

Но в качестве обучения и для лучшего понимания структуры движка - такой опыт совсем не повредит.

Ссылка на сообщение
Поделиться на другие сайты

Спасибо друзья))) Получилось) 

Создал новую страницу в админке с адресом gallery

В .htaccess прописал 
 

# Галерея
RewriteRule ^gallery/([^/]+)/?$	index.php?module=GalleryView&url=$1 [L,QSA]
RewriteRule ^gallery/?$	index.php?module=GalleryView [L,QSA]

 

Создал новый документ GalleryView
И в нём написал
 

<?PHP

require_once('View.php');

class GalleryView extends View
{
	
	public function fetch()
	{
		// Иначе выводим ленту блога
		return $this->fetch_gallery();
	}

	// Отображение списка постов
	private function fetch_gallery()
	{
		$folder_gallery = "design/sushishop/images/menu/";
		$gallery = $this->check_type_img(array_diff(scandir($folder_gallery), array('..', '.')), $folder_gallery); // считывание всех файлов из директории
		
		$this->design->assign('list', $gallery);

		// Метатеги
		if($this->page)
		{
			$this->design->assign('meta_title', $this->page->meta_title);
			$this->design->assign('meta_keywords', $this->page->meta_keywords);
			$this->design->assign('meta_description', $this->page->meta_description);
		}
		
		$body = $this->design->fetch('gallery.tpl');
		
		return $body;
	}
	
	private function check_type_img($array, $path) {
		$allowed_extentions = array('png', 'jpg', 'jpeg');
		$i = 0;
		
		foreach ($array AS $val) {
			if(in_array(strtolower(pathinfo($val, PATHINFO_EXTENSION)), $allowed_extentions)) {
				$clear_array[$i] = iconv('cp1251', 'UTF-8', $path.$val);
				$i++;
			}
		}
		return $clear_array;
	}
}

Эта строка отвечает за название шаблона в design и конечная папка откуда выводятся картинки:
 

$folder_gallery = "design/sushishop/images/menu/";


И создал gallery.tpl с кодом 
 


{foreach $list as $pic}
<img src="{$pic}">
{/foreach}


Получилась такая своеобразная галерея с выводом картинок =)
Может кому нибудь пригодится.

Ну и буду рад услышать комментарии и отзывы о данном примере)

Изменено пользователем RomanMedvedev
Ссылка на сообщение
Поделиться на другие сайты

А если в GalleryView вместо 

                $folder_gallery = "design/sushishop/images/menu/";
		$gallery = $this->check_type_img(array_diff(scandir($folder_gallery), array('..', '.')), $folder_gallery); // считывание всех файлов из директории
		
		$this->design->assign('list', $gallery);
		

написать так

                $folder_gallery = "design/sushishop/images/menu/";
		$gallery = $this->check_type_img(array_diff(scandir($folder_gallery), array('..', '.')), $folder_gallery); // считывание всех файлов из директории
		
		$this->design->assign('list', $gallery);
		
		$folder_gallery = "design/sushishop/images/menu2/";
		$gallery = $this->check_type_img(array_diff(scandir($folder_gallery), array('..', '.')), $folder_gallery); // считывание всех файлов из директории
		
		$this->design->assign('list2', $gallery);

и в gallery.tpl написать например 
 

{foreach $list as $pic}
<img src="{$pic}">
{/foreach}
<hr>
{foreach $list2 as $pic}
<img src="{$pic}">
{/foreach}

то будет выводится 2 галереи) Останется дело только за дизайном)

Изменено пользователем RomanMedvedev
Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

дублировать таблицу s_blog

файлы:

api/Blog.php

view/BlogView.php

design/theme/blog.tpl

design/theme/post.tpl

simpla/BlogAdmin.php

simpla/PostAdmin.php

simpla/design/html/blog.tpl

simpla/design/html/post.tpl

 

дублировать

в api/Simpla.php клас блога

в api/Managers.php права блога

в .htacces запись для копии блога.

Ну что то еще вы пропустили:

 

simpla/design/html/manager.tpl

и даже после этого "Permission denied"... Подскажите где капать?

Ссылка на сообщение
Поделиться на другие сайты

Ну что то еще вы пропустили:

 

simpla/design/html/manager.tpl

и даже после этого "Permission denied"... Подскажите где капать?

 

simpla/IndexAdmin.php

Ссылка на сообщение
Поделиться на другие сайты

simpla/IndexAdmin.php

точно, спасибо! Но, еще один косяк выплыл, я изменил в api/Blog.php класс с b. на e.

.........................
if(is_int($id))
			$where = $this->db->placehold(' WHERE e.id=? ', intval($id));
		else
			$where = $this->db->placehold(' WHERE e.url=? ', $id);
		
		$query = $this->db->placehold("SELECT e.id, e.url, e.name, e.annotation, e.annotation_tiny, e.text, e.meta_title,
		                               e.meta_keywords, e.meta_description, e.visible, e.date, e.thumb, e.image
		                               FROM __estate b $where LIMIT 1");
		if($this->db->query($query))
			return $this->db->result();
		else
			return false; ......................

и теперь, при клике на кнопку "Добавить запись" меня перебрасывает на товары((( а может дело и не в классах? 

Ссылка на сообщение
Поделиться на другие сайты

точно, спасибо! Но, еще один косяк выплыл, я изменил в api/Blog.php класс с b. на e.

.........................
if(is_int($id))
			$where = $this->db->placehold(' WHERE e.id=? ', intval($id));
		else
			$where = $this->db->placehold(' WHERE e.url=? ', $id);
		
		$query = $this->db->placehold("SELECT e.id, e.url, e.name, e.annotation, e.annotation_tiny, e.text, e.meta_title,
		                               e.meta_keywords, e.meta_description, e.visible, e.date, e.thumb, e.image
		                               FROM __estate b $where LIMIT 1");
		if($this->db->query($query))
			return $this->db->result();
		else
			return false; ......................

и теперь, при клике на кнопку "Добавить запись" меня перебрасывает на товары((( а может дело и не в классах? 

 

тут забыли

__estate b

 

еще проверьте првильно ли классы названы (редактирование/добавления ). перебрасывает на страницу товаров как раз из-за этого. 

Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

тут забыли

__estate b

 

еще проверьте првильно ли классы названы (редактирование/добавления ). перебрасывает на страницу товаров как раз из-за этого. 

ох, вернул классы на исходные, изменил только Blog/blog на Estate/estate и Post/post на Estatepost/estatepost во всех файлах. Вроде бы уже перебрал все, но действительно, редактирование/добавление не работает, переброс на товары. И на "сайте страница не найдена". Не хочу ставить "Группу блогов"... клон блога, меня устраивает на все 100%, но что то я делаю не так(

Ссылка на сообщение
Поделиться на другие сайты

ох, вернул классы на исходные, изменил только Blog/blog на Estate/estate и Post/post на Estatepost/estatepost во всех файлах. Вроде бы уже перебрал все, но действительно, редактирование/добавление не работает, переброс на товары. И на "сайте страница не найдена". Не хочу ставить "Группу блогов"... клон блога, меня устраивает на все 100%, но что то я делаю не так(

 

напишите в личку доступы, посмотрю 

Ссылка на сообщение
Поделиться на другие сайты
  • 3 года спустя...

Спасибо друзья))) Получилось) 

 

Создал новую страницу в админке с адресом gallery

 

В .htaccess прописал 

 

# Галерея
RewriteRule ^gallery/([^/]+)/?$	index.php?module=GalleryView&url=$1 [L,QSA]
RewriteRule ^gallery/?$	index.php?module=GalleryView [L,QSA]

 

Создал новый документ GalleryView

И в нём написал

 

<?PHP

require_once('View.php');

class GalleryView extends View
{
	
	public function fetch()
	{
		// Иначе выводим ленту блога
		return $this->fetch_gallery();
	}

	// Отображение списка постов
	private function fetch_gallery()
	{
		$folder_gallery = "design/sushishop/images/menu/";
		$gallery = $this->check_type_img(array_diff(scandir($folder_gallery), array('..', '.')), $folder_gallery); // считывание всех файлов из директории
		
		$this->design->assign('list', $gallery);

		// Метатеги
		if($this->page)
		{
			$this->design->assign('meta_title', $this->page->meta_title);
			$this->design->assign('meta_keywords', $this->page->meta_keywords);
			$this->design->assign('meta_description', $this->page->meta_description);
		}
		
		$body = $this->design->fetch('gallery.tpl');
		
		return $body;
	}
	
	private function check_type_img($array, $path) {
		$allowed_extentions = array('png', 'jpg', 'jpeg');
		$i = 0;
		
		foreach ($array AS $val) {
			if(in_array(strtolower(pathinfo($val, PATHINFO_EXTENSION)), $allowed_extentions)) {
				$clear_array[$i] = iconv('cp1251', 'UTF-8', $path.$val);
				$i++;
			}
		}
		return $clear_array;
	}
}

Эта строка отвечает за название шаблона в design и конечная папка откуда выводятся картинки:

 

$folder_gallery = "design/sushishop/images/menu/";

 

И создал gallery.tpl с кодом 

 


{foreach $list as $pic}
<img src="{$pic}">
{/foreach}

 

Получилась такая своеобразная галерея с выводом картинок =)

Может кому нибудь пригодится.

 

Ну и буду рад услышать комментарии и отзывы о данном примере)

У меня не работает

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...