지나치게 글 작성자에게 제한을 하는 것은 작성자에게 좋은 경험이 될 수 없지만 때로는 운영상 꼭 금지해야 하는 것들이 있을 수 있습니다. 그중 금지해야 할 것들을 작성자가 스스로 하지 않는 것을 기대하고 또 발견이 되었을때 규칙에 위반사항을 고지하며 하는 행위는 회원과 운영자간 마찰이 생기기 쉬운 방법입니다.
그래서 운영자 입장에서는 금지해야 할 것들은 기계적으로 가능하지 않도록 해주는 것이 좋습니다.
그런 방법 중 하나가 금칙어를 라이믹스의 스팸필터에 등록을 해서 해당 키워드가 문서에 포함되면 글이 등록이 되지 않도록 해주는 것 입니다.
그런데 문제는 작성자로부터 입력 받는 부분이 제목,내용 뿐 아니라 확장변수에 입력을 받아야 하는 경우가 있습니다.
예를 들면 구매정보에 관한 글을 작성하도록 하는데 해당 구매처의 URL을 공유할 수 있도록 하는 경우입니다.
그런데 특정 URL을 금지해야 할 경우가 사이트에 따라서는 있을 수 있습니다. 이런 경우 스팸필터에 의존할 수 없습니다. 확장변수를 체크하지 않기 때문인데요.
저도 마침 이부분이 필요해서 기존에 금칙어를 다루는 애드온에 확장변수 부분을 추가해 주었습니다.
물론 제가 금칙어 등록을 방지하는 애드온을 만들어 배포하는 것이 아니고 또 제가 작업한 부분이 기존 사용중인 애드온에 확장변수 정도 추가한 것이라 이 글에서 방법을 구체적으로 알려드리긴 어려울 것입니다. 하지만 대략 이런 문제가 있고 해결이 가능하다는 취지의 글을 작성하고 있습니다.
보통은 글 작성후 등록버튼을 누르면 글이 DB에 입력되기 직전 글 제목,내용에 금칙어가 포함되어있는지 확인후 있으면 메시지를 띄우고 중지 시키는 애드온을 많이 사용합니다.
이경우
Context::get('title');
Context::get('content');
이렇게 제목,내용을 가져와서 정규식으로 미리 지정한 금칙어가 있는지 확인하는 과정을 거칩니다.
그래서 저는 확장변수 첫번째,두번째 까지도 똑같이 정규식으로 금칙어를 확인하는 작업을 하도록 코드를 똑같이 작성해 주었습니다.
Context::get('extra_vars1');
Context::get('extra_vars2');
기존에 제목,내용을 확인해서 금칙어가 있다면 중지시키고 메시지를 반환하는 코드에 똑같이 확장변수 부분만 대입해서 코드를 똑같이 작성해 주면 되니 복붙 수준이죠.
활용할 수 있는 부분은 개인이 수익을 얻기 위한 링크를 금칙어로 등록을 시키면 확장변수,제목,내용,댓글 어디에도 작성할 수가 없게 되는 것이죠.
내장된 스팸 필터가 아닌 금칙어를 다루는 애드온은 혹시 어떤것인지 정보 알 수 있을까요?