Panels e path delle pagine correlate ai nodi

12 contenuti / 0 new
Ultimo contenuto
Panels e path delle pagine correlate ai nodi

Salve, ho un problema che vorrei risolvere al piu' presto per evitare contenuti duplicati.
Io ho un node che si chiama scheda/id/titolo
id e titolo sono delle variabili, mentre scheda è statico. Ora, il mi trovo ad avere creato delle sotto pagine alla scheda
scheda/id/titolo/video
scheda/id/titolo/news
scheda/id/titolo/altro

negli argomenti del modulo panels ho settato %id come nid e %titolo come 'stringa' e %subpage come 'stringa'

il problema nasce dal fatto che se io vado alla pagina scheda/5/questo-titolo/video oppure scheda/5/questo-titolo-doppio/video oppure scheda/5/questo-titolo-triplo/video

qualunque sia il path del titolo mi restituisce il medesimo contenuto, Questo eprchè giustamente drupal identifica il nid e non la stringa. Allora mi chiedevo se ci fosse un modo per fare in modo che il path corrispondesse esattamente a quello del nodo in modo da avere in modo univoco scheda/5/questo-titolo/video.

grazie a chi mi aiuterà.

scusa ma non ho capito una cosa?
Se hai messo come riferimento il nid, è normale che punti sempre allo stesso contenuto (nodo) perché è proprio quello.
Come sono strutturati i tuoi nodi? Hai forse deiversi contenuti, video, news e altro nello stesso nodo?

---
"Solo gli imbecilli non hanno dubbi"
"Ne sei sicuro?"
"Non ho alcun dubbio!"
(da Il dubbio di Luciano De Crescenzo)

si è corretto ma vorrei che nel path tra il nid e la pagina video (scheda/5/questo-titolo/video) se un utente va all'indirizzo sbagliato scheda/5/questo-titolo-doppio/video non gli venga restituito il contenuto perchè la stringa non è quella del nodo ma venga fuori un messaggio di errore.

in partica la pagina deve essere accessibile solo per scheda/5/questo-titolo/video

Potresti aggiungere alle "selection rules" una regola php dove fai il controllo a "mano".

Se non ricordo male ti troverai un array $contexts (o simile) popolato con tutti i dati necessari per fare il controllo. Se la stringa corrisponede fai un return TRUE e il display verrà selezionato, altrimenti return FALSE e il display non verrà selezionato.

robertom wrote:
Potresti aggiungere alle "selection rules" una regola php dove fai il controllo a "mano".

Se non ricordo male ti troverai un array $contexts (o simile) popolato con tutti i dati necessari per fare il controllo. Se la stringa corrisponede fai un return TRUE e il display verrà selezionato, altrimenti return FALSE e il display non verrà selezionato.


avevo pensato ad una cosa del genere, solo che con varie prove non mi tornava niente, sempre errore. con php me la cavo a livello molto base, non è che sapresti aiutarmi?

avevo pensato ad una cosa del genere, solo che con varie prove non mi tornava niente, sempre errore. con php me la cavo a livello molto base, non è che sapresti aiutarmi?

Senza vedere effettivamente di cosa si tratta è un po' difficile darti indicazioni precise.

Quello che ti posso consigliare, se già non l'hai fatto, è di installare il modulo devel, creare la nuova regola php e per ora inserirci soltanto:

krumo($contexts);
return TRUE;

appena andrai su quella pagina potrai ispezionare il contenuto dell'array per cercare di vedere come proseguire.

Ti consiglio di installare la versione dev di devel perché, se non sbaglio, soltanto lì è disponibile la possibilità di fare doppio click sulla variabile desiderata per poi poter fare il copia e incolla... (più difficile a dirsi che a farsi)

ad esempio io ho un argomento di tipo node che ha un fiel_provincia di cui mi interessa il tid... facendo doppio click sul tid in questione mi compare una stringa così fatta:

$...['argument_entity_id:node_1']->data->field_provincia['und'][0]['tid']

il $... iniziale lo sostituisco con la variabile su cui ho richiamato il krumo, e il tutto lo assegno ad una variabile $tid (tanto per fare un esempio):

$tid = $contexts['argument_entity_id:node_1']->data->field_provincia['und'][0]['tid'];

a seconda di cosa stai cercando di fare, ti potrebbe tornare utile anche la funzione drupal_get_path_alias

semplicemente vorrei che la pagina che 'attacco' al nodo sia visualizzabile con lo stesso path del nodo e non che nella stringa possa essere scritta qualunque cosa, perchè se google incappa nell'errore poi lo considera come contenuto duplicato.

semplicemente vorrei che la pagina che 'attacco' al nodo sia visualizzabile con lo stesso path del nodo e non che nella stringa possa essere scritta qualunque cosa, perchè se google incappa nell'errore poi lo considera come contenuto duplicato.

Il problema è che "semplicemente" non si hanno a disposizione i dati necessari per aiutarti.

Stiamo parlando di Drupal 6 o 7?

Io ho un node che si chiama scheda/id/titolo

questo significa che hai un path alias automatico che ti crea l'url in quel modo?

Forse ti conviene aspettare qualcuno con più esperienza... però un'idea te la butto la.

(parlo di drupal 7 perché conosco soltanto questo)

Se "scheda/id/titolo" è un alias di "node/%node"...

installerei il modulo page manager,
attiverei la pagina node_view,
creerei 3 custom page con i path in questo modo:
node/%node/video
node/%node/news
node/%node/altro
e installerei il modulo Sub-pathauto

le selection rules delle tre pagine aggiuntive "attiveranno" i display soltanto per i content type giusti...

si sono tutti path creati con pathauto, e dispongo di drupal 6 per cui non posso utilizzare Sub-pathauto .

In questo caso puoi provare con Extended path aliases

non funziona... le sto provando tutte ma non riesco...
esempio:

$node = node_load(arg(1));
$alias = drupal_get_path_alias($_GET['q']).'/foto';
$alias2 = $_SERVER['REQUEST_URI'];
$path = $node->path.'/foto';

if ( $alias2 == $path ){
return TRUE;
}

return FALSE;

Per chi dovesse trovarsi nella mia situazione consiglio il modulo Extended path aliases che è servito moltissimo.