Tartalom automatikus archiválása / feliratozása

robipecs képe

Sziasztok!

Egy új oldalon lenne egy megoldandó problémám. Álláspályázatoknak van egy tartalomtípus az oldalon, ahová azokat rögzíteni fogjuk.
Mivel ez jelentős mennyiség, így kézzel nem lehet mindre ráírni, hogy már lejárt és ne jelentkezzenek, ezt kellene valahogy automaziálni. A tartalomtípusban van egy dátummező, (beadási határidő) ha az eltelik akkor kellene megjelölni jól látható módon a tartalmat.
Ezt a nézetekben sikerül is elkülöníteni, viszont ha visszakattint valaki az eredeti tartalomra, akkor ott ugye a felirat nem látszik.

Tehát - szerintem - valami olyasmi kellene, hogy egy blokkot létrehozni ami a tartalomban (a tetején) megjelenik, és ezt a feliratot tartalmazza,hogy "ne jelentkezz". Ezt viszont nem sikerül egyelőre megfogni, mert csak a dátummező értéke különböztetni meg az archív és az aktív hirdetést.

Az időzítés azért nem jó megoldás, mert az is feltétel, hogy kereshető maradjon.

Arra is gondoltam, hogy nézetben létrehozom teljes tartalommal őket és azt linkelem be, de onnan is tovább tudnak kattintani az eredetire, s ha pl. google-ből jön akkor nem is látja a nézetet.

Ötlet?

Drupal verzió: 
Fórum: 
akosms képe

Szia,

én felvennék egy logikai mezőt az álláspályázat típushoz, amit rules-szal automatikusan át tudsz állítani x idő elteltével.

Ezzel már utána a megjelenítésnél játszhatsz is, például, a jelentkezem gomb csak addig jelenik meg, amíg le nem jár, stb.

0
0
robipecs képe

Heló,

Köszönöm a segítséget.

Azt még nem írtam, hogy kb. 3 hete ismerkedem csak a Drupalal, és a rules lényegét még sajnos nem értem. Mármint azt, hogy hogyan kell beállítani valamit benne.
Ha röviden leírható esetleg le tudnád írni, hogy mit állítsak be a rulesban?

"Jelentkezem"-gombom nics, csak egy feliratot kéne kitenni. A logikai mezőt felvettem, de a rules még nagyon kínai... :(

0
0
akosms képe

Lépések:

1. Hozz létre egy componentet (admin/config/workflow/rules/components). Beállításai:
Component plugin: Rule
Variables: Content - itt adj nevet neki - pl. Álláspályzázat
Conditions: Entity has field -> Data selector: Content (Álláspályázat), Field Value: A logikai mező amit felvettél
Action: Set data value -> Data selector content:logikai_mező -> Value: amire szeretnéd állítani (pl:lejárt)

2. Készítsd el a rules-t (admin/config/workflow/rules)
React on event - ekkor fogja létrehozni az időzítést, lehet új tartalom mentése után, vagy frissítés után.
Beállításai:
Events - itt szerepel amit megadtál (pl: új tartalom mentése után), itt felvehetsz további eseményeket)
Conditions - itt most nem kell
Action: Schedule component evaluation -> Component Value: Amit az első lépésben létrehoztál.
Scheduled evalution date (mikor következzen be jelen esetben a logikai mező átállítása) - pl: node:changed add offset 30 days (ekkor a módosítás után 30 nappal fog váltani)
Álláspályzázat (itt a variables fog szerepelni)
Data selector: node

Elvileg ennyi. Tesztelésnél a cron-t mindig le kell futtatni. Itt találod, hogy mikor fognak lefutni az egyes szabályok (admin/config/workflow/rules/schedule)

0
0
robipecs képe

Köszönöm,

azt hiszem értem is. :)

Viszont ha jól értettem amit írtál ezen a módon csak bizonyos idő után - pl. az említett 30 nap - tudom végrehajtatni. A gond az, hogy a meghirdetési idők 3 (munka)naptól 30 naptári napig változhatnak, többféle leosztásban. Tehát valamiképp a benyújtási határidőként megadott értékhez kellene igazítani, de így azt nem lehet ha jól figyeltem.

0
0
akosms képe

Azt is meg lehet oldani.

1.Létrehozol egy lejárati dátum mezőt és manuálisan töltöd ki amikor felviszed az álláspályázatot.

2. A lejárati dátum mellett egy lista mezőt létrehozol, amiben beállítod a lehetőségeket (3 nap, 5 nap, ... 30 nap) és erre is beállítasz egy szabályt. Pl. tartalom mentése előtt a jelenlegi dátumhoz adja hozzá a kiválasztott értéket.

Mindkét esetben az előzőekben beállított szabálynál az időzítés dátuma az itt beállított dátum lesz.

0
0