- Sky
- Blueberry
- Slate
- Blackcurrant
- Watermelon
- Strawberry
- Orange
- Banana
- Apple
- Emerald
- Chocolate
- Charcoal
-
Similar Content
-
By Miguel92
Obviamente por el momento tendrá varios errores!
Hola a todos, presento "una actualización"(lo estoy haciendo de a poco) que ustedes podrán descargar desde mi repositorio aunque este no será parte del oficial, pero le estoy dando o tratando de dar una 2da oportunidad.
Comunidad en discord https://discord.gg/gbg8fce3BF solo info de los últimos cambios!
Hasta ahora tiene la última versión de Smarty 4.3.0, la última versión de jQuery 3.6.3 y las librerías de jQuery actualizadas
Me gustaría saber que es lo que desean que tenga el "PHPost Risus 1.4x": (los tachados ya están agregados)
[ 01 ] Administración & Moderación separados del theme
[ 02 ] Chat
[ 03 ] Comunidades
[ 04 ] Descargar e instalar themes desde la administración
[ 05 ] Descargar e plugins básicos desde la administración
[ 06 ] Login & Registro separados del theme
[ 07 ] Que editor Wysibb (bbcode) o EasyMDE (markdown)
[ 08 ] Sección Archivos
[ 09 ] Sección Vip
[ 10 ] Sitemap.xml & Robots.txt
[ 11 ] Algún otro mod/complemento o lo que desees para añadir
[ 12 ] Pueden ser diseños nuevos para el default! (en proceso...)
Espero sus respuestas.
11.01.2023
NOTA:
Instalación arreglada y mejorada Ya tiene en uso password_hash y password_verify, es una mejora completa para las contraseñas. Nicks Reservados (basado en el mod de tutan-kabron), y tiene para añadirles contraseña para usuarios que ustedes deseen que use algunos de esos nicks reservados
12.01.2023
NOTA:
Se añadió el último commit realizado en el repositorio (Este se actualizará automáticamente cuando exista un nuevo commit) Así se verá en la administración, arriba de la versión de risus instalada
Este es del commit que se hizo en github, lo más probable es que, cuando lo vean ya no será el mismo commit... Ya que lo estaré modificando.
15.01.2023
NOTA:
Se esta modificando el theme (semi-responsive pr el momento)
Nueva forma de usar el modal, pero mantiene el uso original
Mini tutorial de como usar el modal rápido
18.01.2023
NOTA:
Home terminada espero XD
Comunidades añadidas
Login y Registro separados
-
By Miguel92
[MOD] Sitemap Administrable v2
Mod original: [Mod] Sitemaps Administrable v1
Autor: @aperpen
¿Qué tiene de nuevo?
Administración completa (v1) Administración modificada (v2) Inserción en robots.txt, para google detecte tu sitemap (v1)
# Configuraciones:
Opción de insertar de forma automática los posts y las fotos que se crean (v1) Opción de actualizar la última modificación de una URL al editar un post o una imagen (v1)
# Ver URLs incluídas en el sitemap:
Agregar, Editar, Borrar URLs (v1) Los cambios que realices de URLs no se verán reflejados en el sitemap no se verán reflejados hasta que tu lo desees. (v1) Sitemap completo (Url, frecuencia, ultima modificación, prioridad) (v1) URLs principales de tu web, incluídas por defecto. (v1) Restaurar URLs que vienen por defecto en cualquier momento. (v1)
# Generar la creación de archivos
Sitemap.xml (v2) Robots.txt (v2)
La guía de instalación lo haré desde cero, en caso que ya lo tengas instalados, solo deberás reemplazar los fragmentos de códigos, ya que irán en el mismo lugar!1 - Realizan la consulta
CREATE TABLE IF NOT EXISTS `w_sitemap` ( `id` int(3) NOT NULL AUTO_INCREMENT, `url` tinytext NOT NULL DEFAULT '', `frecuencia` varchar(15) NOT NULL DEFAULT '', `fecha` int(16) NOT NULL DEFAULT 0, `prioridad` decimal(2,1) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; ALTER TABLE `w_configuracion` ADD `sm_posts` int(1) NULL DEFAULT '1', ADD `sm_fotos` int(1) NOT NULL DEFAULT '1', ADD `sm_update_p` int(1) NOT NULL DEFAULT '1', ADD `sm_update_f` int(1) NOT NULL DEFAULT '1';
2 - Abren el inc/class/c.admin.php y buscan la última llave } que cierra la class tsAdmin añaden o reemplazan (solo si lo tienen)
/* * Sitemap y SEO administrables */ public function saveConfig(){ global $tsCore; $configuraciones = [ "posts" => empty($_POST['sm_posts']) ? 0 : 1, "fotos" => empty($_POST['sm_fotos']) ? 0 : 1, "update_p" => empty($_POST['sm_update_p']) ? 0 : 1, "update_f" => empty($_POST['sm_update_f']) ? 0 : 1 ]; $columns = $tsCore->setUpdate($configuraciones, "sm_"); if (db_exec([__FILE__, __LINE__], 'query', "UPDATE w_configuracion SET {$columns} WHERE tscript_id = 1")) return true; else exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ); }
3 - Abren el inc/php/admin.php y buscan:
/** MEDALLAS **/ } elseif($action == 'medals') { y arriba añaden o reemplazan (solo si lo tienen)
//SITEMAP BY APERPEN } elseif($action == 'sitemap') { if(empty($act)) { // Obtenemos todas las urls de la base de datos $smarty->assign("tsURLs", $tsSiteMap->getURLsBD()); } elseif($act === 'restaurar') { // Restauramos el sitemap if($tsSiteMap->CreateSiteMap()) { $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true'); } } elseif($act === 'generar') { // Generamos el sitemap if($tsSiteMap->generateSiteMap()) { $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true'); } } elseif($act === 'actual') { $smarty->assign("tsURLa", $tsSiteMap->getURLsBD()); } elseif($act === 'borrar') { if($tsSiteMap->removeUrlBD((int)$_GET['id'])) { $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true'); } } elseif($act === 'editar') { if(!empty($_POST['url'])) { if($tsSiteMap->editUrl($_GET['id'], $_POST['url'], $_POST['frecuencia'], $_POST['prioridad'])) { $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true'); } } else $smarty->assign("tsURL", $tsSiteMap->getUrl((int)$_GET['id'])); } elseif($act === 'nueva') { if(!empty($_POST['url'])) { if($tsSiteMap->addURL($_POST['url'], $_POST['frecuencia'], $_POST['prioridad'])) { $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true'); } } } elseif($act === 'config') { if(isset($_POST['sm_posts'])) { if($tsAdmin->saveConfigSitemap()) { $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true'); } } }
4 - Abren el inc/class/c.posts.php y buscan:
$tsActividad->setActividad(1, $postID); // SUBIR DE RANGO? $this->subirRango($tsUser->uid);
y abajo agregan
// Añadimos al sitemap if($tsCore->settings['sm_posts'] === 1) { $CatSeo = db_exec('fetch_assoc', db_exec([__FILE__, __LINE__], 'query', 'SELECT c_seo FROM p_categorias WHERE cid = '.(int)$postData['category']))['c_seo']; $tsSiteMap->addUrlsm($tsCore->settings['url'].'/posts/'.$CatSeo.'/'.$postID.'/'.$tsCore->setSEO($postData['title']).'.html'); }
En el mismo archivo en la funcion savePost() arriba de
// GUARDAR EN EL HISTORIAL DE MODERACION if(($tsUser->is_admod || $tsUser->permisos['moedpo']) && $tsUser->uid != $data['post_user'] && $_POST['razon']){
añaden esto
// Añadimos al sitemap if($tsCore->settings['sm_update_p'] === 1) { $CatSeo = db_exec('fetch_assoc', db_exec([__FILE__, __LINE__], 'query', 'SELECT c_seo FROM p_categorias WHERE cid = '.(int)$postData['category']))['c_seo']; $tsSiteMap->updateLM($tsCore->settings['url'].'/posts/'.$CatSeo.'/'.$post_id.'/'.$tsCore->setSEO($postData['title']).'.html'); }
5 - Abren el c.fotos.php de inc/class y buscan:
// AGREGAR AL MONITOR DE LOS USUARIOS QUE ME SIGUEN $tsMonitor->setFollowNotificacion(10, 1, $tsUser->uid, $fid); // ACTIVIDAD $tsActividad->setActividad(9, $fid);
y agregan debajo
// Añadimos al sitemap if($tsCore->settings['sm_fotos'] === 1) { $tsSiteMap->updateLM($tsCore->settings['url'].'/fotos/'.$tsUser->nick.'/'.$fid.'/'.$tsCore->setSEO($fData['titulo']).'.html'); }
y más abajo en la funcion editFoto() buscan
// REDIRIGIMOS $url = $tsCore->settings['url'].'/fotos/'.$data['user_name'].'/'.$fid.'/'.$tsCore->setSEO($fData['titulo']).'.html';
añaden esto
// Añadimos al sitemap if($tsCore->settings['sm_update_f'] === 1) { $tsSiteMap->updateLM($tsCore->settings['url'].'/fotos/'.$data['user_name'].'/'.$fid.'/'.$tsCore->setSEO($fData['titulo']).'.html'); }
6 - Abren el header.php que está en la raíz de su web y buscan:
// Mensajes de usuario include TS_CLASS.'c.mensajes.php'
y debajo agregan
include TS_CLASS.'c.sitemap.php'; $tsSiteMap = new tsSiteMap(); // Instalación automática a través de parámetros $tsSiteMap->setAuto();
7 - Si quieren lo hacen (PASO 5)
8 - Abren el themes/TUTEMA/templates/t.admin.tpl y buscan:
{elseif $tsAction == 'rangos'} {include file='admin_mods/m.admin_rangos.tpl'} y abajo agregan
{elseif $tsAction == 'sitemap'} {include file='admin_mods/m.admin_sitemap.tpl'}
9 - Abren el themes/TUTEMA/templates/admin_mods/m.admin_sidemenu.tpl y buscan:
<h4>Control de Usuarios</h4> <ul class="cat-list"> <li id="a_users"><span class="cat-title"><a href="{$tsConfig.url}/admin/users">Todos los Usuarios</a></span></li> <li id="a_sesiones"><span class="cat-title"><a href="{$tsConfig.url}/admin/sesiones">Sesiones</a></span></li> <li id="a_nicks"><span class="cat-title"><a href="{$tsConfig.url}/admin/nicks">Cambios de Nicks</a></span></li> <li id="a_rangos"><span class="cat-title"><a href="{$tsConfig.url}/admin/rangos">Rangos de Usuarios</a></span></li> </ul> y debajo añaden
<h4>SEO</h4> <ul class="cat-list"> <li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/sitemap">Sitemap</a></span></li> </ul>
10 - Suben los archivos a sus carpetas correspondientes
c.sitemap.php -> inc/class
m.admin_sitemap.tpl (smarty 3.x) o (smarty 4.x) -> themes/TUTEMA/templates/admin_mods
11 - Para acabar, este paso en la v2 esta cambiado, por lo cual no requiere de crea un archivo en la raíz de su web que se llame install.php
Lo pueden ejecutar de 3 formas
Solo crea el Sitemap.xml
https://suweb.com/?sitemap=true&uid=1
Solo crea el Robots.txt
https://suweb.com/?robots=true&uid=1
Crea el Sitemap.xml y Robots.txt
https://suweb.com/?sitemap=true&robots=true&uid=1
Cualquier error dejen el comentario y el tipo de error!
Sugerencias o dudas también.
-
By Miguel92
Bueno como dice el titulo "Mostrar titulo de los posts Anterior y Siguiente v2", ya que este es una actualización mejorada!
Topic de la v1
Básicamente se puede realizar tranquilamente desde cero:
1 - Buscan en inc/class/c.posts.php y van hasta la última llave }
/* OBTENER LOS TITULOS DE LOS POSTS ANTERIOR/SIGUIENTE */ public function getTitles($from) { global $tsCore; $pid = (int)$_GET["post_id"]; $pid = $from ? $pid - 1 : $pid + 1; $opt = $from ? "<" : ">"; if($pid < 0) return false; // Post $sql = db_exec([__FILE__, __LINE__], "query", "SELECT post_id, post_title, c_seo FROM p_posts LEFT JOIN p_categorias ON post_category = cid WHERE post_id = {$pid}"); // Existe? if(db_exec('num_rows', $sql) === 0) { $sql = db_exec([__FILE__, __LINE__], "query", "SELECT post_id FROM p_posts WHERE post_id {$opt} {$pid} ORDER BY post_id DESC LIMIT 1"); } $data = db_exec('fetch_assoc', $sql); if(!empty($data)) { $data["post_title"] = $tsCore->setSEO($data["post_title"]); $data["post_url"] = "{$tsCore->settings["url"]}/posts/{$data["c_seo"]}/{$data["post_id"]}/{$data["post_title"]}.html"; } return !empty($data) ? $data : false; }
2 - En inc/php/posts.php buscan
$tsPages['autor'] = $tsPost['post_user']; y debajo agregan
$smarty->assign("tsAnterior", $tsPosts->getTitles(true)); $smarty->assign("tsSiguente", $tsPosts->getTitles(false));
3 - Luego buscan en tema/templates/modules/m.posts_content.tpl y buscan
{if $tsPost.user_firma && $tsConfig.c_allow_firma} y arriba agregan (o donde deseen), obviamente ustedes lo tendrían que adaptar a su theme... Pero si usan bootstrap no tiene que hacer tantos cambios.
<div class="post-antsig"> <div class="post-anterior"> <a href="{$tsAnterior.post_url}" class="d-flex justify-content-start align-items-center"> <div class="icon ml-2"> <!-- Acá puede ir un icono o imagen, deciden ustedes --> <i class="icon-angle-left"></i> </div> <div class="titulo"> <small class="text-uppercase">No te piedas</small> <span>{$tsAnterior.post_title|truncate:34}</span> </div> </a> </div> <div class="post-siguiente"> <a href="{$tsSiguente.post_url}" class="d-flex justify-content-end align-items-center t-end"> <div class="titulo"> <small class="text-uppercase">A continuación</small> <span>{$tsSiguente.post_title|truncate:34}</span> </div> <div class="icon mr-2"> <!-- Acá puede ir un icono o imagen, deciden ustedes --> <i class="icon-angle-right"></i> </div> </a> </div> </div> Así quedaría terminado!
-
By Miguel92
Instalador automático de themes!
Es completamente básico y no requiere de mucha instalación.
1 - Abren header.php y al final agregan
include TS_ROOT . "/inc/InstallAutomaticTheme.php";
2 - Descargan "InstallAutomaticTheme.php" y lo agregan en inc/
y listo todos los themes que agregues en "themes" y que contengan el archivo "install.php" los va a instalar, primero comprobará si lo tienen instalado en caso que si lo tengan, no lo va a agregar otra vez.
-
By Miguel92
Actualizar a Smarty 4.0
1 - Deben descargar la última versión de smarty del repositorio en github.
2 - Luego van a inc/smarty y eliminan todo el contenido (Aviso, si tienen archivos agregados en plugins les recomiendo hacer una copia)
3 - Abren el archivo descargado "smarty-master.zip", acceden a la carpeta que contiene y luego buscan la carpeta "libs" y extraen el contenido dentro de "inc/smarty"
4 - Ahora vamos a la raíz de nuestro sitio y abrimos "header.php" y sigan los siguientes pasos:
A Buscan
define('TS_FILES', TS_ROOT.'/files/'); y debajo agregamos
define('TS_SMARTY', TS_ROOT.'/inc/smarty/'); B Arriba de "include 'config.inc.php';" agregan
# Definimos donde estan los temas define('TS_THEMES', TS_ROOT . '/themes/'); # Definimos donde se estan los plugins adicionales define('TS_PLUGINS', TS_EXTRA . 'plugins/'); # Tiempo de vida del cache antes de ser eliminado [5hs] (3600 equivale 1hs) define('CACHE_LIFE_TIME', 3600 * 5); define('CACHE_CHECKED', TRUE); # Solo usar las carpetas agregadas en $smarty->setTemplateDir() define('SECURITY', TRUE); # Para comprimir el html y que sea más rápido define('COMPRESS_HTML', FALSE); C En inc/ext crean una carpeta llamada plugins y descargar plugins.zip y la descomprimen en "inc/ext"
Contenido del comprimido zip: fecha, getUrl, hace, kmg, nl2br, quot, rtrim, seo, strlen, trim y ucfirst
D Un poco más abajo buscamos y lo borramos
// Smarty include TS_CLASS.'c.smarty.php'; E Más abajo buscamos
// Smarty $smarty = new tsSmarty(); y reemplazamos por
# Todas las instrucciones de smarty comienzan include TS_ROOT . "/inc/smarty.config.php"; F Al no existir el archivo "smarty.config.php" lo crean dentro de "inc"
5 - Ahora buscamos "/inc/smarty.config.php" y empezaremos la configuración.
A - Abrimos la etiqueta de <?php y luego agregan estas instrucciones
6 - Ahora vamos a la raíz de nuestro sitio y abrimos "footer.php":
A - Borramos todo el contenido del archivo y la reemplazaremos con esto
PD: Se me olvido mencionar que deben ir a inc/php/ajax_files.php y borrar lo siguiente, ya que no lo usaremos
$smarty->template_ts = false; // SMARTY SETTINGS
NOTA:
Como verán en el array $_ACCESO_TPL_PHP_ = [...items...], es el acceso a esas carpetas. ¿Por que incluí esto?, fácil es para simplificar más, antes para incluir un archivo se tenía que agregar de la siguiente manera
{include file='sections/main_header.tpl'} pero como en este ejemplo, al estar la ruta de la carpeta "sections" en el array se puede usar así
{include file='main_header.tpl'} sin tener que hacer referencia a la carpeta a la que se tenga que acceder, también se puede usar de la forma corta
{include 'main_header.tpl'} En la parte que accede al tema, css, js e images es para el funcionamiento de los plugins que había realizado, si desean lo pueden borrar... A no ser que quieran el plugin al que llame phpost, ¿Cuál es su función?: Es agregar todos los css, js sin tener que escribir toda la ruta
para acceder a dicho archivo y en caso de que este archivo no exista, no agregará nada(no va a ser una linea vacía)
este sería un ejemplo:
Agregará la fuente "Roboto" desde google y los estilos que estén mencionados en los parámetros
y lo que que sería cache es como esto "archivo.css?{$smarty.now}", así cuando se hace un cambio
lo apliquen los cambios
{phpost fonts=["Roboto"] css=[ "tema" => ["estilo.css", "css" => ["live.css", "wysibb.css", "$tsPage.css"]], "cache" => true ] ... ETC ... } Al tener la carpeta plugins dentro de inc/ext, puedes agregar más sin problemas
-
-
Recently Browsing 0 members
No registered users viewing this page.