Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test con italystrap-beta4 #13

Open
AndreaGelmini opened this issue May 26, 2017 · 25 comments
Open

test con italystrap-beta4 #13

AndreaGelmini opened this issue May 26, 2017 · 25 comments

Comments

@AndreaGelmini
Copy link

Ciao segnalo di seguito la mia esperienza con questa versione (Beta-4), lo so' che è in beta ma forse ti può essere di aiuto. Spero che l'esperienza di un neofito-(ma non cosi tanto) possa essere utile a rendere IS utilizzabile anche da persone non troppo esperte.

Dunque iniziamo con le considerazioni:

  1. Ho testo sia l'update (da versione 3.5 a Beta-4) che l'installazione 'vergine' di Beta-4.
  2. I siti sono ospitati su un noto hosting gratuito, tutti e due in sotto cartelle.
  3. Pluing ItalyStrap installato all'ultima versione.
  4. Versione di php 5.6

Per quanto riguarda l'ugrade:
Ho seguito la guida del readme ma sembra che il tema figlio non faccia il callback al tema padre (o vice versa). --ho effettuato il downgrade--.

Per quanto riguarda l'installazione 'vergine'.

  • Ho effettuato l'installazione, e TGM mi segnalava di installare sia Github updater che ItalyStrap plugin, il primo non mi ha dato problemi il secondo al download mi diceva che non è presente sui repo di wp per ovviare a ciò ho scaricato e installato la versione che è presente sul sito del progetto (http://italystrap.com/).

  • Installato il tema padre e il tema figlio (scaricati dal sito del progetto) e attivato il secondo. anche in questo caso non sembrava effettuare il callback sui file del tema padre.
    Ho risolto il problema del callback in questo modo (anche se non credo sia la soluzione migliore).

<?php
function zxc_get_is_theme_root() {

    $parent_style = 'italistrap'; // This is 'twentyfifteen-style' for the Twenty Fifteen theme.

    wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array( $parent_style ),
        wp_get_theme()->get('Version')
    );
}
add_action( 'wp_enqueue_scripts', 'zxc_get_is_theme_root' ); 
?>
  • Ora ho il problema che le icone glyphicon non si vedono.

  • Per il resto sembra funzionare bene.

  • Smanettando e testando impostazioni qui e là, ho notato che nella sezione "personalizza" quando vado a impostare il template del menu principale su fixedtop il margin-top del tag body non aumenta con la conseguenza che parte del contenuto è nascosto. (cosa che forse è voluta e/o demandata alla personalizzazione del css da parte dell'utente/programmatore).

Non vedo l'ora che la versione 4 stabile sia pronta all'uso per smanettarci un pochetto e aggiornare il mio tema personalizzato.

@overclokk
Copy link
Collaborator

overclokk commented May 26, 2017

Ciao @AndrGelmini
prima di tutto grazie per il feedback

Spero che l'esperienza di un neofito-(ma non cosi tanto) possa essere utile a rendere IS utilizzabile anche da persone non troppo esperte.

Non esiste un livello minimo per poter dare il proprio contributo :-) anche il tuo è prezioso.

Quindi andiamo avanti punto per punto:
La versione è 4.0.0-beta.3 (solo per non creare confusione)

Per quanto riguarda l'ugrade:
Ho seguito la guida del readme ma sembra che il tema figlio non faccia il callback al tema padre (o vice versa).

La versione 4 è una breaking change questo significa che per molte funzionalità non c'è retrocompatibilità quindi nel tema figlio bisogna rivedere tutto il codice.
Purtroppo è stato necessario per modernizzare il codice e prepararlo per le funzionalità che aggiungerò in futuro.

Github updater che ItalyStrap

Nelle prossime versioni non servirà più github updater, dava troppi problemi
Per il plugin ItalyStrap invece l'ho rimosso dalla repo di WordPress (è disponibile solo per effettuare gli aggiornamenti) perché devo cambiargli il nome, purtroppo avere tema e plugin con lo stesso nome crea molta confusione.

Installato il tema padre e il tema figlio (scaricati dal sito del progetto) e attivato il secondo. anche in questo caso non sembrava effettuare il callback sui file del tema padre.

Se intendi il css il funzionamento è molto semplice, style.css non va mai usato, custom.css è la fallback (se non ci sono altri file viene usato questo), puoi personalizzare i css chiamandoli con il nome del file template in cui verrà caricato, per esempio single,css verrà caricato solo negli articoli che utilizzano single.php.
La struttura deve essere come quella del tema genitore, tutti gli stili nella cartella css.

Ora ho il problema che le icone glyphicon non si vedono.

Anche i font devono essere presenti nel tema figlio se no non verranno caricati.

Lo scopo è quello che il tema genitore deve dare le funzionalità e il tema figlio si deve occupare della parte grafica.

La 4 stabile non supporterà più glyphicon, potrai usare fontawesome al suo posto.
Altra cosa che cambierà è il CSS utilizzato, di base verrà incluso Bootstrap4 ma sarà possibile anche usare qualsiasi altro framework CSS (saranno necessari alcuni passaggi) e anche vanilla CSS.

Verrà anche migliorato il supporto al customizer che ora ancora ad uno stato embrionale.

Grazie ancora per il feedback.

@overclokk overclokk added this to the Version 4.0.x milestone May 26, 2017
@AndreaGelmini
Copy link
Author

Grazie per la celere risposta.

Attendo la versione definitiva per fare delle prove.. ora credo che sia troppo presto.. :-D

E' successa una cosa strana...

Al momento dell'installazione da zero sembrava non fare fallback.. facendo delle prove togliendo il frammento di codice riportata come rispsota, il sito si vede in modo perfertto. La cosa mi sembra molto strana...

Comunque rimango in attesa della versione stabile.

@overclokk
Copy link
Collaborator

Non è mai troppo presto per fare prove, è proprio con la versione beta che si fanni i test :-D

Per la stabile ci vorrà ancora del tempo che non so quantificare.

La cosa più importante sarà il motore per il rendering dei vari file di template e la struttura dei file stessi, i file li trovi nella cartella template, dimmi se è una struttura comprensibile per te.
In pratica sono divisi per scopo, ogni file fa solo una cosa, questo per rendere più manutenibile il tema in caso di modifiche, meno file modifichi meglio è.

@AndreaGelmini
Copy link
Author

La cartella template la trovo molto ben strutturata. Quella di dividere il tema in parti la ho adottata nel mio piccolo con i template personalizzati che ho creato con la 3.5 per il sito che gestisco, per gestire vari CPT come landing page pagine preventivo ecc ecc.

Aspetto che trovo bucolico e poco comprensibile è per lo più la struttura, nel generale, della cartella italistrap. Credo sia dovuto al fatto che io non sono te' e sicuramente i file e le cartelle presenti sono li per il processo di programmazione e che la maggior parte di esse/i non saranno presenti nella cartella definitiva, al momento del rilascio della versione stabile. Ma al momento mi rende difficile capire la logica dei file in generale e dove andare a vedere come funziona una determinata funzione o processo.

Piccolo appunto/richiesta: Apprezzo il fatto che hai inserito dei bei post-meta nell'editor di pagina (testavo la personalizzazione della home). Però ti vorrei chiedere se fosse possibile mettere un "interruttore" in una pagina del plugin o del tema in modo da poter togliere tutte o alcune di quelle metabox. Ti chiedo questo perché con ACF ho creato delle opzioni che fanno pressoché le stesse cose. (questo è il mio caso. Ma in ottica più generale potrebbero esserci persone che le vogliono e altre che le vogliono e magari non scelgono is perché lo reputano troppo complicato e troppo laborioso).

Forse piccolo bug: Come ti ho detto impostato il menu su fixedtop il tag body non dà il giusto margin-top. In fase di test del composer ho notato che il box per il custom css non funziona e non salva le modifiche al css, per impostare il margin-top a 50px sono dovuto andare nella sezione apposita di italistrap plugin. (potevo farlo tramite file custom.css lo so... ma sto testando tutte le varie opzioni).

Mi togli una/due curiosità?

Ma tutti i do_action( 'italystrap_before_content' ); nei vari template come si usano?
Ma la twittercard non è più supportata?

PS: ho notato che l'area di supporto e forum sul sito non funzionano o meglio i bottoni riportano a /# se ti serve una mano conta pure su di me. a tal proposito averi un file per gestire la condivisione che ti vorrei far vedere magari potresti implementarlo.

@overclokk
Copy link
Collaborator

Ovviamente mi sono accorto di aver scritto il nome sbagliato per i templates, la cartella giusta è appunto templates con la s, quella senza s è la struttura vecchia che non sarà presente nella stabile.

Aspetto che trovo bucolico e poco comprensibile è per lo più la struttura, nel generale, della cartella italistrap.

La struttura delle cartelle non è ancora quella definitiva, in futuro sarà cosi:
src = tutte le classi
lib = i file per il bootstraping del tema
functions = tutte le helper function
templates i file di view
config cartella con i file di configurazione
cartelle con gli assets

Poi sto valutando le altre ma sarà comunque tutto documentato.

Però ti vorrei chiedere se fosse possibile mettere un "interruttore" in una pagina del plugin o del tema in modo da poter togliere tutte o alcune di quelle metabox.

Il tema sarà tutto configurabile tramite in file apposito, anche l'utilizzo delle metabox potrà essere gestito così.

Forse piccolo bug: Come ti ho detto impostato il menu su fixedtop il tag body non dà il giusto margin-top.

Il problema te lo da solo da loggato o anche da sloggato?

Ma tutti i do_action( 'italystrap_before_content' ); nei vari template come si usano?

Questi sono gli hook di WordPress, qui c'è la guida ufficiale
Gli hook sono molto utili se vuoi per esempio inserire componenti in particolari sezioni del sito senza dover modificare files, oppure modificare l'output delle funzioni/metodi dove è registrato l' apply_filter()

Ma la twittercard non è più supportata?

Questa e altre funzionalità che non sono parte della grafica le ho spostate nel plugin, alcune di esse (come gli OG e TC) sono in una cartella temporanea perché devo valutare in futuro se conviene o meno reinserirle.

PS: ho notato che l'area di supporto e forum sul sito non funzionano o meglio i bottoni riportano a /#

Si, per ora sono disattivati perché ancora in sviluppo come anche lo shop, entro un mesetto dovrebbero essere attivi (tempo permettendo), invierò una newsletter quando pronti.

a tal proposito averi un file per gestire la condivisione che ti vorrei far vedere magari potresti implementarlo.

Spiegami meglio di cosa si tratta.

@overclokk
Copy link
Collaborator

Ciao @AndrGelmini
ho appena caricato una nuova release 4.0.0-beta.4, in particolare ho lavorato sulla struttura dei files nella cartella templates, se la provi e mi dici se per te può essere comprensibile e di facile utilizzo.

@ghost
Copy link

ghost commented Jul 8, 2017

Buonasera,
ho provato a installare la beta 4, installando il tema Child non importa nessun CSS è una cosa normale? Va tutto rifatto a mano partendo da bootstrap o si può importare quelli del tema genitore per poi essere modificati?

Grazie

@overclokk
Copy link
Collaborator

Ciao @lupett
si, è una cosa normale, lo scopo del child è proprio quello di occuparsi della parte grafica del tema e il compito del tema genotore è quello di fornire le API per fare le cose.

Come ho spiego anche sopra la struttura è molto semplice per js e css, il file custom è il file di default in caso nessun altro sia presente, altrimenti puoi creare file specifici per template, per esempio single.css|js sarà il file caricato con il template single.php e così via.

Non sei obbligato ad usare Bootstrap, puoi caricare anche il tuo personalizzato.

Mi sa che inserirò nella prossima versione un alert dove indico questo, effetivamente è poco chiaro.

@ghost
Copy link

ghost commented Jul 9, 2017

Grazie @overclokk
Rileggendo i post precedenti adesso mi è più chiaro.

@AndreaGelmini
Copy link
Author

Ciao @overclokk scusa il ritardo.. Ma sono stato impegnato tra 730 e impegni fiscali... Ho provato ad aggiornare il tema da beta-3 a beta-4 ma mi restituisce questo problema.

Fatal error: Cannot redeclare italystrap_set_default_constant() (previously declared in .../wp-content/plugins/advanced-control-manager/functions/default-constants.php:14) in .../wp-content/plugins/italystrap/functions/default-constants.php on line 83

[EDIT...]
Credo di essere un Col...ne con la C maiuscola.. advanced-control-manager è il nuovo nome di ItalyStrap Plugin? Giusto?

[Prima analisi]
Da una prima analisi non super approfondita mi sembra che alcuni file siano doppi.. (fattore che ci stà visto che siamo ancora in fase beta). Apprezzo che hai messo nella cartella template la struttura ad ad albero nel file .md credo che ti sia sfuggita la cartella templates/posts/format A livello di compressione della struttura non credo che sia troppi problemi...

Se posso:
Rinnovo i complimenti per la struttura della cartella template.. che mi piace molto. Aspetto di testare un CPT per osservare le criticità..

Se posso fare un piccolo appunto.. credo che la struttura dei file che gestiscono le varie funzioni del tema sia un pò troppo frammentata cio mi porta un pò di confusione.

@overclokk
Copy link
Collaborator

@AndrGelmini colpa mia, dovevo caricare l'aggiornamento per il plugin vecchio con le indicazioni su come migrare e non l'ho ancora fatto, ad ogni modo si, ora il plugin ha un nuovo nome, è stato necessario per evitare confusione fra tema e plugin.

structure.md non è completo ma già c'è un'idea di com'è la struttura dei file template (che in pratica sarebbero le view), questa divisione è pensata per rispettare la S nel principio S.O.L.I.D. e sto lavorando per rispettarle tutte dove possibile, in questo modo se devi modificare un elemento ora lo fai solo in un singolo file, col sistema standard di WordPress invece bisognava aprire tutti i file template e fare la modifica, per i child theme il lavoro così è ancora più semplice.

Per i CPT (e per i file normali) ora si usa la funzione ItalyStrap\italystrap(); sto lavorando per potergli passare dei parametri di configurazione, in futuro si potrà usare anche direttamente l'istanza che genera tutto il template pagina.

Se posso fare un piccolo appunto.. credo che la struttura dei file che gestiscono le varie funzioni del tema sia un pò troppo frammentata cio mi porta un pò di confusione.

Parli dei file template o funzioni e classi PHP?

Non ti preoccupare per le tue tempistiche, grazie del tuo tempo.

@ghost
Copy link

ghost commented Aug 6, 2017

@overclokk per quando sarà disponibile una release stabile? Cambierai ancora tanto la struttura o rimarrà abbastanza simile? Mi piacerebbe usare il tema per un sito semplice che dovrò fare a breve ma non vorrei doverlo rivedere troppo nel prossimo futuro :)

Grazie!

@overclokk
Copy link
Collaborator

Ciao @lupett per la versione stabile non ti so dare una data perché ogni implementazione di funzionalità ha bisogno di un periodo di test più o meno lungo ed essendo l'unico sviluppatore i tempi sono più lunghi che corti :-)

In questa issue #12 puoi vedere quali sono le cose su cui sto lavorando prima di avere la versione stabile, considera che come struttura più o meno ci siamo ma devo ancora lavorarci molto.

Ad ogni modo se intanto lo vuoi iniziare ad usare puoi sempre segnalarmi le cose che non vanno o che danno errore, ricevere feedback da più persone è sempre positivo :-)

Ciao

@ghost
Copy link

ghost commented Aug 9, 2017

Ok, grazie, ti aggiorno se trovo qualcosa che non va :)

@AndreaGelmini
Copy link
Author

Ciao Enea.

Dopo qualche tempo di stop mi sono rimesso a lavorare e testare questo top tema, ho provato a compilare il tutto con npm, grunt, bower, composer e compagnia bella e devo dire che la cosa mi ha creato un po' di problemi soprattutto con un componente di gruntjs (l'utimo nella lista di grunt.js).
Risolto smanettando un pò, mi sono messo a lavoro a tesare la beta4.

(Quasi sicuramente le problematiche sono dovute a server, sto testando il tutto su host gratuito)

  • A tal proposito confermo che il CSS presonalizzato aggiunto tramite customize viene aggiunto ma non elaborato ( da sorgente la vedo in una variabile ma sembra che non venga elaborato).

  • Segnalo che il footer-menu sembra registrato ma non inserito nel template.
    personalmente ho risolto cosi:
    `/**

  • Add the footer menu...

*/

function footer_menu() {
require( STYLESHEETPATH . '/templates/footers/navbar.php' );
}
add_action( 'italystrap_footer', 'footer_menu', 20 );`

Devo ammettere che adoro poter modificare il tema con hook di questo genere.

Ho provato ad inserire una serie di widget aree (per il momento una sola) analizzando in un primo momento ho provato a copiare il file config/sidebars.php (tema padre) e a metterlo nella cartella config/ del tema figlio.. si dovrebbe sostituire a quello del padre ma la cosa non è avvenuta.

risolto cosi (ma credo non sia una soluzione ottimale):

`//ADD SIDEBAR.

function sidebar() {
$sidebars = (array) apply_filters( 'italystrap_sidebars_registered', require( STYLESHEETPATH . '/lib/config/sidebars.php' ) );
foreach ($sidebars as $key => $value):
register_sidebar( $value );
endforeach;
}
add_action( 'widgets_init', 'sidebar', 20 );`

Analizzando il sorgente di italystrap.com ho visto che il tema installato in home carica il file front-page.css mentre il mio anche se mi trovo in home carica custom.css

Poi vorrei cercare di capire come funziona la gestione dei template /struttura di codice (mi rendo conto che è possibile modificare la qualunque con un hook) vorrei togliere i due sotto menu dalla info e social per intenderci. e non riesco a capire se sono aggiunti con un hook o sono codificati nel templare di pagina.
Cioè non riesco a capire dove è il codice di tali file?

Edit (in tempo reale) i menù sono aggiunti con questo hook italystrap_before_header nel file src/Controllers/Headers/

Poi se non è presente (non lo ho visto) ti chiedo cortesemente se aggiungi un filtro per la tag schema
ne ho trovati solo due o tre tra chi scegliere...

Detto tutto questo, la domanda se volessi creare un CPT con un template personalizzato come devo fare non capisco dove devono andare i file e che funzioni interpellare.

@overclokk
Copy link
Collaborator

Ciao Andrea e grazie per il tuo feedback,
la configurazione di composer ed npm può essere un po problematica specie se usi Windows, però poi funziona tutto :-)

A tal proposito confermo che il CSS presonalizzato aggiunto tramite customize viene aggiunto ma non elaborato ( da sorgente la vedo in una variabile ma sembra che non venga elaborato).

Questo è un bug, ora apro una issue a riguardo

Segnalo che il footer-menu sembra registrato ma non inserito nel template.
personalmente ho risolto cosi:

Non è presente come file template perché lo scopo era quello di usarlo come widget e non come template parziale, è comunque ancora in sviluppo avanzato, devo ancora decidere come sistemarlo.

ho provato a copiare il file config/sidebars.php (tema padre) e a metterlo nella cartella config/ del tema figlio.. si dovrebbe sostituire a quello del padre ma la cosa non è avvenuta.

Dal tema genitore non devi copiare nulla se non solo imitare la struttura dei file quando sarà definitiva, gli unici file che vengono sovrascritti sono i file di template (come è giusto che sia), i file del core del tema non possono essere sovrascritti in quel modo per evitare bug in caso di aggiornamento del tema stesso, se io per esempio aggiungo roba e tu non aggiorni i file rischi di avere errori PHP, quindi la regola principale è che il core si modifica solo tramite gli hook se presenti.

Sto anche lavorando sulla struttura per il file config caricato nel child, che non è ancora disponibile, che consentirà di creare per ogni tema una configurazione personalizzata (che poi sarà possibile personalizzare ulteriormente dal customizer).

Se hai bisogno di aggiungere sidebar manualmente lo puoi fare sfruttando l'hook 'italystrap_sidebars_registered' usando un add_filters();

Analizzando il sorgente di italystrap.com ho visto che il tema installato in home carica il file front-page.css mentre il mio anche se mi trovo in home carica custom.css

I file css seguono la logica dei file template principali, se nel tema c'è il template front-page.php allora verrà cercato il file front-page.css, nel caso non sia presente nella cartella allora verrà caricato il file custom.css (questo è il file che viene caricato come fallback).

Poi vorrei cercare di capire come funziona la gestione dei template /struttura di codice

I template nella root seguono lo standard dei template WordPress (single, page, archive ecc), ogni componente HTML della pagina invece è inserito in file parziali, questi parziali sono quasi tutti dentro la cartella /templates (quasi tutti perché ci sono ancora parziali che devo aggiungere come i commenti e altro).

I parziali sono inseriti nella pagina tramite i controller che si trovano nella cartella /controllers che si occupano di gestire le condizioni, popolare eventuali variabili e stampare la vista nell'hook corretto.

Attenzione però che i controller non sono ancora pronti, ho intenzione di fare un refactoring alla logica (non alla struttura) per semplificare il processo di elaborazione della vista (o parziale).

Anche per la rimozione o il cambio di posizione di ogni vista ci sarà un metodo semplificato.

vorrei togliere i due sotto menu dalla info e social

Se non aggiungi i menù non vengono caricati

Poi se non è presente (non lo ho visto) ti chiedo cortesemente se aggiungi un filtro per la tag schema
ne ho trovati solo due o tre tra chi scegliere...

Per Schema.org ci sarà un file di configurazione apposito in futuro.

se volessi creare un CPT con un template personalizzato come devo fare

Di base i CPT prendono i file standard quindi potenzialmente non devi fare nulla, funziona già tutto di default, nel caso tu debba personalizzare ulteriormente un file template per il CPT basta che segui le indicazioni di WordPress:

archive-{CPT}.php
single-{CPT}.php

Puoi copiare un file già presente e cambiargli nome.

Fra le tante cose da fare ho già in programma anche un tutorial per gestire i CPT con alcune tecniche che ho sperimentato ultimamente.

Ancora grazie per il tuo tempo.

@AndreaGelmini
Copy link
Author

AndreaGelmini commented Nov 13, 2017

Grazie ancora Enea.
Grazie per la celere ed esaustiva risposta...

Se hai bisogno di aggiungere sidebar manualmente lo puoi fare sfruttando l'hook 'italystrap_sidebars_registered' usando un add_filters();

Si infatti è più comodo, effettivamente, ho risolto in questo modo... nel file /wp-content/themes/tema-child/lib/bootstrap.php ho aggiunto questo

//ADD SIDEBAR.

function test_sidebar($sidebars) {
    //registro l'area della zona top
    $sidebars['top-1'] = array(
							'name'				=> __( 'Top', 'test' ),
							'id'				=> 'top-1',
							'description'		=> __( 'Top widget area.', 'test' ),
							'before_widget'		=> '<div ' . ItalyStrap\Core\get_attr( 'top-1', array( 'id' => '%1$s', 'class' => 'widget %2$s' ) ) . '>',
							'after_widget' 		=> '</div>',
							'before_title'		=> '<h3 class="widget-title">',
							'after_title'		=> '</h3>'
    					);
    $sidebars['bottom-1'] = array(
							'name'				=> __( 'Bottom', 'test' ),
							'id'				=> 'bottom-1',
							'description'		=> __( 'Contante Bottom widget area.', 'test' ),
							'before_widget'		=> '<div ' . ItalyStrap\Core\get_attr( 'bottom-1', array( 'id' => '%1$s', 'class' => 'widget %2$s' ) ) . '>',
							'after_widget' 		=> '</div>',
							'before_title'		=> '<h3 class="widget-title">',
							'after_title'		=> '</h3>'
    					);
    
    return $sidebars;
}
add_filter( 'italystrap_sidebars_registered', 'test_sidebar', 20);

In questo modo pero ho aggiunto le zone alla fine dell'array in admin/widget sono mostrati alla fine. per ordinarli e aggiungere queste due parti dopo la sidebar-1 dovrei spezzare e lavorare sull'array...
E' giusto perché mi piace che le zone widget seguano la suddivisione del sito...

Piccolo dubbio (più che altro legato alle prestazioni).. per aggiungere la sidebar top e bottom credi che sia meglio creare i file sidebar-top.php e sidebar-bottom.php e poi hookarli o gestire l'output tramite funzione e hookare quella nella giusta posizione? E se il modo migliore per farlo fosse il primo dovrei poi creare in tema-child/src (o altra posizione) un file come italystrap/src/Custom/Sidebars/Sidebars.php

I file css seguono la logica dei file template principali, se nel tema c'è il template front-page.php allora verrà cercato il file front-page.css, nel caso non sia presente nella cartella allora verrà caricato il file custom.css (questo è il file che viene caricato come fallback).

Il problema è che il file front-page.php lo copiato dal genitore e l'ho inserito nella cartella figlio. (ma da quanto detto non devo copiare nulla dal genitore.. giusto?) a questo punto credo che il problema che sto per segnalare credo sia dovuto a questo motivo.

Perché sto cercando di rimuovere il menu "secondario" info e social solo dalla pagina principale ma ho notato che se nel file lib/bootstrap.php inserisco questo codice, qui sotto, senza associarlo ad un hook l'echo funziona ma le funzioni mi danno null, mentre se lo inserisco tramite hook la funzione is_front_page() mi da 1 la home mi da null .

    echo 'home ' .is_home();
            echo '<br>';
    echo 'front ' .is_front_page();

Ho effettuato un altro test questa volta non usando le condizioni ho provato a rimuovere l'azione Navbar_Top in tutto il sito come segnalato nella guida su italystrap.com ho inserito sempre in bootstrap.php questo codice ma non succedere nulla

remove_action( 'italystrap_before_header', 'ItalyStrap\Controllers\Headers\Navbar_Top' );

L'ho sò, che come mi hai detto, se non carico elementi nei menù info e social non vengono visualizzati ma credo che possano essere utili magari da qualche altra parte del sito e volevo solo rimuoverli dalla home.

Poi sempre in lib/bootstrap.php ci sono delle righe commentate, giusto per scrupolo le ho scommentate tranne quella riferita alla cartella vendor, bene tutte e due mi davano errore in quanto a detta del server mancava uno / dopo STYLESHEETPATH. Ora non so' se è un errore dovuto al server o riconducibile alla versione di php (ricordo che è la 5.6). Lo segnalo giusto per segnalarlo.

Per il momento è tutto, ma sto continuando a smanettarci...

@overclokk
Copy link
Collaborator

Grazie a te :-)

In questo modo pero ho aggiunto le zone alla fine dell'array in admin/widget sono mostrati alla fine. per ordinarli e aggiungere queste due parti dopo la sidebar-1 dovrei spezzare e lavorare sull'array...
E' giusto perché mi piace che le zone widget seguano la suddivisione del sito...

Se vuoi inserire uno o più elementi puoi usare la funzione array_unshift() http://php.net/manual/it/function.array-unshift.php
Se vuoi inserire un elemento in una certa posizione dell'array qui c'è come fare https://stackoverflow.com/questions/3353745/how-to-insert-element-into-arrays-at-specific-position anche se il codice è un po' sporco dovrebbe fare il suo dovere.

Però non ho capito perché vuoi aggiungere una sidebar sopra e sotto la sidebar, non riesci con solo i widget?

(Ora mi segno di migliorare il generatore di sidebar in modo da dichiarare meno elementi nell'array, tanto a meno di non dover fare strutture particolari molti elementi sono ripetuti e questo no va bene.)

Piccolo dubbio (più che altro legato alle prestazioni)

Per le prestazioni ci deve essere un compromesso tra manutenibilità e velocità e le micro-ottimizzazioni non sempre consentono una buona manutenibilità del software, ad ogni modo qui parliamo di micro-secondi.

per aggiungere la sidebar top e bottom credi che sia meglio creare i file sidebar-top.php e sidebar-bottom.php e poi hookarli o gestire l'output tramite funzione e hookare quella nella giusta posizione?

Si, separa sempre la vista dalla logica e mantieni maggiore specificità possibile per ogni singolo file, il nome del file potrebbe essere l'ID della sidebar (solo per avere coerenza).

I file vista (o template part) vanno inseriti nella cartella template, le classi nella cartella src.

Non è ancora pronto al 100% il sistema per gestire le viste quindi al momento è ok usare una funzione.

Le funzioni le puoi raggruppare per scopo (tutte quelle che gestiscono le viste insieme in un file).

E se il modo migliore per farlo fosse il primo dovrei poi creare in tema-child/src (o altra posizione) un file come italystrap/src/Custom/Sidebars/Sidebars.php

No, questo file è solo per generare le sidebar e non per stamparle.

Il problema è che il file front-page.php lo copiato dal genitore e l'ho inserito nella cartella figlio. (ma da quanto detto non devo copiare nulla dal genitore.. giusto?) a questo punto credo che il problema che sto per segnalare credo sia dovuto a questo motivo.

Se non hai bisogno di applicare modifiche particolari (per esempio filtrare un elemento solo in quella tipologia di pagina) allora non copiare i file dal genitore, meno roba hai nel child meglio è.

Perché sto cercando di rimuovere il menu "secondario" info e social solo dalla pagina principale ma ho notato che se nel file lib/bootstrap.php inserisco questo codice, qui sotto, senza associarlo ad un hook l'echo funziona ma le funzioni mi danno null, mentre se lo inserisco tramite hook la funzione is_front_page() mi da 1 la home mi da null .

È normale, ti danno null perché le stai chiamando troppo presto e WP non ha ancora settato la globale WP_Query quindi usare un hook che sia chiamato dopo l'inizializzazione di WP_Query va bene.

ho inserito sempre in bootstrap.php questo codice ma non succedere nulla

Per poter rimuovere un filtro o azione registrato tramite un oggetto devi avere l'istanza di quel'oggetto altrimenti non puoi rimuovere nulla, quella come dicevo sora è una parte che al momento non è pronta.
Momentaneamente potresti usare remove_all_actions( 'italystrap_before_header', 10 ); che rimuove tutte le callback appese a quell'hook.

L'ho sò, che come mi hai detto, se non carico elementi nei menù info e social non vengono visualizzati ma credo che possano essere utili magari da qualche altra parte del sito e volevo solo rimuoverli dalla home.

Se hai bisogno di inserire menù di quel tipo in altre posizioni del tema non hai bisogno di quei due.

Poi sempre in lib/bootstrap.php ci sono delle righe commentate, giusto per scrupolo le ho scommentate

Generalmente tutto ciò che è commentato non andrebbe decommentato proprio per evitare errori di quel tipo.

@AndreaGelmini
Copy link
Author

Però non ho capito perché vuoi aggiungere una sidebar sopra e sotto la sidebar, non riesci con solo i widget?

Mi sono spiegato male.. volevo inserire un area-widget sopra il contente e uno sotto il content. tramite hook ho risolto in questo modo:

 */
add_action( 'italystrap_before_main', function() {
	require( STYLESHEETPATH . '/templates/misc/widget-area-top.php' );
}, 10);
/* Add bottom widget area
 */
add_action( 'italystrap_after_main', function() {
	require( STYLESHEETPATH . '/templates/misc/widget-area-bottom.php' );
}, 10);

Non è ancora pronto al 100% il sistema per gestire le viste quindi al momento è ok usare una funzione.
Le funzioni le puoi raggruppare per scopo (tutte quelle che gestiscono le viste insieme in un file).

Si infatti credo che farò cosi.. anche perché sto litigando con la cartella src. Non credo di aver capito molto bene il procedimento... ma credo che sia dovuto al fatto che il sistema di visualizzazione, come hai detto tu non è ancora al 100%

Dunque ho provato, per il momento, a fare due cose:

  1. Registrazione di aree widget e loro inserimento, in un primo momento seguendo la struttura del tema genitore. Per poi optare nel chiare (come descritto sopra) il file tramite hook nel file bootstrap a causa di un errore.

In sintesi ho creato in tema figlio/templates/misc/ il file widget-area-top.php con dentro le specifiche grafiche del caso. Poi come mi hai detto tu mi sono concentrato sulla logica della visualizzazione e ho creato la cartella tema figlio/src/Controllers/Sidebars all'interno ci ho inserito questo file widget-area-top.php

/**
 * widget-area-top Controller API
 *
 * [Long Description.]
 *
 * @link www.italystrap.com
 * @since 4.0.0
 *
 * @package ItalyStrap
 */
namespace ItalyStrap\Controllers\Sidebars;
if ( ! defined( 'ABSPATH' ) or ! ABSPATH ) {
	die();
}
use ItalyStrap\Controllers\Controller;
use ItalyStrap\Event\Subscriber_Interface;
/**
 * Class description
 */
class Widget_Area_Top extends Controller implements Subscriber_Interface {
	/**
	 * Returns an array of hooks that this subscriber wants to register with
	 * the WordPress plugin API.
	 *
	 * @hooked 'italystrap_footer' - 10
	 *
	 * @return array
	 */
	public static function get_subscribed_events() {
		return array(
			// 'hook_name'							=> 'method_name',
			'italystrap_before_main'	=> array(
				'function_to_add'	=> 'render',
				'priority'			=> 10,
			),
		);
	}
	/**
	 * File name for the view
	 *
	 * @var string
	 */
	protected $file_name = 'misc/widget-area-top.php';
	/**
	 * Render the output of the controller.
	 */
	public function render() {
			
		parent::render();
	}
} 

Come mi immaginavo il file non veniva caricato e allora ho provato a richiamarlo in lib/boostrap.php ma mi ha generato un errore (credo dovuto ai name space).. per comodità ho gestito tutto in lib/boostrap.php tramite hook..

  1. il secondo tentativo lo sto facendo con un custom template.. ho creato tre file.
    tema figlio/header-preventivi.php
    tema figlio/page-preventivi.php
    tema figlio/footer-preventivi.php

Visto che voglio fare l'esoso ho modificato anche tutti i nomi dei do_action aggiungendo "_preventivi" alla fine ogni gancio (ovviamente consapevole che il risultato finale sarebbe stata una pagina bianca).
fin qui tutto bene, funziona tutto come nella versione 3.5 (a parte i ganci). In linea di massima basterebbero questi tre file e generare un custom template con i fiocchi...

Ma con la stessa logica delle aree-widget mi sono messo a smanettare con la cartella templates e con la cartella scr.
in tema figlio/page-preventivi.php ho richiamato come indicato il file templates/preventvi.php modificato opportunamente per richiamare header-preventivi e footer-preventivi
in tema figlio/templates/posts ho inserito un file chiamato loop_preventivi.php con lo stesso contenuto del file loop.php
in tema figlio/src/Controllers/Posts ho creato un file chiamato Preventivi.php che ne dovrebbe gestire la logica con questo codice:

/**
 * Loop Controller API
 *
 * This class renders the Loop output on the registered position.
 *
 * @link www.italystrap.com
 * @since 4.0.0
 *
 * @package ItalyStrap
 */

namespace ItalyStrap\Controllers\Posts;

use ItalyStrap\Controllers\Controller;
use ItalyStrap\Event\Subscriber_Interface;

if ( ! defined( 'ABSPATH' ) or ! ABSPATH ) {
	die();
}

/**
 * Class description
 */
class Preventivi extends Controller implements Subscriber_Interface  {

	/**
	 * Returns an array of hooks that this subscriber wants to register with
	 * the WordPress plugin API.
	 *
	 * @hooked 'italystrap_loop' - 10
	 *
	 * @return array
	 */
	public static function get_subscribed_events() {

		return array(
			// 'hook_name'							=> 'method_name',
			'italystrap_loop_preventivi'	=> 'render',
		);
	}

	/**
	 * File name for the view
	 *
	 * @var string
	 */
	protected $file_name = 'posts/loop_preventivi.php';
}

Anche in questo caso il file non sembra caricato in alcun modo come accadeva in precedenza.

A tal proposito mi sentirei di dire... non è troppo? cioè nel senso, immagino che non tutti debbano creare un custom template per pagine, blog, landing page, preventivi e altro ancora. magari con menu diversi o togliendoli proprio e/o modificando in toto il modello magari aggiungendo custom field.. Però forse la vedo io troppo complicata abituato come sono con la 3.5 che tutti questi hook non li aveva.

@overclokk
Copy link
Collaborator

overclokk commented Nov 15, 2017

Parto prima dall'ultima parte del tuo commento e poi continuo dall'inizio:

A tal proposito mi sentirei di dire... non è troppo?
Però forse la vedo io troppo complicata abituato come sono con la 3.5 che tutti questi hook non li aveva.

Inizialmente può sembrare complesso, questo è vero, ma lo scopo è quello di ottimizzare la manutenzione poi.

Considera anche che siamo ancora alla beta e alcune parti sono in fase di test, i controller sono appunto un test per valutare quale sia la migliore strategia per avere un framework robusto a manutenibile.

I controller stessi cambieranno nelle prossime release proprio per avere un sistema che sia anche il più semplice possibile.

Ora ricomincio a ripsondere partendo dall'inizio:

Mi sono spiegato male.. volevo inserire un area-widget sopra il contente e uno sotto il content. tramite hook

Le aree widget è possibile inserirle dinamicamente senza scrivere codice, vai in Aspetto > Widget Areas e crei una nuova area widget che puoi posizionare dove vuoi usando il menù a tendina che trovi nella pagina di configurazione, in futuro è prevista anche la possibilità di scegliere il template personalizzato.

Se invece vuoi inserire un tuo template allora puoi farlo usando tranquillamente una funzione come hai fatto inizialmente senza usare i controller, in un child theme va benissimo anche quello, quando saranno definitivi scriverò anche la documentazione per i controller, scriverla ora che non sono pronti è presto.

Per i CPT però quello che mi serve sapere è cosa vuoi fare esattamente perché non ho ben capito quale risultato ti aspetti, se mi spieghi meglio riesco a dirti come farei io.

PS: Eventuali template per le widget area meglio metterli nella cartella sidebars più che altro per mantenere coerenza con WP (se non c'è creala pure nel tuo child perché sarà disponibile in futuro).

@AndreaGelmini
Copy link
Author

Ciao Enea scusa il ritardo nella risposta..

I controller stessi cambieranno nelle prossime release proprio per avere un sistema che sia anche il più semplice possibile.

Non vedo l'ora che ci sia una versione stabile.. per il momento mi limito a fare test di personalizzazione attraverso i ganci e devo dire che mi trovo bene (anche se sarà sicuramente meglio quando saranno documentati)...

Le aree widget è possibile inserirle dinamicamente senza scrivere codice, vai in Aspetto > Widget Areas e crei una nuova area widget che puoi posizionare dove vuoi usando il menù a tendina che trovi nella pagina di configurazione, in futuro è prevista anche la possibilità di scegliere il template personalizzato.

Non capisco.. Mi spieghi che cosa intendi tu per area widget perché io intendo il contenitore dei widget (sidebar) al momento dell'installazione hai le barra laterale e i 3 footer.. io volevo aggiungere un contenitore di widget agganciato al before e after content.

Per i CPT però quello che mi serve sapere è cosa vuoi fare esattamente perché non ho ben capito quale risultato ti aspetti, se mi spieghi meglio riesco a dirti come farei io.

Dunque su un progetto sul quale ho installato la 3.5 per la gestione di alcuni contenuti quali:

  • landing_page;
  • pagine preventivo;
  • pagine prodotto;
  • profilo utente pubblico e privato
  • ecc ecc

ho usato sia dei CPT che custom template.
Per fare un esempio abbastanza banale.. con l'intento di inserire un banner nello sfondo della sola area blog del sito, ho creato un custom template per la pagina blog e per il file single.php che prevede dei margini maggiori, rispetto a quello delle pagine normali del sito.

Un altro esempio potrebbe essere quello delle langin page (un CPT) dove il contenuto di tutta pagina è generato da una serie di castom filed code per header, footer, content, css e js.

Proprio in questi giorni sto impazzendo dietro a un'altra implementazione che sto cercando di ricreare sulla versione 4. Ho creato una (in verità di più, ma semplifichiamo) tassonomia personalizzata associata agli utenti del sito. Tutto abbastanza semplice, se non fosse che in qualunque modo io provi a visualizzare il loop della tassonomia mi viene fuori che il contenuto non esiste.
Mi spiego meglio se inserisco il file taxonomy-{$tassonomia}.php con il mio loop personalizzato il contenuto viene visualizzato, però perdendo lo stile del sito.

Diciamo che tutte le miei paturnie possono essere bypassate sovrascrivendo i file o aggiungendone dei nuovi con rispettivi loop.. quello che mi spiace è che cosi si andrebbe a perdere la logica/struttura ma anche il lavoro che ci stai mettendo per la implementarla.. Quindi mi chiedevo quale è il modo migliore per modificare il loop o aggiungerne degli altri per i cpt e i custom template.

@overclokk
Copy link
Collaborator

Ciao Andrea, ho preso qualche giorno di pausa :-)

Non capisco.. Mi spieghi che cosa intendi tu per area widget perché io intendo il contenitore dei widget (sidebar) al momento dell'installazione hai le barra laterale e i 3 footer.. io volevo aggiungere un contenitore di widget agganciato al before e after content.

Se hai attivato la versione beta nelle impostazioni di ACM sotto la voce Widget c'è da mettere la spunta su "Widget Areas" che to attiva una nuova voce sotto Aspetto > Widget Areas, qui puoi creare tutte le widget area che vuoi e posizionarle dove vuoi e personalizzarne il contenuto.

Le sidebar che vedi sono li per retrocompatibilità.

Proprio in questi giorni sto impazzendo dietro a un'altra implementazione che sto cercando di ricreare sulla versione 4. Ho creato una (in verità di più, ma semplifichiamo) tassonomia personalizzata associata agli utenti del sito. Tutto abbastanza semplice, se non fosse che in qualunque modo io provi a visualizzare il loop della tassonomia mi viene fuori che il contenuto non esiste.

In questo specifico caso devo vedere il codice e forse è meglio discuterne in un altro ticket.

Diciamo che tutte le miei paturnie possono essere bypassate sovrascrivendo i file o aggiungendone dei nuovi con rispettivi loop.. quello che mi spiace è che cosi si andrebbe a perdere la logica/struttura ma anche il lavoro che ci stai mettendo per la implementarla.. Quindi mi chiedevo quale è il modo migliore per modificare il loop o aggiungerne degli altri per i cpt e i custom template.

Guarda, il bello di avere retrocompatibilità è quello che tu puoi anche usare il sistema standard di WordPress, ovvero, potenzialmente puoi anche usare i file template dei temi 20xx che funzionano lo stesso, non mi offendo se li usi :-), il problema è solo per una eventuale manutenzione, in un tema WP se devi modificare l'H1 della headline lo devi fare per n° file template, nel mio lo fai solo una volta ma questo non ti vieta di usare lo standard WP se ne hai bisogno, anzi, ci possono essere casi in cui è più conveniente.

In futuro ci sarà anche Gutenberg che semplificherà certi processi e ovviamente sto lavorando anche per renderlo pronto per la 5.0 di WP.

@AndreaGelmini
Copy link
Author

Se hai attivato la versione beta nelle impostazioni di ACM sotto la voce Widget c'è da mettere la spunta su "Widget Areas" che to attiva una nuova voce sotto Aspetto > Widget Areas, [...]

Ora tutto chiaro. Ho provato a crearne una chiamata Test Home PostHeader. Però non viene visualizzata nel pannello di controllo nella sezione aspetto->widget. Ma credo che li debba inserire io con un l'hook giusto? nel caso che cosa uso lo slug? oh mi sto perdendo in qualche altro bicchiere d'acqua.

che ps. credo sia la stessa ragione per la quale non vedo gli shortcode generati con ACM (ma ora ti apro un ticket anche su quello) perché sto cercando di spostare alcune implementazioni che avevo fatto direttamente sul tema child in un plugin e per farlo ho preso spunto da ACM su come gestire le varie classi ma mi sono accorto che, appunto ACM dovrebbe registrare su 'after_setup_theme' degli shortcode con delle ui ma non vedo nulla e quando li provo a inserire in post non funzionano. ma ne parliamo dall'altra parte.

In questo specifico caso devo vedere il codice e forse è meglio discuterne in un altro ticket.

Molto volentieri. Per crearla mi sono basato su questo articolo http://justintadlock.com/archives/2011/10/20/custom-user-taxonomies-in-wordpress con qualche modifica fatta con CMB2
Comunque a giorni la apro..

[...] in un tema WP se devi modificare l'H1 della headline lo devi fare per n° file template, nel mio lo fai solo una volta ma questo non ti vieta di usare lo standard WP se ne hai bisogno, anzi, ci possono essere casi in cui è più conveniente.

Come al solito ci sbatto la testa un po' e poi capisco che bisogna solo rimuovere l'azione dall'hook e poi rimettere il tutto e poi rimettere il tutto. Nel caso di CPT almeno. nel caso delle user Tax non essendo un post o una pagina o una categoria "normale" wp non la gestisce proprio nel migliore dei modi e quindi bisogna riscrivere il tutto...

@AndreaGelmini
Copy link
Author

AndreaGelmini commented Feb 23, 2018

Ciao Enea come va'?

Credo di aver trovato un errore di programazione che riguarda i supporti ai post pagine ecc ecc
Smanettando un pò con il widget carosello. mi sono accorto che l'immagine dei post pagine ecc non era supportata, dando un occhio al codice ho notato che la funzione setup() aveva un possibile errore di logica..

Ho risolto passando da

<?php 
	/**
	 * Add theme supports
	 *
	 * @link http://codex.wordpress.org/Function_Reference/add_theme_support
	 *
	 * @param  array $theme_supports An array with theme support list.
	 */
	public function add_theme_supports( array $theme_supports = array() ) {
		foreach ( $theme_supports as $feature => $parameters ) {
			if ( is_null( $parameters ) ) {
				add_theme_support( $feature );
			} else {
				add_theme_support( $feature, $parameters );
			}
		}
	}
?>

a questo.

<?php
	/**
	 * Add theme supports
	 *
	 * @link http://codex.wordpress.org/Function_Reference/add_theme_support
	 *
	 * @param  array $theme_supports An array with theme support list.
	 */
	public function add_theme_supports( array $theme_supports = array() ) {
		foreach ( $theme_supports as $feature => $parameters ) {
			if ( !is_array( $parameters ) ) {
				add_theme_support( $parameters );
			} else {
				add_theme_support( $feature, $parameters );
			}
		}
	}
?>

@overclokk
Copy link
Collaborator

Ciao @AndrGelmini per tutti gli eventuali bug meglio aprire una issue dedicata dove si spiega come poso replicarla io in ambiente di test se no si va off-topic, grazie :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants