Forums / National / Russian / Оптимальный путь решения?

webitproff
#1 2023-04-03 13:14

Прошу подсказки, достаточно экспертного мнения или рекомендаций, как лучше будет сделать

Задача состоит в следующем:
- создать через плагин (пока в проекте) 4 рекламных карточки (блока/банера)
- возможность выводить их глобально, а именно у каждой категории модуля PAGE или FORUMS будут разные группы этих четырех карточек рекламы.

Шаблон карточки рекламного блока:
Пример
1.    Заголовок карточки (до 120 символов)
2.    Текстовое описание карточки примера (до 3000 символов)
3.    Фоновое изображение карточки примера (820 на 520 px пикселей)
4.   Кнопка со ссылкой.

Вопрос вот в чем, постараюсь его разбить:
1. шаблон карточки товара будет лучше внести в одно экстраполе или также разбить на 4 поля, как 4 пункта выше по шаблону.
2. если не создавать экстраполя и не создавать новые таблицы в БД, а просто в конфигурации плагина (по принципу "Слоты для меню" как в коробке) создать новые строки в таблице "cot_config" и таких строк в итоге будет около 200, - насколько это глупое решение задачи (я искринне не совсем понимаю), и в какой степени может замедлить работу сайта?

Заранее признателен.

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Alex300
#2 2023-04-03 13:43

Когда-то давно делал что то подобное: https://lily-software.com/free-scripts/cotonti-banners. Но именно что подобное, не уверен подойдет ли в данном случае. Да и модуль тот давно не обновлялся.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
webitproff
#3 2023-04-03 14:03
#46328 Alex300:

Когда-то давно делал что то подобное: https://lily-software.com/free-scripts/cotonti-banners. Но именно что подобное, не уверен подойдет ли в данном случае. Да и модуль тот давно не обновлялся.

А всё же, как будет лучше сделать?

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Kort
#4 2023-04-05 07:09

Настройки в файл, затем в кэш. Баннер собирать уже из массива в кэше через, например, array_rand.

SED.by - создание сайтов, разработка плагинов и тем для Котонти
webitproff
#5 2023-04-05 08:04
#46372 Kort:

Настройки в файл, затем в кэш. Баннер собирать уже из массива в кэше через, например, array_rand.

не настолько знаю кота....

настройки в файл plug.setup.php ?

Баннер собирать уже из массива в кэше через, например, array_rand.

тут вовсе сел я в лужу
аккаунт удален - не срослось с разработчиками
ушел на другой движок
Kopusha
#6 2023-04-13 06:29

https://lily-software.com/free-scripts/cotonti-banners отлично все это делает, не глючит и под себя дорабатывается очень легко. 

Kort
#7 2024-07-12 12:21

Простой вариант баннерной системы:

  1. Баннеры храним в массиве, который кэшируем. С отключенным кэшем массив просто будет считываться из файла.
  2. Для каждого баннера можем определить не менее одного:
    • имени файла с  картинкой, 
    • ссылки,
    • описания 1,
    • описания 2.
  3. Если какое-то из свойств указано в количестве более одного, то при выводе оно рандомизируется. Если рандомизации не требуется, указываем только одно.
  4. Разметка баннера формируется в TPL-шаблоне.
  5. Вывод в шаблоне формируется с помощью двух функций:
    • проверка наличия баннера для данной страницы,
    • вывод баннера.
  6. Картинки выгружаем по ftp в папку, указанную в .gitignore

Пример файла настроек массива:

<?php
/**
 * SBS Plugin Settings
 *
 * @package sbs
 * @version 1.00
 * @author SED.BY
 * @copyright (c) sed.by 2024
 */

defined('COT_CODE') or die('Wrong URL');

define('SBS_REALM', '[SEDBY] SBS Simple Banner System');

if ($cache && $cache->db->exists('banners', SBS_REALM)) {
	$sbs_banners = $cache->db->get('banners', SBS_REALM);
} else {

	$sbs_banners = [
		'page' => [
	    '1' => [
	  		'image' => [
					'astronaut.jpg',
					'pilot.jpg',
				],
	  		'link' => [
					'https://sed.by/blog',
					'https://sed.by/archive',
				],
	  		'text_1' => [
					'Астронавт',
					'Космонавт',
				],
	  		'text_2' => [
					'Изображение астронавта',
					'Картинка космонавта',
				],
	  	],
	  	'2' => [
	  		'image' => [
					'desktop.jpg',
				],
	  		'link' => [
					'https://sed.by/cot',
				],
	      'text_1' => [
					'Десктоп',
				],
	      'text_2' => [
					'Изображение десктопа',
				],
	  	],
	  ],
	];

	$cache && $cache->db->store('banners', $sbs_banners, SBS_REALM, Cot::$cfg['plugin']['sbs']['cache']);
}

Пример шаблона баннера:

<!-- BEGIN: MAIN -->
<a href="{BANNER_LINK}" title="{BANNER_TEXT_1}" class="mb-3 d-block" {BANNER_REL}>
  <img src="{BANNER_IMAGE}" alt="{BANNER_TEXT_2}" class="img-fluid">
</a>
<!-- END: MAIN -->

Пример вывода баннера:

<!-- IF {PHP.id|sedby_banner_exists('page', $this)} === true -->
{PHP.id|sedby_banner('sbs.partner', 'page', $this, 'random')}
<!-- ENDIF -->

Подробное описание | Git-репозиторий

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Kopusha
#8 2024-07-14 09:43
#46328 Alex300:

Когда-то давно делал что то подобное: https://lily-software.com/free-scripts/cotonti-banners. Но именно что подобное, не уверен подойдет ли в данном случае. Да и модуль тот давно не обновлялся.

Этот модуль (с допиливаниями но в основном рюшечки а не ядро) успешно работает годами у меня

Added 1 minute later:

#48080 Kort:

Простой вариант баннерной системы:

О, гляну если не сдохну от жары или другой причины)