Elxis CMS Forum
Ελληνικό Forum => Πρόσθετα => Topic started by: thanasis on June 08, 2017, 11:10:55
-
Καλησπέρα,
Προσπαθώ να φτιάξω 2 plugin και να τα χρησιμοποιήσω ταυτόχρονα για να κάνω το εξής:
{plugin1}mla-mpla1{/plugin1} // να ισχύει if (eFactory::getElxis()->user()->gid == 7) {}
{plugin2}mla-mpla2{/plugin2} // να ισχύει if (eFactory::getElxis()->user()->gid <> 7) {}
Κάτι κάνω λάθος γιατί το καθένα μόνο του τρέχει κανονικά ενώ όταν μπούν και τα δύο δεν εμφανίζεται τίποτα.
Από ότι καταλαβαίνω το ένα αναιρεί το άλλο μετά το ELSE ?
public function process(&$row, $published, $params) {
eFactory::getElxis()->user()->gid;
if (eFactory::getElxis()->user()->gid == 7) {
$regex = "#{plugin1}(.*?){/plugin1}#s";
if (!$published) {
$row->text = preg_replace($regex, '', $row->text);
return true;
}
preg_match_all($regex, $row->text, $matches, PREG_PATTERN_ORDER);
if (!$matches) { return true; }
foreach ($matches[0] as $i => $match) {
$contents = $matches[1][$i];
$html = $contents;
$row->text = preg_replace("#".$match."#", $html, $row->text);
}
return true;
} else {
$row->text = preg_replace($regex, '', $row->text);
return;
}
}
public function process(&$row, $published, $params) {
eFactory::getElxis()->user()->gid;
if (eFactory::getElxis()->user()->gid <> 7) {
$regex = "#{plugin2}(.*?){/plugin2}#s";
if (!$published) {
$row->text = preg_replace($regex, '', $row->text);
return true;
}
preg_match_all($regex, $row->text, $matches, PREG_PATTERN_ORDER);
if (!$matches) { return true; }
foreach ($matches[0] as $i => $match) {
$contents = $matches[1][$i];
$html = $contents;
$row->text = preg_replace("#".$match."#", $html, $row->text);
}
return true;
} else {
$row->text = preg_replace($regex, '', $row->text);
return;
}
}
-
Αν ο στόχος σου είναι να εμφανίζεται ένα plugin μόνο σε επισκέπτες τότε η 1η περίπτωση δηλ. $elxis->user()->gid == 7 νομίζω ότι αρκεί.
-
Καλησπέρα,
Στόχος είναι εναλλαγή διαφορετικού περιεχομένου μεταξύ επισκεπτών και χρηστών.
-
Παρόμοιο έχω κάνει στο παρελθόν σε ένα site που ήθελα να δείχνω περιεχόμενο σε συγκεκριμένη θέση module μόνο σε επισκέπτες, με το όρισμα αυτό και μόνο δηλ. if ($elxis->user()->gid == 7) { do something } και το περιεχόμενο σε επίπεδο πρόσβασης για άλλες ομάδες π.χ. χρήστες, το όριζα από τις παραμέτρους του εκάστοτε module.
Παράδειγμα εμφάνισης module στη πρώτη σελίδα μόνο για επισκέπτες
if (eFactory::getURI()->getUriString() == eFactory::getElxis()->getConfig('DEFAULT_ROUTE')) { // show a module in frontpage only to visitors
if ($elxis->user()->gid == 7) { $eDoc->modules('user5'); }
}
-
Όπως το σκέφτομαι νομίζω ότι μόνο με plugin μπορώ να το κάνω.
Θέλω ουσιαστικά να εναλλάσω τιμές πώλησης σε πολλά άρθρα.
Επομένως μέσα στο κάθε άρθρο πρέπει να υπάρχει μια τιμή Α που θα βλέπουν οι επισκέπτες και όταν μπαίνουν οι χρήστες να μην εμφανίζεται η τιμή Α αλλά μια άλλη τιμή Β.
-
Μπορείς να δοκιμάσεις, αν θες εναλλακτικά, αυτό που σου ανέφερα, βάζοντας την τιμή Α (για επισκέπτες) σε ένα module π.χ. user5 και την τιμή Β (για χρήστες) σε άλλο module π.χ. user4 τα οποία να εμφανίζονται παραπλεύρως των άρθρων και επέλεξε σε ποια κατηγορία άρθρων θα εμφανίζεται το καθένα.
-
Μπορείς να αναπτύξεις 1 plugin της μορφής {dprices}u_5,v_10{/dprices}
Η τιμή για τους χρήστες (u: users) είναι 5 και η αντίστοιχη για τους επισκέπτες
(v: visitors) θα είναι 10.